딥러닝 신경망 (델타규칙, SGD, 배치)
[Chapter2:신경망]
머신러닝의 모델로 많이 쓰는 신경망(neural network)
최근들어 딥러닝이 조명받으며, 신경망의 중요도가 커졌다.
머신러닝 모델은 다양하게 구현되는데 신경망이 그중 하나다.
신경망에서는 학습데이터에서 모델(신경망)을 찾아내는 기법을 '학습규칙' 이라고한다.
신경망은 노드를 연결해서 만든 네트워크이다.
뇌의 연결관계를 신경망은 노드들의 연결 가중치로 흉내낸다.
[바이어스]
가중치와 함께 신경망이 정보를 저장하는데 관여하는 변수
정보는 가중치와 바이어스의 형태로 바뀌어서 저장된다.
외부에서 노드로 들어오는 신호는 가중치가 곱해져서 전달된다.
노드에서 모두 더하는데 이를 가중합이라고한다.
v=wx+b
마지막을 ㅗ노드는 가중합을 활성함수에 입력해 얻은 값을 외부로 출력한다.
활성함수에 의해서 노드의 동작 특성이 결정된다.
[다층신경망]
입력층-은닉층(들)-출력층
은닉층이 2개이상이면 심층 신경망, 1개면 얕은신경망
신경망은 간단한 계산만 하는 노드들을 계층 구조로 연결한 네트워크에 불과하다.
은닉노드의 활성함수로 선형함수(y=x 등)를 사용하면 은닉층을 추가한 효과가 없어진다.
다만 출력 노드의 활성함수로 선형함수를 쓰는것은 된다.
[2.4 신경망의 지도학습]
1. 신경망의 가중치를 적당한 값으로 초기화
2. {입력,정답} 에서 입력을 신경망에 입력 해 출력값을 얻는다. 이 출력을 정답과 비교해서 오차를 계산
3.오차가 줄어들도록 신경망의 가중치를 조절..
4.2~3반복
[2.5 단층신경망의 학습: 델타규칙]
학습규칙:주어진 정보에 맞춰 가중치를 체계적으로 변경하는 방법
델타규직은 단층신경망의 대표적학습규칙이다.
어떤 입력 노드가 출력 노드의 오차에 기여했다면, 두 노드의 연결 가중치는 해당 입력 노드의 출력과 출력 노드의 오차에 비례해 조절한다.
[델타 규칙]
1. 신경망의 가중치를 적당한 값으로 초기화
2. 학습데이터(입력,정답)에서 입력을 신경망에 입력해 출력값(y)를 얻는다. 이 출력값과 해당 입력의 정답(d)를 비교해 오차를 계산한다.
3.델타 규칙에 따라 가중치의 갱신값을 계산한다.
4.신경망의 가중치를 조절한다.
5.전체 학습 데이터에 관해서 단계 2~4를 반복한다
6. 신경망의 출력오차가 줄때까지 2~5반복
6은 전체 학습 데이터를 반복해서 재학습시킨다.
[epoch]
2~5를 걸치며 전체 학습 데이터를 한번씩 모두 학습시킨 횟수를 말한다.
[2.6 델타규칙의 일반형태]
는 오차
는 도함수
[시그모이드함수]
활성함수로 많이사용하는 함수다.
출력이 0~1사이로 제한된다.
시그모이드함수에 대한 델타규칙 식 참고..
[2.7 SGD,배치,미니 배치]
신경망의 지도학습에서 가중치의 갱신값을 계산하는 방식은 크게 3가지가있다.
[2.7.1 Stochastic 경사 하강법]
하나의 학습 데이터마다 오차를 계산해 신경망의 가중치를 바로 조절하는 방식.
(SGD)
학습데이터가 n개면 가중치가 n번 갱신된다.
들쑥날쑥하면서 학습된다.
[2.7.2 배치]
모든 학습 데이터의 오차에 관해 가중치 갱신값을 계산한 다음에 이들의 평균값으로 가중치를 한 번 갱신하는 기법.
전체 학습데이터를 다 쓰고도 가중치는 1번만 갱신.
학습데이터가 많으면 시간이 오래걸린다.
[2.7.3 미니배치]
SGD방식과 배치방식을 섞어놓은 개념.
전체 학습데이터에서 일부 데이터만 골라서 배치 방식으로 학습시킨다.
SGD,배치 두개의 장점을 확보가능. 대량의 학습데이터에서 사용한다.
식참고...
하나하나 학습하는 SGD방식이 배치방식보다 구현이 간단하다. (평균내는 과정이없기에)
[SGD/배치 방식 실습]
코드 참고.
[SGD와 배치 비교]
SGD방식이 배치방식보다 학습오차가 빨리준다. SGD방식의 학습속도가 더 빠르다.
[단층->다층 구조로 발전한 이유]
직선으로 영역을 분리할 수 없을때!
즉 선형 분리 불가능 문제가 발생하게된다.
결론만 말하면 단층 신경망은 선형 분리문제만 해결할 수 있다..
이러한 한계 극복을 위해서 신경망의 계층을 늘려 다층 구조로 만들게된다.
신경망에서 지도학습은 신경망의 출력과 주어진 정답의 차이를 줄이도록 연결 가중치를 변경하는 과정을 의미한다.
'AI > 딥러닝' 카테고리의 다른 글
코랩에서 넘파이(numpy)쓰기 (0) | 2020.06.12 |
---|---|
구글 코랩 사용법 : 코랩이 뭐냐 도대체? (google colab 사용법) (0) | 2020.06.11 |
딥러닝과 머신러닝의 차이점? (0) | 2020.06.11 |
딥러닝 용어 몇 가지 (모델, 모델 파라미터, 손실함수, 최적화알고리즘) (0) | 2020.06.11 |
01 - 머신러닝과 딥러닝 기초학습 (0) | 2018.05.14 |