기계가 학습을 하는 방법에 대해 이제까지 살펴보았는데, 물론 이러한 논리적인 측면도 중요하지만 결국에는 이 모든 논리가 일어나는 실질적인 주체가 필수적일 것이다. 이러한 학습이 일어나는 곳이 바로 인공신경망(人工神經網; Artificial Neural Network)인데, 이번 글에서는 이에 대해 다루고자 한다.
인공 신경망은 인체의 정보 처리를 모방하여 만든 소프트웨어 알고리즘으로, 우리 몸의 신경 조직인 뉴런(Neuron)과 그 주변 조직의 움직임을 본딴 형태로 구성되어 있다. 즉, 뉴런과 비슷한 역할을 하는 노드(Node)로 연결된 망(Net)을 만들어 동작하도록 함으로써, 인간과 유사하게 정보를 처리할 수 있도록 한 것이다.
각 노드는 작업의 여러 요인 중 각 하나에 대해 가설 H(x)=Wx+b에 대한 식을 가지며, 이전 글에서 다룬 학습 기제를 바탕으로 계속적으로 이 식을 수정하여 최적의 가중치(W)와 편향(b)에 대한 식을 수립한다. 데이터에 대해서 입력되는 값은 다양한 매개변수(Parameter)를 지니며 이들이 분리되어 입력되는데, 이 개별 값을 각 노드들이 받아 가설 식에 대입하고, 그 가설 식을 수정하면서 각자 나름대로의 최적 가설을 수립한다. 그리고 그것이 얽혀 연결망(Network)으로서 동작한다.
인공신경망은 크게 세 개의 층(Layer)으로 분류되는데, 입력(Input) / 은닉(Hidden) / 출력(Output)이 그것이다. 입력층과 출력층은 문자 그대로 입력을 받아서 출력하는 층이고, 은닉층은 시스템 내부에서 실질적인 학습이 이뤄지는 곳이다. 위의 이
미지와 같은 구조 모델을 다층 퍼셉트론(MLP; Multi Layer Perceptron)이라고 하는데, 입력층과 츨력층만 가진 단층 퍼셉트론 (Single Layer Perceptron)의 문제를 해결하며 등장한 기초적인 인공신경망이다. 그러나 초기에는 이 인공신경망 기술 자체가 그리 주목받지 못했는데, 하드웨어의 연산능력이 부족해 유의미한 결과를 내지 못했기 때문이다.
그러나 점차 하드웨어의 성능이 개선되면서 이 인공신경망 관련 기술은 주목받기 시작했는데, 특히 위의 다중 퍼셉트론을 3개 이상 겹쳐 만든 신경망인 심층 신경망 (Deep Neural Network)을 활용한 학습이 성과를 내기 시작하면서부터이다. 이 심층 신경망을 활용한 학습을 바로 심층학습(Deep Learning)이라고 하는데, 이를 통해 기계는 이전의 인간이 정의한 알고리즘에 데이터를 단순히 대입하여 결과를 내던 것에서 벗어나 직접 데이터의 방향성을 분석하여 알고리즘을 수립하고, 유사한 결과를 생성하기까지 시작했다.
이 과정에서 데이터는 수치화가 필요한데, 우리가 사는 세상은 아날로그적이지만 기계는 디지털적으로 분석을 해야 하기 때문이다. 또, 이전에 공부했던 선형 회귀나 경사 하강 등 역시도 모두 수학적인 알고리즘이기 떄문에 마찬가지로 어떤 데이터든 1차적으로 수치화가 필요하다. 이 때 사용되는 개념이 벡터(Vector) 그리고 텐서(Tensor)이다.
단순 개념으로는 인공신경망의 은닉층이 더 많아질수록 더 정교한 신경망이 되는 게 아닐까 싶은데, 실제로는 그렇지 않다고 한다. 이전 글에서 공부했던 과적합(Overfitting)문제나 컴퓨팅 자원의 과도한 사용문제, 너무 복잡해지는 계산으로 인한 역전파(Backpropagation) 문제가 있다고 하는데, 아직은 완전히 이해되지 않아 좀 더 공부가 필요한 부분이다.
'Artificial.Intelligence' 카테고리의 다른 글
[AI-06] 신경망의 활동을 표현하다 : 시그모이드 함수 (0) | 2024.05.28 |
---|---|
[AI-05] 수치화하여 방향성 찾기: 벡터와 텐서 (0) | 2024.05.12 |
[AI-03] 오차를 줄여나가다: 경사하강법 (0) | 2024.05.03 |
[AI-02] '배움'의 목표를 잡다: 비용함수와 제곱오차 (1) | 2024.04.30 |
[AI-01] 선으로 돌아가는 대수 : 선형회귀 (0) | 2024.04.29 |