딥러닝(Deep Learning) 이란?
인간의 두뇌와 비슷한 모양의 대형 인공신경망(ANN, Artificial Neural Networks) 을 형성하는 일종의 기계학습. 인공신경망에 학습 알고리즘과 데이터를 공급함으로써 컴퓨터가 스스로 학습하여 판단할 수 있도록 한다. 기존에 사람이 직접 데이터의 특징을 분석하여 모델을 학습 시켜야 했던 지도학습과 다르게 데이터의 특징을 스스로 추출하여 학습하게 한다. 자가학습 할 수 있는 딥러닝 모델은 머신러닝 모델과 다르게 자동으로 대규모 데이터의 중요한 패턴을 학습하고 이를 토대로 의사 결정이나 예측을 수행한다.
딥러닝(Deep Learning)의 신경망(Neural Network)
신경망은 생물학에서 뉴런(신경세포)의 연결구조를 가리키는데 이를 본뜬 네트워크 구조를 인공 신경망(ANN, Artificial Neural Networks) 이라고 한다. 생물학적 신경망에서 하나의 뉴런은 다른 뉴런에게 신호를 받고 또 다른 뉴런에게 신호를 전달하는 단순한 역할을 한다. 인간의 뇌는 이런 뉴런이 약 1000억 개가 모여 만든 신호의 흐름을 기반으로 다양한 사고를 진행 하는데 이것을 컴퓨터로 구현한 것이 딥러닝(Deap Learning) 에서의 신경망이다. (인공지능 분야에서 신경망이란 보통 인공신경망을 지칭하며 두 용어를 따로 구분하지 않고 사용한다.)
인공신경망은 하나의 공식적인 정의는 없다. 그러나 어떠한 통계학적 모델들의 집합이 다음과 같은 조건을 만족하면 신경(neural) 이라고 부른다.
조건1. 학습 알고리즘에 의해 조정이 가능한 숫자로 이루어진 가중치들의 집합을 매개변수에 포함
조건2. 입력의 비선형 함수를 유추 가능
아래 포스팅을 참고하면 위 조건을 이해하기 쉽다.
[ML-T][NN-B] 01. 퍼셉트론(Perceptron) 이란?
위 조건을 만족하는 신경(neural)들이 망을 이루면 인공신경망이 된다. 망을 이룬다는 것은 여러 층의 뉴런 간의 연결을 의미한다. (생물학적 신경망에서 뉴런간에 신호를 주고받는 것과 같다.)
신경망(Neural Network)의 구조
신경망은 입력층(Input Layer), 은닉층(Hidden Layer), 출력층(Output Layer) 로 구성된다. 층이란 뉴런의 집합을 말하며 신경망을 시각화 하면 아래와 같은 그림이 나온다.
- 입력층(Input Layer) : 입력 데이터 셋의 속성들을 각 노드에 구성하고 입력신호를 다음층으로 보내다.
- 은닉층(Hidden Layer) : 출력되기 전 입력노드에서 전달 받은 신호를 처리한다.
- 출력층(Output Layer) : 은닉층에서 받은 신호를 활성화하여 최종 결과를 산출한다.
이외에도 가중치(weight), 편향(bios), 활성화함수(Activation function) 등 신경망을 구성하는 요소가 있지만 자세한 내용은 NN(Neural network)(Basic) 카테고리 에서 포스팅 하겠다.
신경망은 뉴런, 즉 노드의 갯수를 늘려 조합할 수록 더욱 복잡한 패턴을 인식하고 분류 할 수 있게 된다. 이때, 입력층과 출력층은 보통 수가 고정되어 있기 때문에 은닉층에서 뉴런의 갯수를 조정한다.
은닉층의 뉴런의 갯수를 조정하는 방법은 두가지가 있는데 은닉층 자체의 갯수를 늘려 층을 여러개 만드는 것과 은닉층내 노드의 갯수를 늘리는 것이다. 이 방법은 보다 높은 정확도의 신경망 모델을 만들어 내는데 만약 정도를 넘어서게 되면 치명적인 문제를 유발한다.
* 은닉층의 갯수를 늘리면?
은닉층이 늘어나면 신경망이 깊어진다(심층)고 표현하며 이러한 모델을 심층 신경망(Deep Neural Network) 이라고 하며 이런 심층 신경망을 학습 시키는 기법을 딥러닝(Deep Learning) 이라고 한다. 하지만 층이 정도에 벗어날만큼 깊어지게 되면 기울기소실 (Vanishing Gradient) 이 발생한다.
* 은닉층의 노드의 갯수를 늘리면?
은닉층의 노드의 갯수가 늘어나면 정확도가 증가 하게 된다. 하지만 정도에 벗어나게 되면 오버피팅(Overfitting) 이 발생하기도 하고 오히려 정확도가 낮아지는 예측 모델이 생성된다.
기울기 소실과 오버피팅에 대해서는 추후 포스팅 하자. 그러면 두 문제를 해결하기 위해서 어떻게 해야 할까? 은닉층의 갯수나 은닉층의 노드의 갯수는 결국 사용자가 임의로 설정이 가능한 hyper Parameter 이다. 결국 여러 가지 케이스를 넣어보며 데이터와 상황에 맞는 '적당한' 값을 찾아야 한다. (딱 정해진 지표가 없다.)
출처 : https://forensics.tistory.com/22
신경망(Neural Network)의 종류
신경망은 그 기초가 되는 퍼셉트론(Perceptron)을 변형/조합 되어 굉장히 다양한 종류가 만들어졌고 만들어지고 있다. 아래의 세가지 기준으로 신경망의 유형을 나눌 수 있다.
- 방향성
신경망 내 뉴런들이 다음 뉴런으로 신호를 전달할때(뉴런간의 연결) 어떤 방향으로 흐르는지에 따라 아래와 같이 구분할 수 있다.
* 전방/순방향/전방전달 신경망(FFNN, Feed-forward Neural Network)
최초로 고안된 인공신경망이자 가장 단순한 구조를 가진 신경망이다. 뉴런들의 모든 연결이 왼쪽에서 오른쪽으로 순차적으로 진행되고 DataSet 내 각각의 입력 데이터에 대해 독립적으로 학습을 진행한다. 대표적으로 MLP(Multi-Layer Perceptron), CNN(Convolutional Neural Network) 등이 있다.
* 순환/재귀 신경망(RNN, Recurrent neural network)
이전 데이터가 현재의 데이터에 영향을 주는 Data set을 학습시키기 위해 고안된 신경망이다. 각 데이터의 입력과 출력이 독립적이었던 FFNN과 다르게 시간 t-1에서의 입력/결과가 t에서의 입력/결과에 영향을 준다. 이런 데이터들을 시계열(time series) 데이터 라 하고 이 데이터를 학습시키기 위해 신경망은 순환적인 구조를 가진다. (출력층의 결과가 다시 입력층으로 입력되어 피드백(feedback) 작용을 한다.) 대표적으로 FRNN(Fully Conncted RNN), RMLP(Recurrent Multilayer Perceptron), LSTM(Long Short-Term Memory) 등이 있다.
- 층 깊이
신경망에 구성된 층의 갯수에 따라 아래와 같이 구분 할 수 있다.
* 얕은 신경망(SNN, Shallow Neural Network)
은닉층의 갯수가 1~2개 인 신경망
* 깊은 신경망(DNN, Deep Neural Network)
은닉층의 갯수가 3개 이상인 신경망
- 신경망 모델
신경망 모델은 크게 두 가지로 나뉠 수 있다. 바로 분류/판별 모델(discriminative model) 과 생성 모델(generative model) 이다. 분류모델은 학습 결과와 실제값 간의 오차(차이)를 줄이는 것을 목표로 하고 생성모델은 데이터 간의 분포를 통해 유사한 패턴을 생성 하는 것을 목표로 한다. (분류 모델과 생성모델은 추후에 자세히 포스팅 하자.)
위의 두 모델 중 어떤 것을 구현 하냐에 따라 아래와 같이 신경망을 구분 할 수 있다.
* 결정론 신경망(Deterministic Neural Network)
분류/판별 모델(discriminative model) 을 도출하는 신경망이다. 타겟(실제값)과 가설(학습의 결과) 간의 차이점에 주목하여 오차를 줄이는 것일 목표로 한다. 분류모델은 레이블 정보가 필요하기 때문에 지도학습에 속한다.
* 확률적 신경망(Stochastic Neural Network)
분류모델도 도출 할 수 있지만 생성 모델(generative model)을 도출하는데 주목하는 신경망이다. 데이터 간의 분포를 통해 우리가 알 수 없는 미지의 상황을 모델링 한다. 생성모델은 레이블 정보가 있어도 되고 없어도 상관 없다. 따라서 지도와 비지도 학습 두 영역에 다 포함되는 신경망이다.
대표적으로 RBM(Restricted Boltzmann Machine), DBN(Deep Beilf Network), GAN(Generative adversarial network) 등이 확률적 신경망에 포함된다. 이외 신경망은 대부분 결정론 신경망 이라고 볼 수 있다.
위에서 대표적인 신경망에 대해 이야기 하였지만 이외에도 많은 신경망들이 존재 한다. 더 많은 종류의 신경망과 그 신경망에 대한 자세한 포스팅은 추후에 NN(Neural network)(Deep) 카테고리에서 다루자. 신경망들은 기존에 있던 보안, 추가, 수정하여 점점 다양한 형태들이 나오고 있다. 아래는 현재까지 개발된 신경망 알고리즘에 대해 시각화 해놓은 자료이다.(출처 : https://www.asimovinstitute.org/neural-network-zoo/)
신경망을 선택할 때에는 가지고 있는 Data Set의 성격(독립적인가, 데이터간의 연관이 있는가), 종류(raw data, 텍스트, 음성, 이미지, 영상 등), 레이블의 유무 등의 정보와 해결하고자 하는 문제에 대한 이해(분류 문제인지, 예측 문제인지 등) 가 필요하다. 이것을 바탕으로 구현하고자 하는 모델을 구성할 신경망을 선택한다.
출처:
딥러닝이란?
http://tcpschool.com/deep2018/deep2018_deeplearning_intro
http://tcpschool.com/deeplearning/deeplearning
딥러닝의 신경망:
https://ko.wikipedia.org/wiki/%EC%9D%B8%EA%B3%B5_%EC%8B%A0%EA%B2%BD%EB%A7%9D
신경망의 구조:
https://m.blog.naver.com/slykid/221638954538
http://daddynkidsmakers.blogspot.com/2017/02/blog-post_24.html
신경망의 종류:
https://velog.io/@cha-suyeon/%EB%8B%A4%EC%B8%B5-%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0
https://untitledtblog.tistory.com/116
https://st-soul.tistory.com/200
https://angeloyeo.github.io/2020/10/02/RBM.html
https://ratsgo.github.io/generative%20model/2017/12/17/compare/
https://wordbe.tistory.com/entry/PGM-part3-RBMRestricted-Boltzmann-Machine-DBNDeep-Belief-Network
https://jayhey.github.io/semi-supervised%20learning/2017/12/08/semisupervised_generative_models/
'Machine Learning(이론) > Basic' 카테고리의 다른 글
[ML-T][Basic] etc... (0) | 2021.10.15 |
---|---|
[ML-T][Basic] 02. 기계학습(ML, Machine Learning) (0) | 2021.10.11 |
[ML-T][Basic] 01. 인공지능(AI, Artificial Intelligence) (0) | 2021.10.10 |
[ML-t][Basic] 00. Intro (0) | 2021.10.05 |