"심층신경망"의 두 판 사이의 차이
19번째 줄: | 19번째 줄: | ||
==문제점== | ==문제점== | ||
− | 기존의 인공신경망과 같이, 심층 신경망 또한 나이브(naive)한 방식으로 학습될 경우 많은 문제들이 발생할 수 있다. 그 중 과적합(Overfitting)과 높은 시간 복잡도(High Time Complexity)가 흔히 발생하는 문제들이다. 심층 신경망이 과적합에 취약한 이유는 추가된 계층들이 학습 데이터의 레어 디펜던시( | + | 기존의 인공신경망과 같이, 심층 신경망 또한 나이브(naive)한 방식으로 학습될 경우 많은 문제들이 발생할 수 있다. 그 중 과적합(Overfitting)과 높은 시간 복잡도(High Time Complexity)가 흔히 발생하는 문제들이다. 심층 신경망이 과적합에 취약한 이유는 추가된 계층들이 학습 데이터의 레어 디펜던시(Rare dependency)의 모형화가 가능하도록 해주기 때문이다. 과적합을 극복하기 위해서 웨잇 디케이(Weight decay) (L2–regularization)<ref>entiff, 〈[https://shwksl101.github.io/ml/dl/2019/01/27/L1_L2_regularization.html L1, L2 regularization 비교]〉, 《github》, 2019-01-27</ref> 또는 스파아시티(Sparsity) (L1–regularization)<ref>entiff, 〈[https://shwksl101.github.io/ml/dl/2019/01/27/L1_L2_regularization.html L1, L2 regularization 비교]〉, 《github》, 2019-01-27</ref> 와 같은 정규화(Regularization) 방법들이 사용될 수 있다. 그리고 최근에 들어서는 심층 신경망에 적용되고 있는 정규화 방법 중 하나로 드라파우트 정규화(Dropout Regularization)가 등장했다. 드라파우트 정규화에서는 학습 도중 은닉 계층들의 몇몇 유닛들이 임의로 생략된다. 이러한 방법은 학습 데이터(Training data)에서 발생할 수 있는 레어 디펜던시(Rare dependency)를 해결하는데 도움을 준다. |
38번째 줄: | 38번째 줄: | ||
*Bool, 〈[https://untitledtblog.tistory.com/150 합성곱 신경망 (Convolutional Neural Network, CNN)과 학습 알고리즘]〉, 《티스토리》, 2019-02-06 | *Bool, 〈[https://untitledtblog.tistory.com/150 합성곱 신경망 (Convolutional Neural Network, CNN)과 학습 알고리즘]〉, 《티스토리》, 2019-02-06 | ||
*Excelsior-JH, 〈[https://excelsior-cjh.tistory.com/183 순환 신경망(RNN, Recurrent Neural Network)]〉, 《티스토리》, 2018-10-25 | *Excelsior-JH, 〈[https://excelsior-cjh.tistory.com/183 순환 신경망(RNN, Recurrent Neural Network)]〉, 《티스토리》, 2018-10-25 | ||
+ | *entiff, 〈[https://shwksl101.github.io/ml/dl/2019/01/27/L1_L2_regularization.html L1, L2 regularization 비교]〉, 《github》, 2019-01-27 |
2019년 9월 19일 (목) 16:16 판
심층신경망(DNN : Deep Neural Network)은 입력층(input layer)과 출력층(output layer) 사이에 다중의 은닉층(hidden layer)을 포함하는 인공 신경망(ANN: Artificial Neural Network)을 말한다.
개요
심층신경망은 일정 수준의 복잡성을 가진 신경망, 즉 두 개 이상의 층을 가진 신경망이다. 심층신경망은 복잡한 방법으로 데이터를 처리하기 위해 정교한 수학 모델링을 사용하게 된다. 인공신경망은 인간의 뇌가 패턴을 인식하는 방식을 모사한 알고리즘으로, 이를통해 다양한 입력 데이터를 분류, 군집을 해석하고, 데이터에서 특정패턴을 인식하는 것이다. 심층신경망은 이러한 신경망이 다수의 층의 깊이로 구성된 개념이다. 입력 계층, 출력 계층, 그리고 그 사이에 하나 이상의 숨겨진 계층이 있는 네트워크이다. 각 계층은 일부에서 '기능 계층' 이라고 부르는 프로세스에서 특정 유형의 정렬 및 순서를 수행한다. 이러한 정교한 신경 네트워크의 주요 용도 중 하나는 라벨이 없거나 구조화되지 않은 데이터를 처리하는 것이다. 전통적인 기계학습 알고리즘은 하나의 입력과 출력층으로 이루어져 있지만, 심층신경망은 다수의 깊이로써 층마다 다른 층위의 특징이 학습이가능하다. 따라서 심층신경망은 데이터의 잠재적인 구조를 파악 할 수 있다는 장점이 있다. 심층신경망은 다중의 은닉층을 포함하여 다양한 비선형적 관계를 학습할 수 있지만, 학습을 위한 많은 연산량과 과하게 학습하여 실제 데이터에 대해 오차가 증가하는 과적합(Overfitting)이나 높은 시간 복잡도(High Time Complexity) 등의 문제가 발생할 수 있다.
특징
- 심층 신뢰 신경망
심층 신뢰 신경망(DBN: Deep Belief Network)은 알고리즘에 따라 비지도 학습 방법(unsupervised learning)을 기반으로 하는 심층신경망이다. 기계학습에서 사용되는 그래프 생성 모형(generative graphical model)으로, 딥 러닝에서는 잠재변수(latent variable)의 다중계층으로 이루어진 심층 신경망을 의미한다. 계층 간에는 연결이 있지만 계층 내의 유닛 간에는 연결이 없다는 특징이 있다. 심층 신뢰 신경망은 생성 모형이라는 특성상 선행학습에 사용될 수 있고, 선행학습을 통해 초기 가중치를 학습한 후 역전파 혹은 다른 판별 알고리즘을 통해 가중치의 미조정을 할 수 있다. 이러한 특성은 훈련용 데이터가 적을 때 굉장히 유용한데, 이는 훈련용 데이터가 적을수록 가중치의 초기값이 결과적인 모델에 끼치는 영향이 세지기 때문이다. 선행학습된 가중치 초기값은 임의로 설정된 가중치 초기값에 비해 최적의 가중치에 가깝게 되고 이는 미조정 단계의 성능과 속도향상을 가능하게 한다. 심층 신뢰 싱경망의 각각의 계층은 보통 RBM의 형태를 띄고 있다.
- 심층 오토인코더
심층 오토인코더(Deep AutoEncoder)는 2006년 제프리 힌턴(Geoffrey Hinton) 교수가 제안한 혁명적인 기계 학습 방식이다. 심층 오토인코더 이전 단계에서는 심층 학습에 대한 이해의 부족으로 인해 신경망이 다층인 경우 학습이 제대로 이루어지지 않는 문제가 있었다. 오토인코더는 신경망의 각 층을 단계적으로 학습해나가, 최종출력(Output)이 최초입력(Input)을 재현하도록 하는 것이 주된 특징이다. 심층 오토인코더는 은닉 층의 노드 개수가 입력층이나 출력층 보다는 적다. 입력과 출력 층의 차원(노드의 개수)은 동일하지만, 은닉 층은 입력층이나 출력층보다 차원이 낮아야 하기 때문이다. 만약, 은닉 층의 차원과 입력층이나 출력층의 차원이 동일하다면 입력받은 데이터를 그대로 출력하게 될 수 있다. 이 경우에는 아무런 의미가 없는 신경망이 된다. 은닉 층의 차원이 더 낮기 때문에, 신경망은 입력 데이터들을 압축하여 이들로부터 특징을 추출하고, 추출한 특징을 기반으로 입력을 최대한으로 재현한 출력 데이터를 내놓게 된다. 심층 오토인코더는 사람이 컴퓨터에게 입력 데이터에 대한 정보를 주지 않는다는 점에서 비지도학습 방식에 해당한다. 학습에 있어서 번거로운 과정인 지도가 필요 없다는 점에서 심층 오토인코더의 잠재력은 무궁무진하다.
- 합성곱 신경망
합성곱 신경망(CNN: Convolutional Neural Network)은 필터링 기법을 인공신경망에 적용함으로써 이미지와 같은 2차원 데이터 처리를 더욱 효과적으로 처리하기 위한 방법이다. 고정된 필터링 기법을 이용해 이미지를 처리하는 것과 달리, 합성곱 신경망은 행렬로 표현된 필터의 각 요소가 데이터 처리에 적합하도록 자동으로 학습되게 하는 것이 기본 개념이다. 예를 들어, 이미지를 분류 알고리즘을 개발하고자 할 때 우리는 필터링 기법을 이용하면 분류 정확도를 향상시킬 수 있을 것이다. 그러나 한 가지 문제점은 사람의 직관이나 반복적인 실험을 통해 알고리즘에 이용될 필터를 결정해야 한다는 것이다. 이러한 상황에서 합성곱 신경망을 이용한다면, 알고리즘은 이미지 분류 정확도를 최대화하는 필터를 자동으로 학습할 수 있는 것이다. 합성곱 신경망의 구조는 합성곱 계층 (convolutional layer)과 풀링 계층 (pooling layer)이라고 하는 새로운 층을 fully-connected 계층 이전에 추가함으로써 원본 이미지에 필터링 기법을 적용한 뒤에 필터링된 이미지에 대해 분류 연산이 수행되도록 구성된다.[1]
- 순환 신경망
순환 신경망(RNN: Recurrent Neural Network)은 시계열 데이터(time-series data)와 같이 시간의 흐름에 따라 변화하는 데이터를 학습하기 위한 알고리즘이다. 기준 시점(t)과 다음 시점(t+1)에 네트워크를 연결하여 구성한다. 순환 신경망은 순차적인 데이터학습에 특화된 인공신경망의 한 종류로, 내부의 순환적 구조가 들어있다는 특징이 있다. 순환구조를 이용하여, 과거의 학습을 통해 현재의 데이터 학습에 반영을 하게된다. 신경망 내부에 상태를 저장할 수 있게 해서 내부의 메모리를 이용해 시퀀스 형태의 입력을 처리해주어, 앞으로의 데이터를 예측하는 것이다. 순환 신경망은 필기체 인식이나 음성 인식과 같이 시변적 특징을 가지는 데이터를 처리할 수 있다는 특징이 있다. 그러나, 매 시점에 심층 신경망이 연결되어 있을 경우 오래 전의 데이터에 의한 기울기 값이 소실되는 문제(vanishing gradient problem)로 학습이 어려워진다. 이를 해결하는 대표적인 모델로 장단기 메모리(LSTM: Long-Short term Memory) 방식의 순환 신경망이 있다.[2]
문제점
기존의 인공신경망과 같이, 심층 신경망 또한 나이브(naive)한 방식으로 학습될 경우 많은 문제들이 발생할 수 있다. 그 중 과적합(Overfitting)과 높은 시간 복잡도(High Time Complexity)가 흔히 발생하는 문제들이다. 심층 신경망이 과적합에 취약한 이유는 추가된 계층들이 학습 데이터의 레어 디펜던시(Rare dependency)의 모형화가 가능하도록 해주기 때문이다. 과적합을 극복하기 위해서 웨잇 디케이(Weight decay) (L2–regularization)[3] 또는 스파아시티(Sparsity) (L1–regularization)[4] 와 같은 정규화(Regularization) 방법들이 사용될 수 있다. 그리고 최근에 들어서는 심층 신경망에 적용되고 있는 정규화 방법 중 하나로 드라파우트 정규화(Dropout Regularization)가 등장했다. 드라파우트 정규화에서는 학습 도중 은닉 계층들의 몇몇 유닛들이 임의로 생략된다. 이러한 방법은 학습 데이터(Training data)에서 발생할 수 있는 레어 디펜던시(Rare dependency)를 해결하는데 도움을 준다.
전망
강력한 딥러닝 알고리즘 중 하나가 심층 신경망(DNN)이다. 이는 서로 교차하는 선형, 비선형 처리 단위들로 구성된 수많은 계층에 기반을 두고 있으며 대형 알고리즘과 수많은 데이터로 훈련하는 신경망이다. 심층 신경망에 숨겨진 계층 10~20개가 존재할 수 있지만 보통 신경망에는 2~3개만 존재한다. 네트워크 계층이 많을수록 인식할 수 있는 특징이 늘어난다. 하지만 네트워크의 계층이 더 많을수록 계산에 더 많은 시간이 걸리고, 교육도 어려워진다. 심층 신경망을 구현할 수 있는 패키지로는 카페, 마이크로소프트 코그너티브 툴킷(Microsoft Cognitive Toolkit), 믹스넷(MXNet), 네온(Neon), 텐서플로(TensorFlow), 테아노(Theano), 토치(Torch) 등이 있다.
각주
- ↑ Bool, 〈합성곱 신경망 (Convolutional Neural Network, CNN)과 학습 알고리즘〉, 《티스토리》, 2019-02-06
- ↑ Excelsior-JH, 〈순환 신경망(RNN, Recurrent Neural Network)〉, 《티스토리》, 2018-10-25
- ↑ entiff, 〈L1, L2 regularization 비교〉, 《github》, 2019-01-27
- ↑ entiff, 〈L1, L2 regularization 비교〉, 《github》, 2019-01-27
참고자료
- 한국정보통신기술협회 공식 홈페이지 - http://www.tta.or.kr/
- TCPschool 공식 홈페이지 - http://tcpschool.com/
- 얇은생각, 〈인공지능 : Deep Neural Network(심층 신경망) 개념, 의미〉, 《티스토리 블로그》, 2019-05-17
- 〈심층신경망〉, 《네이버 지식백과》
- 넥서스커뮤니티, 〈ICT트렌드-심층신경망(DNN)〉, 《네이버 포스트》, 2018-08-06
- 오라클 클라우드, 〈데이터 분석 시장 전망〉, 《네이버 포스트》, 2018-02-23
- Tiger Stone, 〈오토인코더(AutoEncoder)의 개념〉, 《네이버 블로그》, 2019.01.14
- Bool, 〈합성곱 신경망 (Convolutional Neural Network, CNN)과 학습 알고리즘〉, 《티스토리》, 2019-02-06
- Excelsior-JH, 〈순환 신경망(RNN, Recurrent Neural Network)〉, 《티스토리》, 2018-10-25
- entiff, 〈L1, L2 regularization 비교〉, 《github》, 2019-01-27