미래연구소 홈페이지: https://futurelab.creatorlink.net/
Softmax
Softmax는 activation함수의 일종이다. Binary classification에서는 Sigmoid라는 함수를 썼다면 multiclass classification에서는 Softmax를 쓴다. Softmax의 공식은 아래와 같다.
\[\sigma {({\mathbf{z}})_i} = \frac{{{e^{{z_i}}}}}{{\sum\limits_{j = 1}^K {{e^{{z_j}}}} }}{\text{ for }}i{\text{ = 1, }}...{\text{ ,}}K{\text{ and }}{\mathbf{z}} = ({z_1},...,{z_K}) \in {\mathbb{R}^K}\]
즉 가중치가 반영된 벡터 z에 exponential을 한 것의 비중이다. 자세히 보면 binary classification에서 쓰이는 sigmoid와 유사한 것을 알 수 있다. Sigmoid도 결국 아래와 같은 꼴이기 때문이다.
\[\frac{1}{{1 + {e^{ - WX}}}} = \frac{{{e^{WX}}}}{{{e^{WX}} + 1}} = \frac{{{e^{{w_1}X - {w_2}X}}}}{{{e^{{w_1}X - {w_2}X}} + 1}} = \frac{{{e^{{w_1}X}}}}{{{e^{{w_1}X}} + {e^{{w_2}X}}}}\]
결국 softmax를 거치게 되면 각 class에대한 확률로 결과가 출력되고 가장 높은 확률을 갖는 클래스가 선택된다. 이를테면 동물 사진이 있고 강아지인지, 고양이인지, 병아리인지, 그 외의 것인지 판별하는 모델에서 (0.9, 0.05, 0.03, 0.02) 로 출력될 수 있고 그 결과 강아지로 판명이 될 것이다.
One-hot encoding
one-hot encoding은 클래스 분류시 분류 항목을 1,0으로 이러우진 벡터로 구성하는 기법이다. 예를 들면 동물 사진을 ('강아지', '고양이', '병아리', '그 외')로 한다고 할때 강아지는 (1 0 0 0) 고양이는 (0 1 0 0) 이런 식으로 만들어 주는 것을 의미한다. 구현 방법은 keras의 to_categorical로 가능하다.
Dropout
dropout은 모델의 overfitting을 방지하기 위한 전략 중 하나로, layer의 노드를 확률적으로 빼놓고 연산을 진행한다. 레이어마다 선별적으로 dropout rate를 설정할 수 있으며 이는 Tensorflow의 keras에서 쉽게 구현이 가능하다. Sequential 모델에서 적용하고자 하는 레이어 아래에 추가하면 된다. 예를들면
1
2
3
4
5
6
7
|
from tensorflow.keras.layers import Dropout
def dropout_model():
model = Sequential()
model.add(Flatten(input_shape=(28,28)))
model.add(Dense(units=64, activation='relu'))
model.add(Dropout(0.3))
|
등으로 구현이 가능하다.
Regularization
Regularization은 overfitting을 방지하기 위한 기법 중 하나로, cost function에 다른 term을 추가해 줘서 실행된다. 어떠한 norm을 추가하느냐에 따라서 L2 regularization과 L1 regularization이 있고, 식으로 보자면 아래와 같다.
\[J(w,b) = \frac{1}{m}\sum\limits_{i = 1}^m {L({{\hat y}^{(i)}},{y^{(i)}}) + \frac{\lambda }{{2m}}\parallel W} \parallel \]
맨 마지막 항이 추가된 항이다. 이 항이 Gradient descent로 들어가면 아래와 같이 식이 진행된다.
\[\begin{gathered}
d{W^{[L]}} = {\text{(from backprop) }} + \frac{\lambda }{m}{W^{[L]}} \hfill \\
{W^{[L]}} = {W^{[L]}} - \alpha \left[ {{\text{(from backprop) }} + \frac{\lambda }{m}{W^{[L]}}} \right] \hfill \\
= \left( {1 - \frac{{\alpha \lambda }}{m}} \right){W^{[L]}} - \alpha {\text{(from backprop)}} \hfill \\
\end{gathered} \]
즉 weight이 줄어들게 되며, 이는 model이 과도하게 복잡해지는 것을 방지해준다.
'Deep Learning' 카테고리의 다른 글
[데이콘]Dataset 받아오기 (1) | 2020.08.26 |
---|---|
CNN(Convolutional Neural Network) (0) | 2020.08.25 |
[데이콘]컴퓨터 비전 학습 경진대회에 참가 결정 (0) | 2020.08.23 |
Normalization, Standardization, Initialization, optimization (1) | 2020.08.18 |
Deep Learning 미래연구소 5주차 수강후기 (0) | 2020.08.02 |
Deep Learning 미래연구소 4주차 수강후기 (0) | 2020.07.26 |
Deep Learning 미래연구소 3주차 수강후기 (0) | 2020.07.23 |
Deep Learning 미래연구소 2주차 수강후기 (0) | 2020.07.19 |