인공지능/이론 정리

신경망 학습 : 손실함수, 활성화함수, 파라미터

고등어찌짐 2022. 1. 13. 23:17
  • 활성화함수 
    활성화함수는 신경망으로 계산한 입력신호의 모든 합을 각 함수식에 맞게 처리해 출력값으로 변환해주는 역할을 한다. 활성화함수를 사용하는 이유는, 출력값을 비선형의 형태로 바꾸기 위해서이다. 비선형으로 만들어주는 이유는 선형 구조에 문제가 있기 때문이다. 여러개의 선형식 레이어를 아무리 쌓아도 하나의 선형식으로 표현할 수 있기에 비선형 함수를 사용해주어야 한다. 

    라고 하는데 사실 이해가 완벽하게 되지 않았다. 히든 레이어에서 가중치와 노드값, 편향값들을 어떻게 더하고 곱할지 구성하고 계산하는 것만으로는 비선형식을 만들 수 없는 것일까? 이 부분이 더 궁금해서 찾아보았다.

    그리고 그 예측이 맞았다. Geeks for Geeks 라는 해외 사이트에서 활성화함수에 대해 설명한 글을 찾아보았는데, "A neural network without an activation function is essentially just a linear regression model." 라고한다. 활성화 함수를 적용하지 않은 계산만으로는 비선형 함수를 만들 수 없는 것 같다....  


  • 손실함수
    손실함수는 네트워크가 예측한 값과 실제 정답이 얼마나 멀리 떨어져 있는지를 측정한다. 보통 멀리 떨어져있을 수록 손실이 커진다. 따라서 이 손실 값이 적어질 수 있는 네트워크의 매개변수를 조절해나가는 것이 학습이다. 

    그런데, 모델의 정확도라는 지표도 있는데 왜 모델 학습의 지표를 정확도가 아니라 손실값을 사용할까? 그 이유는 모델의 매개변수를 미세하게 움직여가며 학습하는데, 정확도를 지표로 삼으면 이걸 확인하기 어려워진다. 손실함수를 사용하면 함수의 미분값 ( 을 활용해 계산한 기울기값 ) 을 통해, 매개변수가 변하면 손실함수에 어느정도로 영향을 미치는지 알 수 있다. 이를 통해 미분값이 음수면 양의 방향으로, 양수면 음의 방향으로 움직여가면서 미분값이 0이 되는 지점을 찾았을 때 손실함수의 최솟값을 알아낼 수 있다. 반면 정확도를 사용하면 미세한 조정이 힘들어진다. 초기 정확도가 65% 였다면, 손실함수처럼 65.7897, 65.7899.... 와 같이 연속적이고 미세한 수치를 보여주기보다 66%, 67%와 같은 불연속한 값을 보이기에 모델을 학습하기 좋은 지표가 아닌 것이다. 


  • 파라미터 vs 하이퍼파라미터
    파라미터는 보통 가중치, 편향과 같이 모델이 학습하며 변경하는 값들을 의미하고 하이퍼파라미터는 학습률, 배치 사이즈 등 사람이 관여해 직접 조절하는 값들을 말한다. 


  • 신경망학습의 전체 절차
    1 ) 학습할 데이터를 가져오고, 미니배치 학습한다면 그 크기만큼 데이터를 떼어온다. 
    2 ) 신경망으로 떼어온 데이터의 loss 값을 계산한다. 
    3 ) 데이터 loss 값을 활용해 gradient 값을 계산해서, 매개변수 값을 적절히 업데이트한다. 
    4 ) 반복

 

 

# 참조

밑바닥부터 시작하는 딥러닝

Activation functions in Neural Networks
https://www.geeksforgeeks.org/activation-functions-neural-networks/