일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 8puzzle
- deeplearning
- residuallearning
- 딥러닝
- 신경망
- NeuralNetwork
- 합성곱
- RESNET
- superresolution
- EDSR
- sr
- AStar
- 증가하는부분수열
- leetcode
- residualnetwork
- BFS
- 준지도학습
- MDSR
- Increasing Triplet Subsequence
- pixelshuffle
- PYTHON
- 비지도학습
- DFS
- CNN
- 동적계획법
- SRCNN
- 지도학습
- a*
- convolution
- Today
- Total
이것저것 코딩하는 블로그
[Deep Learning] 신경망 (Neural Network) 본문
0. 신경망
1) 뉴런
신경망을 구성하는 것은 뉴런이다. 뉴런이란 하나의 함수로 이해하면 되는데, 입력값을 넣으면 어떤 과정을 거쳐 (이 과정은 사용자가 정의한다) 결과를 내놓는 것이다.
2) 퍼셉트론
퍼셉트론이란 특정한 과정이 설정된 뉴런이다. 그 과정이란, 입력값을 넣으면 퍼셉트론은 정해진 가중치를 곱하여 결과값을 계산한다. 그리고 그 결과값이 일정한 값을 넘으면 값을 출력한다. 이 때 일정한 값을 정하는 함수는 활성 함수라고 불리운다. 활성 함수에는 여러가지가 있는데, 대표적으로 시그모이드 함수와 ReLU 함수가 있다. 시그모이드 함수의 식은 다음과 같다.
fx=1/1+e-x : 시그모이드 (Sigmoid) 함수
f(x) = max(0,x) : ReLU 함수
개형은 다음과 같다.
두 함수 모두 일정 값을 넘으면 결과를 반환하는 형태를 보인다.
3) 신경망
그렇다면 이 같은 형태가 어떻게 신경망을 구성하게 될까?
신경망의 그림을 살펴보자.
신경망은 크게 입력층, 은닉층, 출력층으로 나뉜다. 입력층에서는 입력값을 받고, 은닉층에서는 가중치를 통해 결과값을 계산한다. 출력층은 위에서 언급한 활성 함수를 이용해 일정 값이 넘는 결과값을 출력한다.
4) 신경망의 학습
이러한 신경망이 어떻게 학습에 활용이 된다는 것일까? 신경망에게 학습이란, 어떤 과제를 해결하는 최적의 방법을 찾는 것이다. 이 과제는 분류, 회귀, 클러스터링 등등 다양하다.
인간이 과제를 해결하다 보면 문제가 생긴다. 문제로부터 잘못된 점이 어디인지 확인하고, 그 잘못된 점을 고치는 것을 중심으로 다시 과제를 해결하게 된다. 이 과정을 컴퓨터로 구현한 것이 신경망의 학습 과정이다.
과제에는 정답 혹은 최적의 값이 있을 것이다. 이를 뭉뚱그려 정답이라고 칭하겠다. 정답과 최적값의 차이 (cost function)는 차후 학습의 종류에서 설명하겠다. 첫 번째 가중치로 계산한 값은 당연히 모두 정답일 수 없다. 신경망은 결과값과 정답의 차이를 계산한다. 그리고 그 차이가 적어지는 방향으로 미분을 이용해 가중치를 갱신한다. 이를 오차역전파법이라고 한다. 오차역전파법을 통해 신경망은 스스로 가중치를 갱신한다. 분류 문제에서는 이를 통해 인간이 잡을 수 없는 high-level feature을 잡는 작업을 하기도 한다.
여기서 일반적인 기계학습과의 차이가 두드러지는데, 기계학습은 데이터에 명시적으로 주어진 feature을 더 잘 분류할 수 있도록 학습하는 것이다. 반면에 딥 러닝의 신경망은 오차역전파법을 통한 가중치 갱신으로 인간이 명시할 수 없는 high-level의 feature을 파악하고 그것을 더 잘 구별하도록 스스로 학습한다.
5) 신경망 학습의 종류
위에서 과제의 종류에 따라 정답 혹은 최적의 값이 바뀐다고 했는데, 여기서 그 종류의 차이가 나타난다. 학습에는 크게 세 가지 종류가 있다.
(1) 지도 학습
지도 학습이란, 정답이 있는 학습이다. 신경망이 지도 학습을 할 때, 정답과 최적값의 차이, 즉 잔차가 cos function이 된다. 이 잔차를 줄이는 방향으로 신경망의 가중치들이 갱신되며, 최종 목표는 정답에 가까워지는 것이다. 분류 (classification), 회귀 (regression) 문제가 여기에 속한다.
(2) 비지도 학습
반면에 비지도 학습은 정답이 없는 학습이다. 그렇다면 신경망은 어떤 방향으로 가중치를 갱신할까? 군집화 문제가 비지도 학습의 대표적인 예인데, 데이터들이 어떤 군집을 이루는 지 정답을 몰라도 비슷한 특징을 가진 데이터끼리 모이게 군집화할 수 있다. 이 때 cost function은 같은 군집의 데이터 간의 거리의 합이 된다 (거리를 어떻게 구하냐는 알고리즘마다 조금씩 차이가 있다). 신경망은 이 cost function의 값이 최소가 되도록 오차역전파법을 통해 가중치를 갱신한다.
(3) 준지도 학습
그렇다면 지도 학습과 비지도 학습의 중간에 있는 준지도 학습에서는 신경망은 어떤 cost function을 사용할까? 이 때는 섞어서 사용한다. 대표적인 예로, 비지도 학습의 하나인 self-training에서는 충분히 정답을 통해 학습된 모델이 지도하는 (teacher) 모델이 되어서 정답이 없는 데이터들을 학습시키는 역할을 한다.