본문 바로가기
Data Science/머신러닝

딥러닝 기초 나만의 정리

by 코딩은 잼있어 2020. 7. 8.
728x90

딥러닝

1. 인공 신경망(Neural Network) 개념

(1) 신경망

신경 세포 뉴런은 이전 뉴런으로부터 입력을 받으면, 입력 값들의 모든 합이 임계점에 도달해야만 출력신호를 발생시킴.

img

이처럼 입력신호를 받아 특정 값(임계점)을 넘어서야만, 출력을 생성해주는 함수를 활성화 함수(activation function)라고 한다.

지금까지 배워온 Logistic Regression 시스템의 sigmoid함수가 대표적인 활성화 함수임, 즉 sigmoid는 임계점이 0.5를 넘어야만 1로 출력을 내보내고, 0.5보다 작을경우 출력을 내보내지 않는다.

(2) 인공신경망

이러한 생물학적 신경망의 개념을 참고하여 딥러닝에서 쓰이는 인공신경망 개념을 만들었다.

img

신경망에서의 뉴런의 역할을 인공신경망에서 로지스틱회귀가 역할을 하여, 이전단계에서 입력을 받고 다음단계로 출력을 넘기는 역할을합니다. 최종 출력 단계에서 활성함수가 출력을 만들어서 내보냅니다

이때 각각의 node는 Logistic Regression 시스템으로 작동한다.

  1. 입력신호 x와 가중치 W를 곱하고, 적당한 바이어스 b를 더한 후,
  2. 그 값 z를 활성화함수 sigmoid에 전달 (classfication) 하여, sigmoid의 값 y가 0.5 넘으면 1로, 아니면 0으로 다음 뉴런(Logistic Regression)으로 넘겨준다.

img

2. 딥러닝(Deep Learning) 개념

노드가 서로 연결되있는 신경망구조를 바탕으로 입력층(input Layer), 1개이상의 은닉층(Hidden Layer), 출력층(Output Layer)를 구축하고, 출력층에서의 오차를 기반으로 각 노드의 가중치를 학습하는 머신러닝의 한 분야

이때, 은닉층의 갯수가 많을수록 정확도가 높아진다. 즉, 은닉층을 깊게(Deep) 할수록 정확도가 높아진다고해서 딥(Deep)러닝이라고 부른다.

img

층과 층사이의 가중치 W는 초기화 되어 있으며, 데이터가 입력층에서 출력층으로 전파(propagation) 될 때, 각 층에 있는 모든 노드의 가중치는 강화 or 약화시키며, 최종적으로는 오차가 최소 값이 될때 최적의 값을 가지게됨

(1) 딥러닝의 구조와 feed forward

[1] 딥러닝의 구조

딥러닝은 입력층, 은닉층(여러개), 출력층으로 구성되고, 위 그림처럼 한개의 계층에 여러개의 노드가 존재한다.

  • 한 노드는, 하나의 logistic regression으로 동작한다. logistic regression 이란 ??
    1. 입력데이터 x에 대해서 z = Wx + b를 연산해주는 선형회귀단계
    2. z가 시그모이드 함수에 들어가서 0 or 1로 출력해주는 classfication 단계

위의 그림처럼 여러 노드로 이루어진 한개의 계층의 결과값을 다음 계층으로 전달되면서 예측하는 과정을 feed forward라고 한다.

[2] feed forward

  • 이전층의 출력값이 다음층의 입력으로 들어가는게 feed forward 방식이라고함

[3] feed forward - 표기법(notation)

가중치표기법

W (4)31: 계층 4에 있는 node에 적용되는 가중치, 계층3의 node1에서 계층 4의 node3으로 전달되는 가중치

바이어스 표기법

b(5) 2: 계층 5에 있는 node2에 적용되는 바이어스

선형회귀 계산법

z(5) 3: 계층 5에 있는 node3에 적용되는 선형회귀 계산값

노드의 출력 표기법

a(2) 2: 계층 2의 node2의 출력값으로서 logistic regression 계산값

활성화함수 sigmoid를 사용하면 ==> a 2(2) = sigmoid(z2(2))

3 딥러닝의 동작과정

1. 입력층

딥러닝의 입력층에서는 sigmoid를 적용하지 않고, 입력값 그대로를 출력하는것이 관례화되있다.

x1 = a(1)1

x2 = a(1)2

2. 은닉층

입력층에서 은닉층으로 들어가는 입력값(a1(1), a2(1))과 가중치 W를 곱하고 바이어스를 더한뒤 (선형회귀)의 값을 활성화함수(sigmoid)로 0 ~ 1사이의 값 출력

(은닉층의 선형회귀)

일반식 행렬식
z(2)1 = a(1)1 * W(2)11 + a(1)2 _W(2)12 + b(2)1, z(2)2 = a(1)1 * W(2)21 + a(1)2_W(2)22 + b(2)2 (z(2)1 z(2)2) = (a(1)1 a(1)2) * ((W(2)11 W(2)12)(W(2)21 W(2)22)) +(b(2)1 b(2)2)

(은닉층의 활성화함수 결과값)

a(2)1 = sigmoid(z(2)1)

a(2)2 = sigmoid(z(2)2)

3. 출력층

일반식 행렬식
z(3)1 = a(2)1*W(3)11 + a(2)2 *W(3)12 + b(3)1 (z(3)1) = (a(2)1 a(2)2) * (W(3)11 W(3)12) +(b(3)1)

y = a(3)1 = sigmoid(z(3)1)

마지막 출력층의 출력값인 y와 t를 비교하여 최소오차가 되는 W, b값을 찾을때까지 반복하면됨

4. 다시 한번 내가 정리하는 딥러닝 프로세스

  1. 훈련데이터에는 x값과 정답 t가 주어짐, 훈련데이터를 딥러닝 프로세스에 입력!!
  2. 입력층 => 은닉층 => 출력층 순서대로 각각의 층마다 노드들이 계산을 하면서 feed forward가 이루어짐. 최종결과값 y를 출력함
  3. 최종결과값 y와 t를 cross entropy로 손실함수값을 구함 ==> 최소면 학습종료, 아니면 다시 feed foward 반복, 반복할때는 W , b를 갱신하고 진행(학습율을 곱해 빼준다.)
728x90