본문 바로가기
Computer Technology 기록부/인공지능 학습 기록부

신경망(Neural Network)이란?

by Amins 2022. 1. 25.

딥러닝 알고리즘의 구현 방식, 신경망에 대해 알아보자.

신경망(Neural network)이란?

우리 뇌에는 1000억 개에 가까운 신경계 뉴런들이 있다. 이 뉴런들은 서로 매우 복잡하게 얽혀 있고, 조금 물러서서 보면 하나의 거대한 그물망과 같은 형태를 이루고 있다. 보통 우리는 이를 신경망이라고 한다.

머신러닝/딥러닝 분야는 위와 같은 뇌 속의 신경망처럼 컴퓨터 알고리즘을 구현하여 인공지능을 만들고자 시도했다. 그들은 우리 뇌 속의 신경망 구조에 착안해서 퍼셉트론(Perceptron)이라는 형태를 제안하며 이를 연결한 형태를 인공신경망(Artificial Neural Network)이라고 부르기 시작했다.


다층 퍼셉트론

총 2개 레이러로 구성된 퍼셉트론 - 레이어의 갯수는 노드와 노드 사이의 연결이 몇개인지를 보면 된다.

 

  • 입력층(input layer), 은닉층(hidden layer), 출력층(output layer) 으로 구성
  • 2개 이상의 레이어가 쌓여 만들어진 것을 다층 퍼셉트론(Multi-Layer Perceptron; MLP)이라고 부름
  • 은닉층이 많은(깊은) 인공신경망을 DNN(Deep Neural Network)라고 함

 


Parameters/Weights

 

입력층-은닉층, 은닉층-출력층 사이에는 사실 각각 행렬(Matrix)이 존재
이러한 행렬들을 파라미터(웨이트 + bias) 혹은 weight라고 부름
W - weight/ X - input / b - bias

예시

  • 입력값이 100개, 은닉 노드가 20개라면 사실 이 입력층-은닉층 사이에는 100x20의 형태를 가진 행렬이 존재
  • 10개의 클래스를 맞추는 문제를 풀기 위해 출력층이 10개의 노드를 가진다면 은닉층-출력층 사이에는 20x10의 형태를 가진 행렬이 존재

활성화함수 (Activation Function)

  • 비선형 함수를 MLP 안에 포함시키면서 모델의 표현력이 좋아지게 된다.
    • 레이어 사이에 이 비선형 함수가 포함되지 않은 MLP는 한 개의 레이어로 이루어진 모델과 수학적으로 다른 점이 없다. 아무리 함수 안에 함수를 넣는 식으로 레이어를 깊게 만들어도 결국엔 하나의 함수로 정의되는거나 마찬가지이기 때문 -> f1(f2(f3(f4(X))) = g(X) 처럼 나타낼 수 있는것처럼

 

활성화 함수 01. - Sigmoid Function

  • 모든 값을 0~1 사이 값으로 바꾸어준다.
  • vanising gradient 현상이 발생
  • exp 함수 사용하기때문에 비용 大

활성화 함수 02. - Tanh

 

  • 모든 값의 범위를 -1~1로 바꿈
  • tanh 함수는 함수의 중심값을 0으로 옮겨 sigmoid의 최적화 과정이 느려지는 문제를 해결.
  • vanishing gradient 문제 존재.
  • 소프트맥스(softmax)기법에 사용(n개중 하나일 확룰로 변경)

활성화 함수 03. - Relu

  • sigmoid, tanh 함수에 비해 학습이 빠름.
  • 연산 비용이 크지 않고, 구현이 매우 간단하다.
  • vanishing gradient 발생 x 

손실함수(Loss Function)

비선형 활성화 함수를 가진 여러 개의 은닉층을 거친 다음 신호 정보들은 출력층으로 전달. 이때 우리가 원하는 정답과 전달된 신호 정보들 사이의 차이를 계산하고, 이 차이를 줄이기 위해 각 파라미터들을 조정하는 것이 딥러닝.

 

이 차이를 구하는 데 사용되는 함수가 손실함수(Loss function) 또는 비용함수(Cost function)


손실함수 01. - 평균 제곱 오차(MSE : Mean Square Error)

손실함수 02. - 교차 엔트로피 (Cross Entropy)

  • 두 확률분포 사이의 유사도가 클수록 작아지는 값(예측값과 정답값이 비슷할수록 값이 작아짐)


경사하강법(Gradient Descent)

  • 파라미터의 최적값을 찾기 위해 Loss function의 최소지점의 파라미터 값을 찾는 방식 中 하나. 
  • 주로 분석에서 만나는 함수는 비선형함수인 경우가 많아 미분계수, 근을 구하기 힘듦.
  • 따라서 x값을 조금 옮겼을떄의 값 변화로 기울기의 방향을 파악한다.
    • <방식> 
    • 손실함수 값이 작아지면 기울기가 음수(하강중), 높아지면 기울기가 양수(상승중)
    • 손실함수 값이 작아지는 쪽, 즉 음수방향의 값으로 이동한다. (이동 거리는 learning rate값으로 조정)
    • 이동해도 더이상 값 변화가 없으면, 즉 미분계수가 0인 지점, 최소지점 - 멈춘다.
 

최솟값에 도달할 때까지 이동

 


경사하강법으로 구한 기울기를 입력층까지 전달하는 방식

오차역전파법(Backpropagation)

출력층의 결과와 내가 뽑고자 하는 target 값과의 차이를 구한 뒤, 그 오차 값을 각 레이어들을 지나며 역전파 해가며 각 노드가 가지고 있는 변수들을 갱신

 

 

댓글