본문 바로가기
AI/이미지

딥러닝 - 1. 기초 개념

by eurowondollaryen 2020. 11. 7.

서론

최근 운좋게도 무료로 AI 단기 속성 강좌를 듣기 위한 테스트를 통과하게 되었습니다.

짧은 수업 시간으로 인해 개인적으로 복습, 정리가 필요할 것 같다는 생각이 들어, 이 포스트를 쓰게 되었습니다.


AI, ML, Deep Learning

Artificial Intelligence > Machine Learning > Deep Learning

  • 쉽게 설명하자면, Deep Learning은 ML의 기법들 중 하나입니다.
  • 어떤 학습 방법을 사용할건지는 어떤 데이터를 다루느냐에 따라 바뀌는데, 이미지의 경우 Deep Learning을 사용합니다.
  • Deep Learning은 어떤 패턴은 존재하지만, 그것을 특정지어서 걸러내기 어려울 때 사용하는 기법입니다.
  • 예를 들어, 얼굴을 보고 사람의 성별을 구분지으려 할 때, 사람은 바로 구별이 가능하지만, 이것을 기계에게 처리하도록 하려면... 기준을 어떻게 잡아야 할 지 불분명합니다.
  • 이럴 때 딥러닝을 활용하면 정확한 과정은 알 수 없지만, 분류할 수 있습니다.

단편적인 예시는 위와 같이 언급되었지만, 문제의 성질에 따라 훨씬 다양한 방법이 사용됩니다.

 

퍼셉트론

가장 간단한 인공신경망 구조입니다.

(입력x가중치)의 합 =(계단함수 통과)> h(x)

Multi Layer Perceptron의 경우, h(x)들이 또 모여서 계단함수 통과해서 또 다른 h(x)가 됩니다.

Perceptron을 수식으로 나타낸 것

 

input layer - hidden layer(s) - output layer로 이루어져 있습니다.

Multi-Layer Perceptron, 이미지 출처 : Tutorialspoint Tensorflow tutorial

무조건 모든 layer의 뉴런(노드) 수가 같지는 않습니다.

 

경사 하강법

간단히 설명하자면, 함수(cost function)의 기울기를 구하여 기울기가 낮은 쪽으로 계속 (step size만큼)이동시켜, 극값에 이를 때까지 반복하는 방식입니다. step size의 크기, local minimum, global minimum 등 경우에 따른 여러 방법이 존재합니다.

원론적인 이야기는 다른 곳에 많으니, 저는 딥러닝 훈련 관점에서 정리하도록 하겠습니다.

 

각 훈련(epoch, [에포크])의 과정은 다음과 같습니다. 

1. 은닉 층에서 뉴런의 출력을 계산, 출력층의 출력이 나올 때 까지 계산합니다. - 정방향 계산(forward pass)

2. 이 때, 역방향 계산을 위해 중간 계산값을 모두 저장합니다.

3. 알고리즘이 네트워크의 출력 오차(loss)를 측정합니다.

4. 각 출력 연결이 해당 오차에 기여하는 정도를 연쇄 법칙(chain rule)을 사용하여 계산합니다.

5. 오차 그래디언트를 거꾸로 전파함으로써 효율적으로 네트워크에 있는 모든 연결 가중치에 대해 오차 그래디언트를 측정합니다. 이 측정값을 사용하여 네트워크의 모든 연결 가중치를 오차가 감소하도록 수정합니다. (이게 경사 하강법)

 

Keras, 케라스

  • 복잡한 Tensorflow를 쉽게 활용하기 위해 Python으로 구현된 딥러닝 라이브러리입니다.
  • theano, Tensorflow 등 딥러닝의 여러 라이브러리가 존재하는데, Keras는 이들을 직관적인 API 형식으로 묶어서 편리하게 사용할 수 있게 해주는 녀석입니다.
  • Tensorflow 2 부터 Keras를 공식 API로 채택했습니다.
  • 그래서 Tensorflow 내부의 Keras / 그냥 Keras가 따로 존재하며, 보통 Tensorflow 사용 시, 내부적인 Keras 사용이 권장됩니다.
  • 대부분의 경우 Tensorflow 코드로 깊게 접근하지 않아도, Keras만으로 딥러닝이 가능합니다.

여기까지의 개념과 python syntax만 알아도, 코드를 통해 딥러닝을 하는 데에는 문제가 없습니다.

사실 전 코드와 그림을 함께 보는 게 더 이해가 잘 되었습니다.

물론 Convolution, max pooling, softmax 등 딥러닝에 있어 중요한 개념들이 있는데, 이것들은 우선 Tensorflow의 대표적인 이미지 분류 예제인 Fashion MNIST를 해본 후에 계속 정리하도록 하겠습니다.