우리는 어렸을 때 두뇌 게임으로, "1=4, 2=6, 3=8, 4=10, 5=?"와 같은 문제를 풀어본적이 있을 것이다.
Deep Learning도 위와 비슷한 과정을 거쳐서 규칙을 찾아 모델을 만들고 새로운 데이터가 들어오면 모델에 넣어 성과를 내는 것이라고 생각하면된다. 그 중 가장 널리 사용되고 있는 Artificial Neurons, 즉 인공뉴런에 대해서 알아보자.
Artificial Neurons에서 가장 중요한 수학 개념은 선형대수학의 차원개념과 행렬의 곱 연산이다.
Artificial Neuron
Artificial Neuron이란, 신경해부학적 사실을 토대로 하여 만든 인공신경망 기본구성요소로, 단순한 연산기능을 가지고 있는 수많은 인공뉴런이 서로 연결되어 정보를 저장하고 처리한다는 개념이다.
위 그림은 Artificial Neurons의 전체 과정으로 affine function과 activation function의 파트로 나눠지고 affine function에서 계산된 값을 activation function에서 한번더 연산을 하는 과정이다.
Affine Function
Affine Transformation을 활용한 함수다.
Affine Transformation은 선형변환(Y = WX)에서 +b를 추가하여 벡터에 위치 이동의 개념을 추가시킨 것이다.
아핀 공간은 벡터에 위치의 개념을 추가시킨 것이다.
Linear Transformation -> Y = WX Affine Tarnsformation -> Y = WX + B
Affine Function은 데이터와 실제값 사이의 규칙을 찾는 과정을 거쳐 만들어진 식이다.
즉, 주어진 훈련데이터로 입력데이터인 X와 실제 값인 Y간의 규칙을 찾아 적당한 W와 B값을 할당 시켜 만들어진 식이라는 것이다.
Activation Function
Activation Function은 affine function에서 만들어진 식을 통해 나온 Y값을 sigmoid/tanh/relu 등의 식에 대입하여, 보다 정렬된 값으로 변형시켜주는 식이다.
그러면 왜 우리는 Activation Function을 사용해야하는가?
-선형시스템이 아닌 비선형 시스템으로 변형시키기 위해서다. 이렇게 말하면 잘 와닿지 않을 것이다.
선형시스템은 한계가 있다. XOR문제는 다들 알 것이다.
선형시스템은 AND와 OR문제는 해결할 수 있지만, XOR과 같은 non-linear한 문제는 해결할 수 없다는 한계가 있다.
그리고, 선형시스템은 아무리 layer들을 쌓아 깊게 구현한다고 해도 f(ax+by)=af(x)+bf(y)의 성질 때문에 결국 하나의 linear연산으로 나타낼수 있다.
이에 대한 해결책이 Activation Function을 통해 출력값을 비선형 시스템으로 만드는것이다.
sigmoid 함수
나중에 linear regression에서 한번더 정리할 것이다. odds의 개념과 logit의 개념으로 구체적으로 설명하겠다.
분류에서 주로 사용되고 확률로서의 역할을 하는 값으로 변환시킨다.
tanh 함수
쌍곡선 함수중 하나로 x가 양의 무한으로 갈때, 1로 수렴하고 x가 음의 무한으로 갈때, -1로 수렴한다.
시그모이드 함수와 거의 유사하다. 데이터의 평균이 0.5가 아닌 0이라는 차이밖에 없지만 대부분의 경우 시그모이드보다 성능이 좋다.
relu 함수
대부분의 경우 일반적으로 relu의 성능이 가장 좋기때문에 사용한다.
Minibatch in Artificial Neurons
Minibatch in Artificial Neurons란, 대량의 데이터를 일부데이터로 묶어서 하나씩의 묶음을 꺼내어 affine function에 넣어 대량의 결괏값이 나오는 것을 말한다.
CPU 특성상, Matrix 형태로 넣어서 계산하는 것에 특화되어 있다.
대량의 데이터를 바로 function에 넣어 바로 결과를 도출할 수 있다.
weight vector와 bias 는 변치 않고 각 데이터에 연산된다.
weight vector는 입력데이터 X matrix와 행렬곱이 되어야 하므로, lI(엘 아이) X 1 차원이어야하고,
bias 는 1차원이다.
그렇게 해서, 모두 연산된 값은 Z vector로 할당시켜 Activation function의 연산을 거친다.
이 과정 하나가 Neurons이다.
다양한 neurons을 하나의 layer에 삽입하고,
한 층의 layer보다는 겹겹이 층을 만들어 layer를 쌓아 구현하면 더 좋은 성과를 낸다.
다음 게시글에는 dense layer와 cascaded dense layers를 설명해보겠다.
마무리
모든 개발은 모방에서 나오는 것을 이번에 또 느꼈다. 매우 간단한 개념이지만, 이렇게 새로운 분야에 접목을 하면 멋진 성과를 빛내는 구나를 알았다. 이런 insight를 기르고 싶다... deep learning의 기초 발단의 개념을 오늘 설명해봤는데, 이 블로그 운영은 생각보다 많은 도움이 되고 있다. 모든 것은 꾸준히가 가장 중요하니까..! 꾸준히 운영해보자.
'Data_study > Deep Learning' 카테고리의 다른 글
[Deep_learning] Binary Classifiers 구현 (0) | 2022.02.23 |
---|---|
[Deep Learning] Sigmoid and Softmax 이론 (0) | 2022.02.18 |
[Deep_learning] Dense Layers 구현 (0) | 2022.02.04 |
[Deep Learning] Dense Layers 이론 (0) | 2022.01.30 |
[Deep_learning] Artificial Neurons 구현 (0) | 2022.01.18 |