본문 바로가기
AI/딥러닝

[AI] 인공신경망(딥러닝)의 역사 및 개요

by Jasonify97 2023. 9. 21.

01. 인공신경망(딥러닝)의 역사

1. 퍼셉트론의 등장(Perceptron)

  • 1957년 프랭크 로젠블라트가 퍼셉트론이라는 신경망 모델 발표
  • 인간의 두뇌 움직임을 수학적으로 구성하여 당시 굉장한 이슈가 되었으며 이후 인공신경망에 대한 기대가 폭증함
  • 신호(x1, x2,x3)를 입력으로 받아 하나의 신호(y)를 출력하는 기계
  • 신경망의 기원이 되는 알고리즘

  • 입력(Input) : AND 또는 OR 연산을 위한 입력 신호
  • 가중치(Weight) : 입력 신호에 부여되는 중요도 가중치가 크다 = 그 입력이 출력을 결정하는데 큰 역할을 한다.는 의미
  • 가중합(Weighted Sum) : 입력값과 가중치의 곱을 모두 합한 값
  • 활성화 함수(Activation Function) :  가중합에 대하여 임계치(Threshold)를 넘어가면 1, 그렇지 않으면 0을 출력함
  • 출력(Output) : 최종 결과(분류)

 

초기 퍼셉트론은 AND와 OR만 가능한 알고리즘이었다.

  • 퍼셉트론은 선형분리만 가능했었다(AND와 OR 사진처럼 선으로 그어 분류하는것)
  • 하지만 XOR연산은 못하는 한계가 있었다.

 

XOR연산 한계 극복?
  • 12년 후인 1969년 마빈 민스키와 시모어 페퍼트가 현재 퍼셉트론은 XOR연산이 불가능하다는 가설을 수학적으로 증명
  • 또한, "퍼셉트론을 여러 개 쌓아 올린 다층 퍼셉트론(MLP)를 통해 XOR연산에 대한 문제는 해결할 수 있지만,각각의 가중치편향을 학습시킬 방법이 없다" 라는 결론을 내놓으며 퍼셉트론을 이용한 학습의 한계를 언급함

 

2. 역전파의 고안(Backpropagation)

  • 5년 후인 1974년, 폴 워보스가 박사과정 논문에서 역전파를 제안 
  • 가중치와 편향을 학습하기 위한 방법으로 거안
  • 신경망의 오차(예측값 - 실제값)를 출력층에서부터 입력층으로 피드백하여 각층(Layer)의 가중치와 편향을 업데이트 하는 원리

 

XOR 문제는 해결됬지만 또 다른 문제 
  • 12년 후인 1986년 제프리 힌튼이 또 다른 역전파 방법을 고안
  • 제프리 힌튼이 제안한 역전파가 XOR 문제뿐만 아니라 더 복잡한 문제도 해결할 수 있음이 증명되자 다시 사람들의 관심을 끌기 시작했다.
  • 이후 한동안 인공신경망 연구는 큰 진전이 있었지만, 다음이유로 긴 침체기로 돌입한다.
    • 신경망의 깊이가 깊어질수록 원하는 결과를 얻을 수 없음
    • 신경망 학습에 최적화된 하이퍼파라미터에 대한 이론적인 근거가 없음

  • 기존 이론으로는 신경망이 깊어질수록 학습력이 좋아져야 하는데 예상한 대로 결과가 나오지 않음
  • 역전파를 수행할 때 출력층에서 멀리 떨어진 층에서는 기울기가 급속히 작아지는 기울기 소멸 문제(Vanishing Gradient),
  • 기울기가 너무 커지는 기울기 발산(Exploding Gradient)문제가 발생해 학습력이 떨어짐

 

기울기 계산 - 경사 하강법

  • 경사하강법은 오류가 작아지는 방향으로 가중치(w)값을 보정하기 위해 사용
  • 최초 가중치에서 시작해 미분을 적용한뒤 미분값(기울기 값)이 계속 감소하는방향으로 업데이트하며, 업데이트가 끝나는 전역 최소점에서 w를 반환한다.

  • 손실 함수에는 지역최소점(Local Minimum)과 전역 최소점(Global Minimum)이 있다. 
  • 만약 가중치와 오차에 대한 그래프가 위와 같을때 지역 최소점을 전역 최소점으로 생각하고 업데이트를 마친다면, 그만큼의 오차가 발생한다는 것임

 

