신경망 학습(Neural network learning)
1. 신경망 학습
학습이란 데이터로보터 가중치의 최적값을 자동으로 획득하는 것을 뜻한다.
이 학습의 지표로 손실함수를 이용한다.
이 손실함수를 최대한 작게 만드는 가중치를 찾아야 한다.
2. 학습에 필요한 데이터
학습에 필요한 데이터로는 훈련용 데이터(traning data)와 시험 데이터(test data)로 나눠서 학습과 시험을 수행한다.
처음 보는 데이터로 문제를 풀어내는 것을 범용 능력이라 하는데 이를 위해 다양한 데이터로 학습이 진행되어야 한다.
한 데이터셋에 지나치게 최적화된 상태를 오버피팅(Overfitting)이라 한다.
3. 손실함수(Loss function)
3.1 오차제곱합(sum of squares for error)
오차제곱합은 다음과 같이 정의된다.
$$E = \frac{1} {2} \sum_{k}{(y_k - t_k)}^2$$
위에서 $y_k$는 신경망의 출력, $t_k$는 정답 레이블, $k$는 데이터의 차원 수를 나타낸다.
이를 python으로 구현해보았다.
>>> 0.09750000000000003
>>> 0.5975
손실함수가 작으면 작을수록 더 좋은 추정이라고 할수 있다.
오차제곱합 값이 첫번째 데이터가 더 작으므로 첫번째가 더 정확한 결과이다.
3.2 교차 엔트로피 오차(cross entropy error)
또다른 손실함수인 교차 엔트로피 오차의 식은 다음과 같다.
$$E = -\sum_{k}t_k\log y_k$$
위 수식에서 $t_k$가 1일때 $y_k$가 크면 영향이 크고 작으면 영향이 작다.
반면 $t_k$가 0인경우 손실함수값에 영향을 주지 않는다.
이를 python으로 구현해보았다.
>>> 0.510825457099338
>>> 2.302584092994546
위에서 delta는 y가 0일때 로그값이 무한대가 되는것을 방지하기 위해 아주 작은 수를 더해준 것이다.
$N$개의 데이터에 대한 손실함수 식이다.
$$E = -\frac{1} {N}\sum_{n}\sum_{k}t_{nk}\log y_{nk}$$
Comments
Post a Comment