-
๋ณธ ๊ธ์ '๋ชจ๋๋ฅผ ์ํ ๋ฅ๋ฌ๋ ์์ฆ 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
'๐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 ๋๊ธ