3. 딥(Deep)의 출현

  • 2006년, 역전파를 고안했었던 제프리 힌튼이 가중치의 초기값을 제대로 설정하면, 깊이가 깊은 신경망도 학습이 가능하다는 연구를 선보임
  • 2007년, 벤지오(Bengio) 팀이 오토인코더(Autoencoder)를 사용하여 좀더 간단한 사전훈련 방법을 제안
  • 이때부터 인공신경망(Neural) 대신 딥(Deep)이라는 용어를 사용하기 시작

02. 딥러닝의 개요

1. 인공신경망의 개념

  • 딥러닝의 기원은 인공신경망이며, 사람의 신경망 구조에서 착안해 만들어짐

2. 딥러닝의 개념

가중합(Weighted Sum)

하나의 노드에 대한 가중합

  • 입력값 x 가중치 + 편향 = 가중합
  • x : 외부에서 들어오는 신호
  • w : 신호를 연결하는 가중치
  • b : 출력값을 조절하는 편향
  • y = 외부로 나가는 신호
활성화 함수(Activation Function)
  • 입력 신호가 출력 결과에 미치는 영향도를 조절하는 매개변수
  • 출력 값을 0~1 사이의 값으로 변환해야 하는 경우에 사용
  • 일반적으로 비선형을 위해 사용

 

1) Sigmoid 함수

  • x값의 변화에 따라 0~1까지의 값을 출력하는 S자형 함수
  • 로지스틱(Logistic) 함수라고도 함

 

2) 하이퍼볼릭 탄젠트(Hyperbolic Tangent)

  • Sigmoid와 유사하지만 -1 ~ 1값을 가지며, 데이터의 평균이 0을 가짐

 

3) 렐루(ReLU)

  • x가 음의 값을 가지면 0, 양의 값을 가지면 x를 그대로 출력
  • 함수 형태도 max(0,x)로 계산이 간단하며, 학습속도가 빠름

 

4) 리키렐루(LeakyReLU)

  • ReLU함수와 유사하지만, 가중치 곱의 합이 0보다 작을 때의 값도 고려함
  • 이 함수를 ReLU함수의 '죽은 렐루' 현상을 보완함

3.  딥러닝학습

순전파(Foward Propagation)

  • 입력층에서 출력층 방향으로 연산이 진행되면서 최종 출력값(예측값)이 도출 되는 과정
손실 함수(Loss Function)

  • 예측값과 실제값의 차이를 구하는 함수
  • 두 값의 차이가 클 수록 손실함수의 값은 커지며, 차이가 작을수록 손실함수의 값은 작아진다.
옵티마이저(Optimizer)

  • 일반적으로 전체 데이터를 한번에 학습하게 되면 계산량이 많아져 속도가 느려질 수 있기 때문에 배치를 이용한 학습을 함
역전파(Backward Propagation)

  • 역전파는 경사 하강법을 이용해 오차를 줄이는 방향으로 가중치를 수정함
  • 가중치를 수정할 때에는 순전파에서 계산한 결과의 편미분값을 오차에 곱해 출력층 - 은닉층 - 입력층 순서로 전달함

03. 딥러닝 유형

1. 심층 순방향 신경망(Deep Feedforward Network, DFN)

DFN

  • 딥러닝에서 가장 기본으로 사용하는 인공신경망이며 입력층, 은닉층, 출력층으로 이루어져 있음
  • 이때 중요한 것은 은닉층이 2개 이상이어야 한다는 점
  • 만약 DFN의 은닉층이 수십 ~ 수백 개로 많으며,  입력 데이터가 시간 순서에 따른 종속성을 가질 경우 시계열 데이터 처리에 한계가 있음
  • 그래서 이러한 문제점을 해결하기 위해 제안된 것이 순환 신경망임 

 2. 순환 신경망(Recurrent Neural Network, RNN)

  • 시계열 데이터와 같이 시간적으로 연속성이 있는 데이터를 처리하기 위해 고안된 인공신경망
  • 시계열 데이터 : 일정한 시간 동안 관측되고 수집된 데이터(주식, 날씨)

RNN

  • 시계열 데이터는 데이터의 특성상 앞에 입력된 데이터가 뒤에 입력된 데이터에 영향을 미침
