관리자

Neural Network의 구조

Neural Network의 가장 작은 단위는 neuron이다.
여러 개의 뉴런이 하나의 layer를 이룬다. layer의 수는 1개일 수도 있고 여러 개일 수도 있다.
neural network의 기본 구조는 아래 사진과 같다. 아래는 layer가 2개인 경우이다.

 

input layer(파란 부분)

학습시킬 데이터를 encoding해서 넣는 layer
(x1, x2, x3, x4)가 input data이다.

hidden layer(회색 부분)

일반적으로 layer의 수는 input layer와 output layer를 제외한 hidden layer의 수를 말한다.

 

output layer(초록 부분)

최종 산출물 layer.
(y1, y2, y3, y4)가 (x1, x2, x3, x4)에 대한 output(결과값)이다.

weight(가중치)

layer 사이에서 선으로 연결한 부분이 weight이다.

각 layer의 neuron은 전 layer의 neuron과 연결되어있다.

 

 

neuron에서의 연산

빨간색 선만 확대해서 보면 다음과 같다.

 

 

 

1) = w · x + b 를 계산한다.

   w = weight vector, x = vector x, b = bias 이다.

   w 와 x의 내적을 하고, bias를 더한다. linear transformation이다.

 

2) activation function에 ∑를 넣는다.

 

이것을 모든 neuron과 layer에 대해 반복한다.

 

따라서 실제로는 다음과 같이 연산이 이루어진다.

 

Fully Connected Network

한 뉴런이 그 전 layer의 모든 neuron과 연결되어있기 때문에 Fully Connected Network라고도 한다.

 

activation function(활성함수)

threshold(임계값/기준값)을 기준으로, 값을 정해주는 함수

대표적인 예시로는 step function과 sigmoid가 있다.

 

step function

 

sigmoid function

 

https://commons.wikimedia.org/w/index.php?curid=4310325

인터넷에 neural network를 검색해보면 정말 수 많은 정의가 나온다.
NN을 처음 접하는 사람이라면 이해할 수 없을 것 같은 정의가 많다.
formal한/수학적인 정의를 따르기보단, 나의 언어로 풀어보려고 한다.

 

Neural Network(인공 신경망)

내 나름대로 정의해본 neural network는 아래와 같다.

인간의 뇌가 neuron들이 연결되어 작동하는 것처럼
컴퓨터도 neuron 단위로 연산을 하고, neuron을 연결해서 문제를 해결하는 머신 러닝 기법.

NN의 목표는 문제를 잘 해결하는(원하는 목적을 달성하는) 최적의 neuron 연결 구조와 weight(연결의 가중치)를 찾는 것이다.
여기서 neuron 사이의 연결 구조를 Neural Architecture라고 부른다. 흔히 말하는 모델이 neural architecture이다.
일반적으로는 neural architecture를 고정시킨 상태에서 학습을 통해 weight를 찾는다.
고정시킨다는 것은 프로그래머가 결정한다는 의미이고, 학습을 한다는 것은 data를 input으로 넣어 연산을 수행한다는 것이다.


Neural Architecture의 종류

많은 연구를 통해 다양한 neural architecture가 제시되었다.
각 분야별로 좋은 성능을 보이는 neural architecture가 있다.
대표적으로 image recognition, image processing에는 CNN를 사용하며,
natural language processing에는 RNN이 많이 이용된다.
많이 이용되고 좋은 성능을 보인 경우가 많은 것일 뿐, 절대적인 답은 아니다.

CNN과 RNN에 대해서는 다음에 자세히 다룰 것이다.


neural architecture는 프로그래머/연구자가 시행착오와 휴리스틱으로 결정하는 경우가 일반적이었으나,
최근에는 neural architecture조차 머신 러닝으로 해결하려는 시도가 이루어지고 있다.
이러한 연구 분야를 NAS(Neural Architecture Search)라고 한다.

학습 과정

1. 데이터 인코딩
주로 벡터 / 행렬로 인코딩 한다

2. 학습
-1) feedforward
-2) backpropagation

3. validation
4. model tuning

 

 

참고:
https://en.wikipedia.org/wiki/Artificial_neural_network

artificial intelligence

인공 지능. => 직역하면 기계가 생각하도록 하는 것.
formal definition은 

agent(에이전트. 행동하는 주체)가 환경을 인지하고 목표를 성공적으로 이루기 위해 스스로 판단하고 행동하는 것

 

여기서 중요한 것은, 환경을 인지하고 스스로 판단한다는 것이다.

machine learning

기계 학습. 여러 데이터를 통해 기계가 스스로 판단 기준을 만들어 나가는 것.

 

(artificial) neural network(ANN) 

인공 신경망.

인간의 뇌가 neuron들이 연결되어 작동하는 것처럼
컴퓨터도 neuron 단위로 연산을 하고, neuron을 연결해서 문제를 해결하는 머신 러닝 기법.
NN의 목표는 문제를 잘 해결하는(원하는 목적을 달성하는) 최적의 neuron 연결 구조와 weight를 찾는 것이다.
neuron을 어떻게 연결할지는 프로그래머가 결정하고, 연결된 neuron 사이의 weight를 데이터를 통해 학습힌다.
neuron을 연결하는 방식에 따라 deep neural network, convolutional neural network, residual neural network 등 다양한 인공신경망 구조가 있다.


인공 지능, 머신 러닝, 인공 신경망은 비슷해보이지만, 
인공 지능 > 머신 러닝 > 인공 신경망 의 관계를 갖는다.

인공 지능은 인지/판단을 통해 목적을 이루는 agent, 지능을 가리키는 말이고,
머신 러닝은 스스로 학습을 통해서 인공 지능을 갖도록 하는 것이며,
인공 신경망은 머신 러닝을 구현하는 기법 중 하나이다.


