가슴으로 받아들이는 딥러닝(1)

March 21, 2021 - 2 minute read -

머리로 이해하기 어려운 온갖 수학식과 어려운 전문 용어를 걷어내고, 그냥 그렇구나~ 하고 가슴으로 딥러닝을 받아들여보자.

우리가 강아지를 보면, 저것이 강아지인지 어떻게 아는 것일까?
그냥 안다.

우리는 어떻게 그냥 알게 되었을까?
모른다.

다만, 언젠가 누군가가 우리에게 ‘저것은 강아지야’라고 알려주었다.
이후 부터는 강아지를 보면 강아지로 알게 되었다.

우리가 어떻게 강아지를 학습 했는지 정확히는 모르지만, 우리 몸의 신경세포가 열심히 일 했다는 것은 안다.

우리가 어떤 자극을 받으면, 몸 안의 수천억개의 신경 세포(뉴런)가 서로 전기 신호를 전달하고 정보를 저장한다.
어떤 세포가 어떤 자극을 받고 어떤 정보를 저장하는지는 모른다. 자극과 연관된 세포들의 연쇄 반응을 통해 어떤 결과를 도출하겠거니~ 할 뿐이다.

딥러닝은 우리 몸의 신경 메커니즘을 모방한다. 딥러닝의 인공신경망에는 수많은 노드들이 존재하고, 노드들은 서로 신호를 주고 받으며 연쇄 반응을 일으킨다. 노드의 연쇄 반응이 어떻게 일어나는지는 모델 개발자도 알기 힘들다. 입력된 데이터가 강아지인지 아닌지만 알려주면(라벨링) 인공 신경망이 알아서 학습하게 된다.

매우 간단한 인공 신경망을 살펴 보자.

  • 입력층(Input Layer)은 데이터를 입력 받는 층이다. (사람의 눈)
  • 은닉층(Hidden Layer)은 노드(사람의 신경 세포)들이 연결되어 신호를 주고 받는 층이다.
  • 출력층(Output layer)은 결과를 도출 하는 층이다.
  • 각각의 노드는 가중치를 가진다. (랜덤하게 초기화 된 숫자)
  • 은닉층의 수와 노드의 수는 모델 마다 다르다.


인공 신경망은 어떻게 사람의 신경 처럼 연쇄 반응을 일으킬까?

  • 입력층에 신호(데이터)가 들어오면 연결된 은닉층의 노드들에 신호를 보낸다.
  • 노드에서는 들어오는 모든 신호에 각각의 가중치를 곱하여 합산한다.
  • 더해진 값을 활성화 함수에 넣는다.
    • 활성화 함수: ‘보통 non-linear한 방식으로 출력값을 도출하는 함수’ 라고 하는데, 지금은 그냥 ‘신호의 세기를 조절하는 함수’라고 생각하자.
  • 함수에서 반환된 값이 역치를 넘으면 다음 노드로 전달한다.
    • 역치
  • 다음 노드에서는 전달 받은 신호를 받아 위를 반복한다.
  • 마지막 출력층에서는 가장 큰 신호를 선택해, 결과를 출력한다.

즉, 노드가 지닌 가중치에 따라서 어떤 노드가 활성화되는지, 어떻게 연쇄 반응을 일으키는지가 결정된다.
결국 모델을 학습시킨다는 것은 최적의 가중치를 찾는 것과 같다.
그럼 최적의 가중치는 어떻게 찾아낼까?