Hyeon-II
로그인
Hyeon-II
로그인
Multi-Layer Perceptron Training
이세현
·
2024년 10월 18일
팔로우
1
Artificial Intelligence
1
Generalized Multi-Layer Perceptron
여러 개의 데이터가 동시에 입력으로 들어오는 경우
위의 경우
X
X
X
는
[
8
×
784
]
[8\times784]
[
8
×
7
8
4
]
Batch size가
N
N
N
일 때
[
N
×
784
]
[N\times784]
[
N
×
7
8
4
]
기존에
Z
[
1
×
m
]
=
X
[
1
×
n
]
×
W
[
n
×
m
]
+
B
[
1
×
m
]
Z[1×m]=X[1×n]×W[n×m]+B[1\times m]
Z
[
1
×
m
]
=
X
[
1
×
n
]
×
W
[
n
×
m
]
+
B
[
1
×
m
]
인 것과 달리
Z
[
N
×
m
]
=
X
[
N
×
n
]
×
W
[
n
×
m
]
+
B
[
1
×
m
]
Z[N\times m]=X[N\times n]×W[n\times m]+B[1\times m]
Z
[
N
×
m
]
=
X
[
N
×
n
]
×
W
[
n
×
m
]
+
B
[
1
×
m
]
Bias의 경우 broadcasting으로 연산이 진행된다.
Mini-Batch 학습
Softmax는 각 데이터 별로 개별적으로 수행된다.
Corss Entropy의 경우에도 각 데이터 별로 개별적으로 수행된다.
최종 손실함수
E
E
E
는 개별 데이터의 손실함수의 평균으로 계산된다.
Mini-Batch Training
고차원 데이터는 전체 데이터셋을 한번에 다 처리하기 어렵기 때문에
Mini-Batch Training
이 필요하다.
Batch Size
배치 크기를 1로 설정할 경우 Gradient가 너무 튀는 문제가 있다.
배치 크기를 최대로 설정하면 Gradient가 뭉개지는 문제가 있다.
적절한 배치 크기를 Hyperparameter로 설정할 필요가 있다.
일반적으로 8, 16, 32, 64 등 2의 거듭제곱 수를 사용한다.
Epoch
: 전체 데이터셋을 한 번씩 학습하는 것
Iteration
: 가중치 업데이트를 한 번 수행하는 것
Batch size
: 한 iteration을 수행하는 데 사용하는 학습 데이터 개수
Training Data Split
주어진 데이터를 모두 학습에 사용하면 평가에 사용할 데이터가 없다. 따라서 정확도가 높게 나올 수밖에 없다.
Training set
(70%): 모델을 학습시키는 데 사용
Validation set
(15%): Hyperparameter를 결정하는 데 사용
Test set
(15%): 최종 모델의 성능을 평가하는 데 사용
MNIST eample
60,000개의 training set과 10,000개의 test set을 포함한다.
Batch size가 32일 때 epoch의 총 iteration 수는 60000 ÷ 32 = 1875
Batch size가 64일 때 epoch의 총 iteration 수는 60000 ÷ 64 = 937.5 (983)
Optimizer
Limitation of SGD
비등방성 함수에 대해 수렴이 느리다.
각 위치에서의 기울기가 가리키는 지점이 하나가 아니라 여러개인 함수
지그재그 방향으로 학습이 수행된다.
Saddle Point에서 학습이 종료될 수 있다.
어느 축에서 보면 극대값이지만 다른 축에서는 극소값이 되는 지점
고차원 공간에 많이 존재한다.
SGD + Momentum
현재 step의 gradient가 아닌 속도 방향으로 가중치를 업데이트한다.
이후 속도 방향을 업데이트한다.
SGD
SGD + Momentum
W
=
W
−
ρ
∂
E
∂
W
W=W-\rho\frac{\partial E}{\partial W}
W
=
W
−
ρ
∂
W
∂
E
W
=
W
−
ρ
V
,
V
=
α
V
+
∂
E
∂
W
W=W-\rho V, V=\alpha V+\frac{\partial E}{\partial W}
W
=
W
−
ρ
V
,
V
=
α
V
+
∂
W
∂
E
W
W
W
: 가중치
V
V
V
: 속도
ρ
\rho
ρ
: 학습률
α
\alpha
α
: 마찰 계수
SGD의 단점
학습 경로가 smooth 해지는 효과
관성으로 인해 saddle point 탈출 가능
Adaptive Learning Rate
기존 SGD는 모든 가중치에 대해 동일한 학습률을 사용한다.
가중치
x
x
x
의 학습률을 크게, 가중치
y
y
y
의 학습률은 작게 설정하면 SGD의 단점을 극복할 수 있다.
현재 시점으로 최근에 update 폭이 컸던 가중치는 작은 학습률을 할당하고 update 폭이 작았던 가중치는 큰 학습률을 할당한다.
W
=
W
−
ρ
1
H
⊙
∂
E
∂
W
W=W-\rho\frac{1}{\sqrt{H}}\odot\frac{\partial E}{\partial W}
W
=
W
−
ρ
H
1
⊙
∂
W
∂
E
최근 가중치 update 폭에 반비례하게 가중치를 업데이트한다.
누적 Gradient
H
=
β
H
+
(
1
−
β
)
∂
E
∂
W
⊙
∂
E
∂
W
H=\beta H+(1-\beta)\frac{\partial E}{\partial W}\odot\frac{\partial E}{\partial W}
H
=
β
H
+
(
1
−
β
)
∂
W
∂
E
⊙
∂
W
∂
E
가중치별로 Gradient의 제곱(크기)를 업데이트한다.
β
\beta
β
: 감쇄 계수
⊙
\odot
⊙
: 행렬의 원소별 곱
ADAM(Adaptive Moment Estimation)
Momentum + Adaptive Learning RAte
일반적으로 모델을 학습할 때 Adam optimizer를 쓰면 된다.
Momentum, adaptive learning rate 적용하여 가중치 업데이트:
W
=
W
−
ρ
1
H
⊙
V
W=W-\rho\frac{1}{\sqrt{H}}\odot V
W
=
W
−
ρ
H
1
⊙
V
Momentum 업데이트:
V
=
β
1
V
+
∂
E
∂
W
V=\beta_1V+\frac{\partial E}{\partial W}
V
=
β
1
V
+
∂
W
∂
E
Adaptive learning rate 업데이트:
H
=
β
2
H
+
(
1
−
β
2
)
∂
∂
E
∂
W
⊙
∂
E
∂
W
H=\beta_2H+(1-\beta_2)\partial{\partial E}{\partial W}\odot\frac{\partial E}{\partial W}
H
=
β
2
H
+
(
1
−
β
2
)
∂
∂
E
∂
W
⊙
∂
W
∂
E
이세현
Hi, there 👋
팔로우
이전 포스트
Backpropagation
다음 포스트
도요타 케이스
0개의 댓글
댓글 작성
관련 채용 정보