파이썬으로 만드는 인공지능.3

심준보·2023년 2월 5일
0

CNN

목록 보기
3/4
post-thumbnail

6.3 컨볼루션 신경망의 학습

깊은 다층 퍼셉트론이 노드를 연결하는 가중치를 학습하는 점과 비교하면 두 신경망의 학습 알고리즘은 크게 다를 것으로 보인다.
하지만 이들이 사용하는 손실 함수와 옵티마이저는 같다.

6.3.1 손실 함수와 옵티마이저

  • 손실함수 : 신경망이 범하는 오류를 측정한다.

컨볼루션 신경망의 내부 구조는 깊은 다층 퍼셉트론과 다르지만 출력층은 같다.

예)

숫자 인식을 하는 신경망이라면 출력층에 노드가 10개 있고 softmax or tanh활성 함수의 결과를 출력한다.


  • 옵티마이저 ; 손실 함수의 최저점을 찾아간다.

이때 매개변수가 어느 방향으로 변해야 손실 함수의 최저점에 가까워지는지 알아야 하는데 , 손실 함수를 매개변수로 미분하여 방향을 알아낸다.

컨볼루션신경망은
커널이 매개변수에 해당하고 깊은 다층 퍼셉트론은 에지의 가중치가 매개변수라는 점만 다르고 미분으로 방향을 얻어내는 원리는 똑같다.



6.3.2 통째 학습

  • 고전적인 컴퓨터 비전에서는 수평에너지와 수직 에너지 특징을 추출하는 커널을 사람이 직접 설계했다. 이런 설계방식을 수작업 특징이라고 한다.
    수자업 특징은 사람의 직관으로 설계되므로 어느 정도 수준의 성능을 제공하지만 , 자연 영상과 같이 복잡한 데이터에서는 아주 낮은 성능에 머물러 있다.
  1. 딥러닝 이전의 수작업 특징

패턴 ->특징 추출 -> 분류 -> 부류 순으로 진행

  1. 딥러닝 이후의 통째 학습

패턴->특징 + 분류 -> 부류 순으로 진행

  • 특징 추출과 분류를 동시에 학습으로 알아내는 딥러닝 방식이다.

  • 딥러닝은 특징을 학습으로 알아내기 때문에 특지으 학습을 한다고 말한다.

  • 입력 패턴에서 최종 출력에 이르는 전체 과정을 한꺼번에 학습한다는 의미에서 통째 학습 end to end learning 을 한다고 말한다.

  • 통째 학습은 딥러닝의 월등한 성능을 설명하는 가장 중요한 요인이다.


특징 추출과 분류를 동시에 학습하는 딥러닝의 통째 학습

  • 앞부분의 컨볼루션층과 폴링층 : 특징 추출

  • 뒷부분의 완전연결층 : 분류

컨볼루션 신경망의 학습 알고리즘은 깊은 다층 퍼셉트론과 마찬가지로 오류 역전파 알고리즘을 사용한다.
단지 , 최적화해야 할 매개변수가 완전 연결층의 가중치 뿐만 아니라 컨볼루션층의 커널도 포함한다는 점만 다르다.
커널과 가중치를 난수로 초기화한 다음 , 오류를 줄이는 방향으로 커널과 가중치를 개선하면서 최저점으로 수렴한다.



6.3.3 컨볼루션 신경망의 성능이 월등한 이유

  1. 통쨰 학습을 한다.
    • 특징 추출과 분류를 동시에 최적화하는 학습 방법은 따로 최적화한 후에 결합하는 학습 방법보다 뛰어나다.
  2. 특징 학습을 한다.
    • 주어진 데이터셋에 최적인 특징 추출 알고리즘을 학습으로 알아내기 때문에 상당한 성능 향상이 있다.
  3. 신경망의 깊이를 더욱 깊게 하여 풍부한 특징을 추출한다.
    • 컨볼루션층은 부분 연결성과 가중치 공유로 인해 매개변수 개수가 적다 . 따라서 신경망의 깊이를 충분히 깊게 해도 학습이 잘 된다.
      수백 ~ 층을 사용하기도 한다.
  4. 컨볼루션 연산은 데이터의 원래 구조를 그대로 유지한 채 특징을 추출한다.
    • 입력 데이터가 컬러 영상의 3차원 텐서라면 컨볼루션층이 출력하는 특징 맵도 3차원 텐서이다. 영상의 한 화소는 상하좌우에 있는 이웃 화소와 상관관계가 큰데 , 컨볼루션 연산은 상관 관계 정보를 유지하는 강점이 있다.
      하지만, 깊은 다층 퍼셉트론에서는 영상을 1차원으로 펼쳐 입력하기 때문에 이웃 정보가 사라진다.


이상으로 컨볼루션 신경망의 학습에 대한 이야기를 마치도록 하겠습니다 .
감사합니다.



더 나은 개발이 되길 바라며:)

profile
밑거름이라고생각합니다

0개의 댓글