공부한 기록/인공지능

인공지능(7) - 인공신경망과 딥러닝

YongE 2023. 5. 4. 21:54

인공신경망


인공신경망은 인간의 두뇌와 신경 시스템을 닮은 정보처리소자이다. 연결주의 기법으로써 뉴런들을 연결하여 문제해결 모델을 만든다.

 

인공 뉴런의 구조

인공 뉴런의 구조는 위와 같다. 위의 변형함수는 여러 가지가 있는데 하드리미터, 임계값, 시그모이드가 그것이다.

임계값은 어느 값을 기준으로 0과 1을 나누고, 시그모이드는 0과 1의 사이값을 취한다고 보면 된다. 하드리미터는 특정값보다 크면 1, 작으면 -1로 한다.

 
인공 신경망에서의 학습과정은 다음과 같다.
  1. 입력 값을 이용하여 인공 뉴런의 출력 값을 계산
  2. 인공 뉴런이 계산한 출력 값과 사용자가 기대하는 출력 값을 비교
  3. 기대하는 출력 값을 생성할 수 있도록 가중치 조절

이러한 인공신경망을 보여주는 대표적인 예가 단층인공뉴론 퍼셉트론이다.

퍼셉트론의 학습과정은 다음과 같다.

가중치 W의 초기값이용 Y 계산  :  if X1*W1+X2*W2  < Θ (0.5) then Y = 0  else Y = 1

차이(d) = F-Y 계산 (F 원하는 결과값)

학습 규칙: 새로운 가중치 Wi’ = Wi + a*d*Xi  (a학습률)

모든 입력 집합(epoch)에 대해 d = 0 이 될 때까지 1 ~ 3 반복

 

실제로 다뤄보자. 위는 하나의 인공뉴런이 or 연산자 학습하는 과정에서 필요한 가정의 테이블이다.

 

1)임계치 Θ = 0.5 , 학습률 a = 0.2
   초기 가중치: W1=0.1, W2=0.3

2) 입력값을 이용  Y생성

    X1*W1+X2*W2 > 0.5 이면 Y=1

    X1*W1+X2*W2 <= 0.5 이면 Y=0

3) 차이(d)=F-Y 계산

    새로운 가중치 Wi’=Wi + a*d*Xi

4) 모든 입력 집합에 대해 d = 0 이면 완료.

   아니면,   2~3 반복

5) 마침내 step 4에서 d차이가 0이 되었고 학습은 종료된다.

 

 

 

 

 

 

 

 

다층(심층)신경망과 딥러닝


XOR 연산의 경우 입력값이 (0,0) 또는 (1,1)일 때는 출력이 0이 되고 입력값이 (0,1) 또는 (1,0)일 때는 출력이 1이 되어야 한다. 그러나 하나의 퍼셉트론으로는 이러한 연산을 구현할 수 없다. 이는 퍼셉트론이 하나의 직선으로 데이터를 분리하기 때문이다. XOR 연산에서는 두 직선으로 데이터를 분리해야 하기 때문에 단층 퍼셉트론으로는 구현할 수 없다.

 

이를 해결하기 위해서는 다층 신경망을 사용해야 한다. 다층 신경망은 여러 개의 층으로 구성되어 있으며, 각 층은 여러 개의 뉴런으로 이루어져 있다. 입력층, 은닉층, 출력층으로 이루어진 다층신경망은 입력층에서 입력을 받아 은닉층에서 계산을 하고 출력층에서 결과를 출력한다. XOR 연산을 구현하기 위해서는 두 개의 뉴런으로 이루어진 은닉층과 하나의 뉴런으로 이루어진 출력층으로 구성된 다층 신경망을 사용할 수 있다. 첫 번째 뉴런은 입력값의 AND 연산을, 두 번째 뉴런은 입력값의 OR 연산을 수행한다. 이후, 두 뉴런의 출력값을 입력값으로 받는 출력층에서는 두 값 중 하나가 1인 경우에만 1을 출력하도록 구성하면 XOR 연산을 구현할 수 있다.

 

다층 신경망의 예

 

 

인공 신경망의 기술


  • CNN : 이미지 인식 분야에서 많이 사용하는 기술이다. 인간의 시신경 구조를 모방하였다. 이미지 인식과 같이 특징을 자동으로 학습하면서 형태 변이를 효과적으로 학습하였다.
  • RNN : 순환신경망이다. 언어모델링이나 음성인식 자동번역 분야에서 사용한다. 음성, 음악, 문자열 등 순차적인 시계열 데이터 처리에서 탁월한 성능을 보여준다.

 

인공신경망은 불완전한 입력정보로도 적정한 결과를 생성하는 일반화와 한 두 개의 뉴런이 고장나도 전체 시스템에 영향을 주지 않는 고장허용성이 있지만 설명기능이 약하고, 학습에는 많은 데이터와 시간이 필요하며, 병렬처리 하드웨어 비용이 비싸다는 단점이 있다.

 

 

심층신경망의 난제와 해결


심층신경망의 난제와 해결법은 각각 아래와 같다.

  • 그래디언트 소실 문제 : 시그모이드 함수는 많이 사용되지만 출력값이 1 이하의 수이므로 곱해질수록 너무 작은 값이 되어 학습이 잘 되지 않는다.
    • 해결법 - ReLU 함수 : 상한값을 두지 않게 보정한 ReLU함수를 사용한다. 입력값이 양수일 경우, 입력값에 상관없이 동일한 미분값은 1이다.
    • 해결법 - 자동인코더 Autoencoder : 정보압축기를 사용해 한 층씩 학습시키는 방법이다. 은닉층의 갯수가 많을 때 유용하다.
  • 과적합 문제 : 심층신경망 학습 시에 사용된 훈련용 예제에 과도하게 적응돼 실제 사용 시 틀린 답을 내는 문제다.
    • 해결법 - 드롭아웃 : 학습 시에 일부 노드만 무작위로 골라 학습시킨다. 
  • 불충분한 학습 데이터와 계산량 문제
    • SNS이용 증가로 빅데이터 확보, 새로운 GPU의 등장으로 개선중.
728x90
반응형

'공부한 기록 > 인공지능' 카테고리의 다른 글

인공지능(6) - 기계학습과 유전 알고리즘  (0) 2023.05.03
인공지능(5) - 퍼지논리  (0) 2023.05.02
인공지능(4) - 논리  (0) 2023.05.01
인공지능(3) - 탐색  (2) 2023.04.09
인공지능(2) - 지식 표현  (0) 2023.04.08