인공 신경망 ANN 이해하기

최진호·2023년 1월 28일
0

파이토치 딥러닝

목록 보기
2/3
post-thumbnail

2.1 퍼셉트론

  • 가장 처음 등장한 인공 신경망artificial neural network, ANN
  • 인공 뉴런을 뜻함
  • 사람의 뇌세포(뉴런)을 수학적으로 표현
  • ANN(인공 신경망)은 퍼셉트론(인공 뉴런)의 집합체
  • 단층 신경망 : 하나의 뉴런
  • 다층 신경망 : 여러 개를 조합

퍼셉트론은 1) 입력층 2) 노드(인공 뉴런) 3) 출력층으로 구성

입력값(x1,x2x_1, x_2)에 대응하는 가중치(w1w_1, w2w_2)를 곱해서 얻은 가중합이 활성화 함수(FF)의 입력으로 사용된다.

가중치(ww)

  • 중요한 입력값을 더 키우고, 중요하지 않은 입력값을 줄이는 등, 입력에 대한 중요도를 나타내는 숫자.
  • 변하는 값이 아닌 고정된 상수

이 때 더해지는 편향(b)은 활성화 함수(FF)의 임계값을 이동시키는 영향.

임계값

  • 하나의 변수 x가 어느 값이 되었을 때 특이한 상태나 급격한 변화가 일어나 임계 상태에 있을 때의 x값.

활성화 함수(FF)

  • 임계값을 기준으로 노드의 출력값을 결정하는 함수.
  • 활성화 함수로 인해 층을 쌓는 효과가 생긴다.

출력값

  • 활성화를 거친 후 얻어지는 값.

활성화 함수로는 시그모이드 함수sigmoid function를 사용

시그모이드 함수

  • 실수 전체의 모든 입력에 대해 출력이 0과 1 사이의 실수만을 갖는다.
  • 시그모이드 함수를 사용하는 이유는 인공 신경망의 출력을 확률로써 다루고 싶기 때문
    (확률 또한 값이 0과 1 사이로 표현된다.)

출력값 yyF(x1w1+x2w2+bF(x_1w_1+x_2w_2+b)
가중합a는 a=(x1w1+x2w2+bx_1w_1+x_2w_2+b)로 표현

가중치(ww)가 변함에 따라 위 그래프에서 직선의 기울기와 위치가 변한다.
뉴런의 계산 결과(a)에 의해 직선의 아래에 있는지 위에 있는지 결정을 내릴 수 있다.
위와 같은 직선을 결정 경계라고 한다.

이 결정경계를 만들기 위해 하나의 퍼셉트론을 이용했기에 이런 구조를 단층 신경망이라고 한다.

2.2 다층 신경망으로 단층 신경망 한계 극복하기

위와 같은 데이터는 XOR 데이터로 하나의 선으로 0과 1을 구분할 수 없다.

XOR

  • 배타적 논리 연산, 즉 x1x_1x2x_2 중 하나만 1일 때 결과가 1인 경우

이 문제를 해결하기 위해 다층 신경망이 등장한다.

다층 신경망

  • 선을 여러 번 그어서 데이터를 분류한다.

기저 벡터 변환

  • 좌표계에서 하나의 점을 표현하는 기준(기저 벡터)을 다른 벡터로 바꿔준다

왼쪽의 x1x_1, x2x_2를 빨간선, 파란선 기준으로 바꾼다.
데이터 좌표평면상의 모든 점이 결정 경계 좌표평면상으로 이동.
이 과정을 반복하는 것이 다층 신경망이 데이터를 분류하는 방식

데이터 좌표평면의 두 선은 각각이 결정 경계가 되어 선보다 위에 있는 값을 1, 작은 값을 0으로 반환한다.

왼쪽 그래프의 ④의 1은 아직 계산 중간 단계에 있기에, 1
정답값은 신경망의 최종 출력에서만 고려한다.

다층 신경망도 마지막에 데이터를 분류하려면 선(가설)이 하나이어야 한다.

<이동 방법>
①의 1

  • 데이터 좌표평면상 파란선, 빨간선보다 위쪽에 위치
  • 결정 경계 좌표평면상 (1, 1)의 위치로 이동

②, ③의 0

  • 데이터 좌표평면상 파란선 아래, 빨간선 위쪽에 위치
  • 결정 경계 좌표평면상 (1, 0)의 위치로 이동
    (x축이 빨간선이기에 x가 1)

④의 1

  • 데이터 좌표평면상 파란선, 빨간선보다 아래에 위치
  • 결정 경계 좌표평면상 (0, 0)의 위치로 이동

이후 노란색 직선으로 구분할 수 있다.

기저 벡터는 공간을 표현하는 벡터의 집합
ex)
데이터 좌표평면 : (x1x_1, 0), (0, x2x_2)
결정 경계 좌표평면 : 데이터 좌표평면에서의 빨간선, 파란선
(빨간선, 파란선은 x1x_1, x2x_2로 표현할 수 있어, 결정 경계 좌표평면상의 점도 x1x_1, x2x_2로 표현 가능)

