• 09-1. ํ™œ์„ฑํ™” ํ•จ์ˆ˜(Activation function)

    2020. 3. 7.

    by. ํ•ด๋Š”์„ 

    ๋ณธ ๊ธ€์€ '๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๋”ฅ๋Ÿฌ๋‹ ์‹œ์ฆŒ 2'์™€ 'pytorch๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋”ฅ ๋Ÿฌ๋‹ ์ž…๋ฌธ'์„ ๋ณด๋ฉฐ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

    ํ•„์ž์˜ ์˜๊ฒฌ์ด ์„ž์—ฌ ๋“ค์–ด๊ฐ€ ๋ถ€์ •ํ™•ํ•œ ๋‚ด์šฉ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


     ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ž€ ์–ด๋–ค ์‹ ํ˜ธ๋ฅผ ๋ฐ›์•„๋“ค์—ฌ, ์ ์ ˆํ•œ ์ฒ˜๋ฆฌ(์ˆ˜ํ•™์  ๋ณ€ํ™˜)๋ฅผ ์ˆ˜ํ–‰ ํ•œ ๋’ค ๋‚ด๋ณด๋‚ด๋Š” ํ•จ์ˆ˜๋‹ค. ์ € ์ ์ ˆํ•œ ์ฒ˜๋ฆฌ ๋ถ€๋ถ„์—์„œ ์ถœ๋ ฅ๋  ์‹ ํ˜ธ๊ฐ€ ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ํ™œ์„ฑํ™” ๋˜์„œ ์‚ฌ์šฉ์ด ๋ ์ง€ ์•ˆ๋ ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ๋น„์„ ํ˜•ํ•จ์ˆ˜๊ฐ€ ์ฃผ๋กœ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์„ ํ˜• ํ•จ์ˆ˜๋Š”, ์•„๋ฌด๋ฆฌ ์ธต์„ ์Œ“์•„๋„ y=ax๋ผ๋Š” ์‹ ํ•˜๋‚˜๋กœ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ธต์„ ๊นŠ๊ฒŒ ๋‚ด์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด ๋น„์„ ํ˜• ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

     

    0. Problem of Sigmoid

     ์ง€๊ธˆ๊นŒ์ง€ ์“ด ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋กœ๋Š” ์‹œ๊ทธ๋ชจ์ด๋“œ๊ฐ€ ์žˆ๋‹ค. ์‹œ๊ทธ๋ชจ์ด๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋น„์šฉํ•จ์ˆ˜์˜ ์˜ค์ฐจ๋ฅผ ๊ตฌํ•˜๋‹ค ๋ณด๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. ๋ฏธ๋ถ„์„ ํ•ด์„œ gradient๋ฅผ ๊ตฌํ•  ๋•Œ, ์ผ์ • ๋ถ€๋ถ„์˜ ๊ฐ’๋งŒ ์ž˜ ๋‚˜์˜ค๊ณ  ์–‘ ๋์ด 0๊ณผ 1๋กœ ์ˆ˜๋ ดํ•˜๋‹ค ๋ณด๋‹ˆ, ๊ธฐ์šธ๊ธฐ๋Š” 0์— ๊ฐ€๊นŒ์›Œ์ง„๋‹ค.

     ์ด๋ ‡๊ฒŒ ๋˜๋ฉด backpropagation์„ ์ˆ˜ํ–‰ํ•  ๋•Œ, ๋’ค์—์„œ ์•ž์œผ๋กœ ์˜ค๋ฉด์„œ ์ ์  loss๊ฐ€ ์†Œ๋ฉธํ•œ๋‹ค. ์ด ํ˜„์ƒ์„ ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค, Vanishing gradient๋ผ๊ณ  ํ•˜๋Š”๋ฐ ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค์ด ๋ฐœ์ƒํ•˜๋ฉด ์ž๊พธ ๊ธฐ์šธ๊ธฐ์— 0์— ๊ฐ€๊นŒ์šด ๊ธฐ์šธ๊ธฐ๊ฐ€ ๊ณฑํ•ด์ ธ์„œ ์ˆซ์ž๊ฐ€ ๋„ˆ๋ฌด ์ž‘์•„์ ธ์„œ ์•ž๋‹จ์€ ํ•˜๋‚˜๋„ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

     

     

    1. ํ•˜์ดํผ๋ณผ๋ฆญํƒ„์  ํŠธ ํ•จ์ˆ˜(Hyperbolic tangent function)

     tanhํ•จ์ˆ˜๋ผ๊ณ ๋„ ํ•œ๋‹ค. ์Œ๊ณก์„  ํ•จ์ˆ˜์ค‘ ํ•˜๋‚˜์ด๋ฉฐ ์ž…๋ ฅ ๊ฐ’์„ -1๊ณผ 1 ์‚ฌ์ด์˜ ๊ฐ’์œผ๋กœ ๋Œ๋ ค์ค€๋‹ค.

    ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜์™€ ๋ชจ์–‘์ด ๋น„์Šทํ•œ ๋“ฏ ์‹ถ์ง€๋งŒ, tanhํ•จ์ˆ˜๋Š” 0์„ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๊ณ  ์žˆ์–ด์„œ ๋ฐ˜ํ™˜๊ฐ’์˜ ๋ณ€ํ™”ํญ์ด ๋” ํฌ๋‹ค. ๊ทธ๋ž˜์„œ ์‹œ๊ทธ๋ชจ์ด๋“œ ๋ณด๋‹ค๋Š” ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ์ฆ์ƒ์ด ์ ์€ ํŽธ์ด๋‹ค. 

     

    2. ReLU ํ•จ์ˆ˜

    ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž…๋ ฅ ๊ฐ’์ด 0๋ณด๋‹ค ํฌ๋ฉด ๊ทธ๋Œ€๋กœ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๊ณ , 0๋ณด๋‹ค ์ž‘์œผ๋ฉด 0์„ ๋ฆฌํ„ดํ•œ๋‹ค. ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

     ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—๋„ ๋ฌธ์ œ์ ์€ ์žˆ๋Š”๋ฐ, ์ž…๋ ฅ๊ฐ’์ด ์Œ์ˆ˜๋ฉด ๊ธฐ์šธ๊ธฐ๋„ 0์ด๋ผ๋Š” ์‚ฌ์‹ค์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋‰ด๋Ÿฐ์€ ๋‹ค์‹œ ํšŒ์ƒํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์–ด๋ ต๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ dying ReLU๋ผ๊ณ  ํ•œ๋‹ค.

     

    3. Leaky ReLU

    Dying ReLU์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ReLUํ•จ์ˆ˜์˜ ์ž๋งคํ’ˆ! ๋ฆฌํ‚ค ๋ ๋ฃจ์—์„œ๋Š” ์Œ์ˆ˜๊ฐ’์ด 0์ด ์•„๋‹ˆ๋ผ, 0์— ๊ฐ€๊นŒ์šด ๋งค์šฐ ์ž‘์€ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋˜์–ด์žˆ๋‹ค. ์ฆ‰, ๊ธฐ์šธ๊ธฐ๊ฐ€ 0์ด ๋˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค. ์‹์—์„œ a๋Š” ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋กœ Leaky('์ƒˆ๋Š”') ์ •๋„๋ฅผ ๊ฒฐ์ •ํ•˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” 0.01์˜ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” '์ƒˆ๋Š” ์ •๋„'๋ผ๋Š” ๊ฒƒ์€ ์ž…๋ ฅ๊ฐ’์˜ ์Œ์ˆ˜์ผ ๋•Œ์˜ ๊ธฐ์šธ๊ธฐ๋ฅผ ๋น„์œ ํ•œ๋‹ค.

     

     

    4. code

    import torch.nn
    
    torch.nn.sigmoid(x)
    torch.nn.tanh(x)
    torch.nn.relu(x)
    torch.nn.leaky_relu(x, 0.01)

    torch.nn ํŒจํ‚ค์ง€์— ๋‹ค ๊ตฌํ˜„์ด ๋˜์–ด์žˆ์–ด์„œ, ๊ฐ€์ ธ๋‹ค์„œ ์“ฐ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

     


    <Reference>

    https://deeplearningzerotoall.github.io/season2/lec_pytorch.html

    https://wikidocs.net/60683

    https://reniew.github.io/12/

    '๐Ÿ“šSTUDY > ๐Ÿ”ฅPytorch ML&DL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    09-3. Overfitting์„ ๋ง‰๋Š” ๋ฐฉ๋ฒ•  (0) 2020.03.10
    09-2. Weight initialization  (0) 2020.03.10
    08. Perceptron  (0) 2020.03.03
    07. Tips and MNIST data  (0) 2020.03.01
    06. softmax classification  (0) 2020.02.28

    ๋Œ“๊ธ€