인공 지능의 연구 분야에는 knowledge reasoning. planning, machine learning, natural language processing 등이 있고,
머신 러닝의 기법에는 인공 신경망, support vector machine, decision tree 등이 있다.

https://en.wikipedia.org/wiki/Artificial_intelligence
https://en.wikipedia.org/wiki/Machine_learning
https://en.wikipedia.org/wiki/Artificial_neural_network

machine learning은 3가지로 분류할 수 있다.

 

1-2. machine learning의 분류

 

 

출처: https://www.slideshare.net/milkers/lecture-06-marco-aurelio-ranzato-deep-learning


1) supervised learning(지도 학습)

정답이 있는 경우의 학습 방법이다.

 

supervise: 감독하다, 감시하다, 관리하다

supervised learning이 지도 학습으로 번역되는 것은 감시보다는 감독, 관리의 의미가 강하기 때문인 것 같다.

감독관이 지도를 하는 것처럼 supervised learning은 정답에 대한 방향을 지도하는 학습 방법이다. 

정답을 아는 데이터(labeled data)를 통해 정답과 오답에 대한 기준(model)을 학습한다.

 

이전 글에서 손글씨를 인식하는 경우가 supervised learning에 해당한다.

손글씨 사진이 실제로 어떤 글자를 나타나는지가 label이며, 정답에 해당한다.

많은 (손글씨 사진 + 사진 속 실제 글자(label)) 데이터를 가지고 모델을 만든다.

 

 

classification(분류), regression(회귀분석)에 이용된다.

 

NN이 supervise learning에 속한다

 

2) unsupervised learning(비지도 학습)

반대로 unsupervised learning은 정답이 없는 경우의 학습 방법이다.

정답이 없기 때문에, 통계학의 밀도 추정(density estimation)과 연관이 깊다.

 

clustering과 dimension reduction(차원 축소)이 대표적인 예시이다.

 

 

3) reinforcement learning(강화 학습)

reinforcement learning에서 supervised learning, unsupervised learning과는 조금 다른 학습 방법이다.

reinforcement learning은 reward(보상)을 통해 reward의 합이 최대가 되는 방향으로 학습하는 것이다.

강화학습은 environment와 agent가 서로 상호작용하면서 일어난다.

t시점에서, 상태(S_t)일 때 agent가 action(a_t)를 하면 reward(R_t)를 받는다.

S_t일 때, a_t를 하면 받는 R_t는 사전에 정해져있다.

강화학습의 목표는 처음 상태(initial state)에서 목표 상태(goal state)에 도달할 때까지 받는 reward가 최대가 되도록 하는 것이다.

머신러닝의 개념에 대해 알아보자

머신러닝(machine learning)이란?

한국어로 직역하면 기계학습.

말 그대로 기계가 스스로 배우는 것이다.

흔히 기계는 멍청하다고 한다. 시키는 것 밖에 못하기 때문이다.

 

그래서 기계한테 작업을 시키려면, 프로그래머가 모든 경우의 수를 고려해서

A의 경우에는 a를 하고,

B의 경우에는 b를 하고,

C의 경우에는 c를 해. 라고 정해줘야 한다.

 

하지만,

1) 프로그래머가 모든 경우의 수를 생각할 수 없는 경우도 많고 ( 손글씨 )

2) 인간도 그 기준을 모르는 경우도 있다. ( 사진 속에서 고양이 찾기 )

 

예를 들어보자.

도형이 많이 그려진 그림 속에서 정사각형을 찾는다고 해보자.

이건 어렵지 않다.

검은색 선들 중에서 서로 수직이고, 길이가 같은, 연결된 4개의 선분을 찾으면 된다.

이렇게 기준이 명확한 건, 기계한테 기준을 주고 시킬 수 있다.

 

 

1) 하지만, 손으로 쓴 글자를 인식하는 경우를 생각해보자.

컴퓨터로 대충 그린 숫자 7만 해도 이렇게 다양한데, 기계한테 7은 이렇게 생긴거야~라고 명확한 기준을 말해줄 수 있을까?

 

2) 고양이를 묘사하라고 하면 어떻게 설명할 수 있을까?

사람마다 머릿속에 그려지는 이미지가 동일하지는 않지만, 우리는 사진을 보고 고양이인지, 아닌지 구별할 수 있다.

하지만 왜 이 사진이 고양이 사진인지 설명하라고 하면, 참 어렵다....

우리도 그 기준을 잘 모르는데, 컴퓨터한테 고양이는 이렇게 생겼으니까 고양이인지 아닌지 판단해봐~라고 시킬 수 있을까?

 

하지만, 머신러닝을 이용하면

1) 모든 경우의 수를 생각하기 어려운 경우,

2) 우리 조차 기준을 명확하게 모르는 경우

의 문제도 해결할 수 있다.

 

어떻게??

 

바로 학습을 통해.

 

여기서 학습이란,

1) 이미 답을 알고 있는 데이터를 통해, 답을 모르는 경우도 판단할 수 있도록 하는 것과

2) 여러 시나리오를 가정하고 계산해본 뒤, 가장 좋은 결과를 가져오는 것을 선택하는 것으로 생각할 수 있다.

 

비유하자면,

1) 연습 문제를 통해 유형을 익힌 뒤 시험을 보는 것과

2) 고양이 사진일 확률과 고양이 사진이 아닐 확률을 계산해서 더 확률이 높은 경우를 선택하는 것

으로 생각할 수 있다.

 

나름 풀어쓴 건데 와닿는 설명인지 잘 모르겠다....

 

다음 포스트에서는 머신러닝의 종류에 대해 알아보자

 

 

+ Recent posts