다층 신경망은 입력층, 은닉층, 출력층으로 구성됨
입력층 : 데이터가 들어오는 층
은닉층 : 굳이 값을 알 필요가 없기에 출력값을 숨긴다 해서 붙여진 이름

  • 층의 너비 : 하나의 층에서의 노드의 수
  • 층의 깊이 : 층 개수

출력층 : 출력을 결정짓는 층

순전파forward propagation

  • 데이터가 입력층->출력층 순서대로 전달되는 것
  • 출력층 출력 계산 시, 순전파 결과와 역전파에 사용할 기울기도 계산

2.3 인공 신경망의 학습 확인해보기

은닉층과 출력층의 뉴런은 아래 공식을 이용해 계산한다.

a=x1w1+x2w2+ba=x_1w_1+x_2w_2+b

모든 단계에서 활성화 함수는 0 이상이면 1을 출력,
0 미만이면 0을 출력

<a1a_1, a2a_2 계산>
a1=F(5x1+5x28)=F(50+508)=F(8)=0a_1=F(5x_1+5x_2-8)=F(5*0+5*0-8)=F(-8)=0
a2=F(7x17x2+3)=F(7070+3)=F(3)=1a_2=F(-7x_1-7x_2+3)=F(-7*0-7*0+3)=F(3)=1

이런 식으로 모든 연산에 적용한다.

<출력층값 계산>
y=F(11a111a2+6)=F(110111+6)=F(5)=0y'=F(-11a_1-11a_2+6)=F(-11*0-11*1+6)=F(-5)=0

출력층은 구조적으로 은닉층과 동일
따라서 가중치와 편향이 존재

신경망에 제대로 된 가중치를 준다면 복잡한 형태의 데이터 분포 역시 해결 가능
복잡한 데이터를 분류하는 데 사용할 가중치(ww)와 편향(b)은 어떻게 찾을 수 있을까

2.4 손실 함수로 올바른 가중치 찾기

오차 함수 or 손실 함수loss function

  • 오차좌표평면에서 하나의 점으로부터 직선까지의 거리를 구하는 함수
  • 값이 결정 경계의 성능을 간접적으로 나타낸다.
  • 2오차^2의 평균이 작을수록 데이터를 잘 분류했다고 할 수 있다.

1) 평균 제곱 오차Mean Squared Error, MSE / 회귀

  • (정답예측값)2(정답 - 예측값)^2의 평균값
  • 1보다 작은 오차는 더 작게,
  • 1보다 큰 오차는 더 크게 키우는 특성

2) 크로스 엔트로피 오차Cross Entropy Error, CE / 이진분류, 다중분류

  • 분류 문제에서는 인공 신경망의 출력이 확률 분포. 확률 분포의 차를 구하는 함수가 필요.
  • 정답값의 확률모델이 예측한 확률에 로그를 취한 값을 곱해서 구한다.

3) 평균 절대 오차Mean Average Error, MAE / 회귀

  • |정답-예측값|의 평균값
  • 1보다 작은 오차도 놓치지 않으나,
  • 오차 크기가 아닌 보후에만 의존하기 때문에,
  • 작은 오차라도 기울기가 커질 수 있다.
  • 학습이 불안정

4) 평균 제곱근 오차Root Mean Squared Error, RMSE / 회귀

  • MSE\sqrt{MSE}
  • 큰 오차에 대한 민감도를 줄여줌

2.5 경사 하강법 & 오차 역전파로 최적의 값 찾기

손실 함수(LL) : 독립변수가 신경망의 가중치(ww)와 편향(b)인 함수

오차가 가장 적은 최적화된 가중치와 편향을 찾아 최적의 직선을 찾아야 한다.
최적의 직선을 찾는다는 말은 방정식을 푼다는 의미

ww와 b가 늘어날수록 풀어야 하는 방정식의 복잡도는 기하급수적으로 증가하여 난이도 상승

