0. 서론
실제 인간처럼 학습을 위해서는 단순히 1~2개 정도의 뉴런 단계를 만드는 것이 아니라, 수백 수천개를 쌓기 때문에 그 층이 깊다고 해서 Deep이라고 붙인다. 그래서 우리는 딥 뉴럴 네트워크라고 부르고 이렇게 깊은 신경망을 학습시키기 때문에 딥러닝이라고 부른다.
앞의 내용까지가 기존의 프로그래밍적 사고와 DNN이 어떻게 다른지에 대한 개념 설명이었다면, 이제는 실질적으로 DNN을 이루는 요소들과 실제로 어떻게 학습하는지에 대해서 설명해보려고 한다.
기본적인 프로세스는 "함수"를 생각하면 된다.
함수란? 쉽게 말하면 Input값이 들어가면 어떤 함수에 의해 변형된 output값이 노출되는 것을 말한다. 각 구성요소별로, 어떤 값이 입력으로 들어오고, 어떤 변형(변형의 목적)을 통해서 어떤 값이 출력으로 나가는지를 이해하면 심층 신경망을 이해할 수 있다.
1. Deep Neural Network(심층 신경망) 구성 요소
1) 문제, input
정의
- 문제는 우리가 기계에게 주려고 하는 요청사항(Task)이라고 볼 수 있다. 앞에서 우리는 고양이 그림을 주고 고양이인지 아닌지 맞춰달라고 하는 모델을 만들려고 했는데 여기에 대입해보면 문제는 고양이 그림이라고 볼 수 있다. 혹은 한영 번역 문제에 있어서는 한글이 문제라고 볼 수 있다.
특징
- 앞에서 컴퓨터는 뉴런이 화학적 신호, 전기적 신호를 바꾸는 것에 착용해서 숫자, 벡터 방식으로 표현된다고 했다. 즉, 고양이 그림이든 한글이라는 글자이든 간에 모두 숫자로 바꾸어야 한다. 이미지, 텍스트를 숫자로 바꾸는 것과 관련해서는 추후에 여러 논문을 통해서 설명할 예정이기에, 이번에는 인풋 값 역시 숫자로 바뀌어야한다만 이해하고 넘어가려고 한다.
- 파란색 원에 이어진 회색 선은 현재 파란색 원이 가지고 있는 값을 다음 neuron으로 넘긴다는 것을 의미한다.
동작 원리
- input : 이미지, 텍스트, 숫자와 같은 컴퓨터에게 처리하는 것을 요구하는 문제
- 함수 : 각각의 이미지, 텍스트가 가지고 있는 특성을 가장 잘 보존한채로 숫자 벡터로 변형(Embedding)
- output : 숫자 벡터(파란색 원 한개가 숫자 한개를 의미하고 파란 색 원들을 묶기 위해 벡터를 활용한다.)
2) Neuron Layer(학습이 일어나는 공간)
정의
- 실제로 전체 신경망 구조에서 여러번의 고양이 사진을 보면서 학습을 통해 변경되는 값은 오로지 검은색 원의 벡터를 이루는 값들이 변경되기 때문에 기계가 학습을 하는 구간이라고 볼 수 있다. 그래서, 학습시키려는 대상이라고 이해하면 된다.
특징
- 어떠한 방식으로 기계가 학습하는진 모르겠지만, 우리는 input에서 받은 벡터와 곱셈이 가능하도록 학습 레이어의 벡터를 설정해주고, 그 값을 다음 레이어에 넘길지 말지에 대해서는 활성화함수(신경 뉴런의 역치 역할)를 통해서 결정한다.
- 이걸 여러번 반복해서 최종적으로 나오는 결과값이 빨간색 원으로 전달되고, 그 값과 실제 정답과의 차이를 통해 검은 색 원의 벡터들이 변경되는 과정을 거친다.
동작 원리
- 입력값 : 이전 neuron의 output(2번째 층인 경우에는, 문제의 벡터값)
- 함수 : 크게 2번의 연산을 거친다.
1) W라고 불리는 기계가 학습하는 숫자 벡터와 입력값과의 곱셈
2) 1번에서 곱한 값을 활성화 함수를 통해서, 다음 neuron의 입력값으로 어느 정도로 넘길지 결정
- output : f(W*X)로 표시할 수 있고, W*X를 곱한 값을 활성화함수로 넣은 결과값
*활성화 함수가 필요한 이유에는 이 신경망에 비선형 처리를 해준다는 의미인데, 이에 대한 설명은 이 블로그(링크)에 잘 나와있어서 읽어보시면 좋을 것 같다. 개념상으로는 뉴런처럼 모든 정보를 활용하지 않고 특정 영역만 활용할 수 있도록 하기 위함이라고 보면 된다.
3) 최종 layer
정의
- 실제로 Task에 대해서 인간이 답을 내리듯이, 동일하게 기계도 의도한 정답을 내놓는 layer이다.
특징
- input layer에서 이미지, 텍스트를 숫자로 변형했듯이 실제 정답도 이미지, 텍스트라면 숫자로 변형하는 과정이 필요하다.(Embedding)
- 신경망이 뱉어낸 output과 실제 정답의 차이를 비교한다. (둘다 숫자이기 때문에 뺄셈을 의미한다.)
- [decode] input layer에서 이미지, 텍스트를 숫자로 변형했듯이, 최종적으로 결과값으로 나온 숫자를 다시 이미지, 텍스트로 변경하는 과정이 들어간다.
동작 원리
- input : 이전 Neuron layer에서 나온 output
- 함수 : 정답값과 input으로 들어온 값의 차이를 구한다.
- output : 정답값과 input으로 들어온 값의 차이
'Machine Learning > 개념 정리' 카테고리의 다른 글
전체 인공신경망 code 구현하기 (0) | 2023.09.22 |
---|---|
딥러닝 학습 - parameter와 hyper-parameter (1) | 2023.09.18 |
back-propagation 개념 (0) | 2023.09.15 |
Forward Pass code의 수학적 이해와 code 구현하기 (0) | 2023.09.14 |
머신러닝과 딥러닝의 개념적 이해 (0) | 2023.09.12 |