RNN과 DFN의 차이
  • RNN은 은닉층의 각 뉴런에 순환 구조를 추가하여 이전에 입력된 데이터가 현재 데이터를 예측할 때 다시 사용될 수 있도록 함
  • 따라서 현재 데이터를 분석할 때 과거 데이터를 고려한 정확한 데이터 예측을 함
  • 하지만, RNN역시 신경망 층이 깊어질수록 먼 과거의 데이터가 현재의 영향을 미치지 못하는 문제가 발생함
  • 이를 "장기 의존성(Long Term Dependency)"문제라고 하며, 이를 해결하기 위해 제안된 것이 LSTM이다.

 

3. LSTM(Long Short Term Memory)

LSTM

  • RNN과 다르게 신경망 내에 메로리를 두어 먼 과거의 데이터도 저장할 수 있도록 함
  • 입출력을 제어하기 위한 소자를 두었는데, 이것을 게이트(Gate)라고 함
  • 게이트는 입력 게이트, 출력 게이트, 망각 게이트가 있음
LSTM에서 각 게이트의 역할

입력게이트 : 현재의 정보를 기억하기 위한 소자이다. 과거와 현재 데이터가 Sigmoid 함수와 Hyperbolic 함수를 거치면서 현재 정보에 대한 보존량을 결정

망각 게이트 : 과거의 정보를 어느 정도까지 기억할지 결정하는 소자

출력 게이트 : 출력층으로 출력할 정보의 양을 결정하는 소자

 

4. 합성곱 신경망(Convolutional Neural Network, CNN)

이미지 인식

  • 인간의 시각적 처리 방식을 모방한 신경망
  • 이미지 처리가 가능하도록 합성곱(Convolution) 연산 도입
CNN 구조

CNN 구조

합성곱층(Convolutional Layer)
  • 이미지를 분류하는 데 필요한 특정(Feature) 정보들을 필터를 이용해 추출하는 역할
  • 합성곱층에 필터가 적용되면 이미지의 특징들이 추출된 "특성 맵"이라는 결과를 얻을 수 있음
풀링층(Pooling Layer)
  • 합성곱층의 출력데이터를 입력으로 받아서 출력 데이터인 활성화 맵의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용
  • 처리 방법 : MaxPooling, MinPooling, AveragePooling, 
완전연결층(Fully Connected Layer)
  • 합성곱층과 풀링층으로 추출한 특징을 분류하는 역할
  • CNN은 합성곱층에서 특징만 학습하기 때문에 DFN이나 RNN에 비해 학습해야하는 가중치의 수가 적어 학습 및 예측이 빠르다는 장점이 있음

5. 워드 임베딩(Word Embedding)

  • 단어를 벡터로 표현하는 방법
  • 기계가 사람의 언어를 이해할 수 있도록 변환
원 핫 인코딩

  • 범주형 변수를 숫자형으로 바꾸는 방법이며 해당되는 것을 1 해당되지 않으면 0으로 바꿔주는 인코딩 방법
워드 투 벡터(Word2Vec)
  • 비슷한 context에 등장하는 단어들은 유사한 의미를 지닌다는 이론에 기반하여 단어를 벡터로 표현해 주는 기법
  • 주변 단어를 알면 특정 단어를 유추할 수 있다라는 원리를 기반으로 함
  • 대표적인 모델로는 CBOW와 skip-gram이 있음
  • CBOW : 전체 context로부터 특정 단어를 예측하는 것
  • Skip-gram : 특정 단어로 부터 전체 context의 분포를 예측하는 것
TF-IDF
  • 단어마다 가중치를 부여하여 단어를 벡터로 변환하는 방법
  • TF(Term Frequency) : 특정 문서에서 특정 단어가 등장하는 횟수
  • DF(Document Frequency) : 특정 단어가 등장한 문서의 수
  • IDF(Inverse Document Frequency) : DF에 반비례하는 수
Fasttext
  • 페이스북에서 개발한 워드 임베딩 방법으로 단어를 벡터로 변환하기 위해 부분단어(Sub Words)라는 개념을 도입함
  • 부분 단어를 사용하면 Word2Vec에서 문제가 되는 "모르는 단어"문제를 해결할 수 있기 때문에 임베딩에서 많이 사용되는 모델 중 하나
적대적 생성 신경망(Generative Adversarial Network, GAN)
  • 두 개의 신경망 모델이 서로 경쟁하면서 더 나은 결과를 만들어 내는 강화학습
  • 특히 이미지 생성 분야에서 뛰어난 성능을 보임
  • 생성모델(Generator Model)과 판별모델(Discriminator Model)이라고 하며 각각은 서로 다른 목적을 가지고 학습
  • ex) 생성모델 : 위조지폐범, 판별모델 : 경찰