이는 경사 하강법과 오차 역전파로 해결 가능

신경망의 출력값은, y=F(w5a1+w6a2+b3)y=F(w_5a_1+w_6a_2+b_3)
신경망의 예측값은, yy
신경망의 실젯값은, yy'

=> L(y,y)L(y, y')

2.5.1 경사 하강법

경사 하강법

  • 함수의 기울기(경사)를 구하고,
  • 기울기 값에 -1을 곱한 값만큼 변수의 값을 경사 반대 방향으로 이동시켜, 최솟값에 이를 때까지 반복시키는 학습 방법
    (즉, 기울기의 반대 방향으로 이동하기에 기울기 값(미분한 결과)을 빼줘야 한다.)
  • 손실 함수의 기울기와 학습률learning rate로 보폭 결정
  • 손실 함수를 미분(시작점의 기울기 값)하여,
  • 음의 기울기는 ww가 양의 방향으로 이동해야 한다.
  • 양의 기울기는 ww가 음의 방향으로 이동해야 한다.

ww는 시작점부터 기울기 크기만큼 이동
학습률을 이용해 더 많이, 더 적게 이동

yy : 가중치에 관한 함수
aa : 학습률
ww' : 가중치의 새로운 값
보폭 : 학습률 X 기울기

학습률이 너무 크면 최솟값을 지나칠 가능성이 높다.
학습률이 너무 작으면 최솟값까지 지나치게 많은 반복이 있다.
학습률을 바꿔가며 최적의 학습률을 찾아가야 한다.

2.5.2 오차 역전파

오차 역전파error backpropagation

  • 정답과 신경망이 예측한 값의 오차를 최소화하는 가중치를 찾는 알고리즘
  • 미분의 연쇄 법칙을 이용,
  • 출력층에 가까운 ww부터 수정해간다.
  • 경사하강법 사용

신경망의 출력층에서 입력층까지 오차가 거슬러 전달.
정보의 방향이 반대가 되므로, 역전파

ww는 원래의 값에서 기울기의 값을 뺀 새로운 값을 얻는다.
미분의 연쇄 법칙에 의해, 층을 거칠수록 기울기가 누적되어 곱해지게 된다.
입력층에 가까운 ww일수록 누적되는 기울기가 늘어나며,
입력층까지 역전파되어 신경망의 모든 ww를 수정해나간다.

2.6 활성화 함수로 기울기 소실 예방하기

오차가 역전파될 때 층을 거칠 때마다 시그모이드의 도함수(미분)가 곱해진다.
도함수 최댓값이 0.25이므로, 곱해질 때마다 오차가 점점 줄어든다.
층이 너무 깊어지면, 출력층에 가까운 은닉층들은 제대로 학습이 이루어지나,
입력층에 가까운 은닉층들은 제대로 학습이 이루어지지 않는다.

시그모이드 함수는 실수 전체를 0과 1 사이의 값으로 압축
z의 크기가 커지면, 도함수 값이 0에 가까워진다.

기울기 소실 문제

  • 기울기 크기가 0에 가까워지는 현상

미분해도 값이 줄어들지 않는 활성화 함수가 필요

ReLU 함수

  • 0보다 작은 값은 0으로 반환
  • 0보다 큰 값은 들어온 값 그대로 내보낸다.

ReLU 함수를 미분하면 0보다 큰 범위에서 기울기 1을 갖기 때문에
기울기 소실 문제가 발생하지 않는다.

0보다 작은 범위에서는 0을 반환,
그 뉴런과 연결되어 있는 다음 층 뉴런은 입력의 일부가 0이 된다.
(넘어가는 정보가 없어진다.)

딥러닝 모델을 만들 때는 은닉층의 깊이, 활성화 함수, 손실 함수 등을 복합적으로 고려해야 한다.

1) 시그모이드 함수

  • 무한한 실수를 0과 1 사이로 일대일 대응
  • 하나의 클래스에 속할 확률이 p일 경우, 반대 클래스에 속할 확률은 1-p
  • 이진 분류에 사용

2) ReLU 함수

  • 은닉층 활성화에 이용

3) 소프트맥스 함수

  • k개의 숫자를 입력받아 k개의 요소를 갖는 확률 분포로 변환하는 함수
  • 여러 가지 출력값 즉, 여러 클래스에 속할 확률을 나타낸다.
  • 다중분류에 사용
profile
beginner

0개의 댓글