본문 바로가기
기계학습/[밑바닥부터 시작하는 딥러닝]

4장 정리 - 신경망 학습

by tryotto 2019. 8. 6.

신경망 학습///


- 학습 : 훈련 데이터로부터 가중치 매개변수 최적값을 자동으로 획득하는 것.

- 손실함수 : 신경망이 학습할 수 있도록 해주는 지표.

-> 손실함수 결괏값을 가장 작게 만드는 가중치 매개변수를 찾아야 함.


- 종류 : 경사법 ....


- 알고리즘의 구분 : 인간의 개입 정도에 따른 구분

    1) 인간 only :  이미지 보기 -> 사람이 생각한 알고리즘 -> 결과

    2) 인간 + 기계 : 

          이미지 보기 -> 사람이 생각한 특징(SIFT, HOG) -> 기계학습(SVM, KNN) -> 결과

    3) 기계 only : 이미지 보기 -> 신경망(딥러닝) -> 결과

            **  "종단간 기계학습" 이라고 불린다


- 기계학습의 데이터 종류 

     1) 훈련 데이터 : 최적의 매개변수를 찾는데에 사용

     2) 시험 데이터 : 찾아낸 모델의 실력 평가 -> for 범용능력 평가

** 공정성 확보를 위해, "임의의" 데이터를 이용해서 평가한다.


- 손실함수

       - 사용 개념 : 평균 제곱 오차, 교차 엔트로피 오차




평균제곱오차//

- 사용 값

      1) 원-핫 인코딩 : 한 원소만 1로 하고, 나머지 원소들을 모두 0으로 설정하는 경우

      2) 신경망의 출력값 


- 적용 원리 : (신경망 출력값 - 정답레이블)**2 /2



교차 엔트로피 오차//

- 사용 값 : 위에 있는 값과 동일


-적용 원리 : 정답레이블 * log(신경망 출력값)

    ** 델타값을 신경망 출력값에 더해줘야 계산이 가능함.


- 미니 배치 학습 : 

      - 일반적인 배치 학습 : 여러 개의 신경망 출력값들을 한꺼번에 묶어서 계산함.

      - 미니 배치 학습 : 여러 개의 데이터들 중에서, 일부 표본을 무작위로 선정한 다음에 학습



손실함수 설정이유//

- 정확도를 사용할 경우 : 매개변수의 미분값이 대부분의 장소에서 0이 됨

-> 손실함수 이용시, 해결! (손실함수는 미분값이 0이 되는 지점이 엄청 적음)


- 손실함수의 값은 매개변수의 값이 조금이라도 변하면 그에 반응하여 연속적으로 변화함

(정확도의 경우엔, 그정도로 변하지 않음. 불연속적으로 띄엄띄엄하게 변함)

-> 계단함수를 활성 함수로 이용하지 않는 이유도 이러한 까닭에 의해서임.


** 손실함수와 활성화 함수는 다르다!!

1) 활성화 함수 : 신경세포간의 신호가 전달될 떄, 어느정도의 막전위가 오는지를 알아야 함. 

    활성화 함수도 막전위라고 생각하면 편함. 

    어떤 노드에서 다음 노드로 활성화 되는 확률이 얼마인지를 산출해 주는 일종의 함수.


2) 손실 함수 : 각 노드들마다 설정된 가중치와 편향이 다름.

                   그 매개변수(가중치, 편향)가 얼마나  적절한지를 판단해주는 함수.

  함숫값이 높게 나올수록, 매개변수를 변형해야 함.

 

 손실함수의 방식과 역전파 방식이 대립되는 방식이라고 일단 이해하자


- 사용하는 원리 : 미분

       - 종류 :  중심 차분(중앙차분), 차분

            ** 아주 작은 차분으로 미분하는 걸 "수치 미분"이라고 함.


       - 편미분

- 일반적인 방식 : 여러 변수가 있을 경우, 딱 한 변수 제외하곤 모두 고정시킴.

고정시키지 않은 변수만 미분을 해서 값을 대입해줌

- gradient 방식 : 각각의 편미분 값들을 하나의 좌표처럼 정리해서 표현한 것.


- 원리 : 각 지점에서의 gradient값을 구해서, 경사 하강법을 이용해서 최솟값을 향해 이동

       ** 그러나, 해당 최솟값이 최적(또는 최소)의 값을 항상 가리키지는 않는다.


       - 학습률 : 하이퍼파라미터 라고 한다. 얼마나 큰 보폭으로 dradient만큼 옮길것인가?


- 신경망에도 손실함수를 이용한 계산이 가능하다!

        - 가중치 값에 따라 결괏값이 있으며, 그 결괏값은 손실함수에 의해 평가된다

        - 평가된 손실함수를 미분해버리면 된다!

        - 이때, 각각의 함수 결괏값들을 gradient형식으로 받아주면 됨



학습 알고리즘 구현하기//


- 순서 : 신경망 학습을 하기 위함

     1) 1단계 - 미니 배치 : 

훈현 데이터 중 일부를 무작위로 가져옴 (미니배치의 손실 함숫값을 줄이는 게 목표)

     2) 2단계 - 기울기 산출 : 

      가중치 매개변수의 기울기 구함 (기울기는 손실함수 값을 가장 작게 하는 방향 제시)

     3) 3단계 - 매개변수 갱신 :

가중치 매개변수를 기울기 방향으로 조금 갱신

     4) 4 단계 - 위의 과정 반복