우리 인간은 뇌에서 어떻게 정보를 처리하고 이해하고 있는 걸까요? 현재, 인간은 뇌 속의 수많은 신경 세포(뉴런)가 서로 신호를 전달함으로써 정보를 처리하고 있다는 것을 알고 있습니다. 그리고 이 뇌의 작동원리를 컴퓨터에 구현하는 것을 목표로 한 것이 '신경망'입니다. 여기서는 AI 기술의 근간이 되는 '신경망'을 비롯해 AI 계산 목표인 "최적화"까지의 흐름을 알아보겠습니다.
컴퓨터를 인간의 뇌처럼 이해시킨다는 것은 매우 어려운 문제이며, 원래 우리 인간은 어떻게 사물을 "이해"하고 있는가라는 의문으로 발전하게 됩니다. 정확한 정의는 어렵기 때문에 예를 하나 들어 봅시다.
인간이 1~9의 숫자를 보았을 때, 어느 정도 확률로 정확하게 판별할 수 있을까요? 인간은 우선 숫자를 시각적으로 인식하고 지금까지의 경험에서 그 숫자가 1~9중에 어떤 것인지 판별합니다.
그런데, 이렇게 뇌가 움직이기 위해서는 어떤 작용이 필요한 것일까요? 다음 내용을 읽어 가면서, AI의 근본이 되는 메커니즘인 '신경망'의 원리와 각각의 작동에 대해 알아보겠습니다!
1. 신경망
인간의 뇌는 각종 정보(입력 데이터)를 뉴런(계산 시스템)에서 처리하고 다른 이웃 뉴런으로 전달하는 행위를 여러 번 반복하면서 정보를 처리하고 있습니다.
예를 들어, 당신의 "눈"을 통해 얻어진 정보는 전기 신호로 처리되어 뇌의 신경계에서 "색상", "공간", "배치"등으로 인식하고 눈앞의 상황을 이해합니다. 이 일련의 흐름을 컴퓨터로 모방한 것이 '신경망'입니다.
'신경망'은 이미지와 언어 등의 정보를 한번 숫자의 패턴으로 변환하고, 그것을 계산 처리하여, 다시 이미지 등으로 변환하여 출력합니다. 이 계산 처리의 단계에서 다양한 이미지 분석을 실시하게 됩니다.
신경망은 계산 처리를 수행하는 메커니즘의 통합을 의미합니다. 또한 다양한 역할(이미지를 수치화하여 패턴으로 분류하여 출력하는 등)을 필요로 할 경우 몇 개의 신경망을 연결하여 필요한 문제를 풀어갑니다. 물론, 이 연결된 전체 망을 일컬어 신경망이라 부르기도 합니다.
2. 신경과 노드, 퍼셉트론
그럼 좀 더 깊게 신경망을 알아봅시다. 먼저, 획득한 다양한 데이터를 정리하여 하나의 상자에 넣고 처리합니다. 또한 거기에서 얻은 데이터를 또 다른 데이터와 함께 처리하는 것을 반복합니다. 이런 작업을 수행하는 상자를 뉴런 또는 노드라고 부르며 신경망은 이러한 노드들이 복잡하게 겹쳐서 실현됩니다. 또한 위 그림과 같이 1층으로 이뤄진 신경망을 퍼셉트론이라고 부를 수 있습니다.
3. 중요도를 결정하는 가중치
신경망은 먼저 들어온 입력 데이터에 대해 가중치를 반영하는 작업을 합니다. 예를 들어, 여러분이 새집을 선택할 때 "임대료"또는 "집 구조", "역세권"등 다양한 특징에서 최적의 부동산을 선택하게 될 것입니다. 이때, "임대료"의 중요도가 높으니, "역세권"은 조금 타협하자고 한다면 임대료에 가중치를 두는 것입니다. 이러한 가중치를 신경망 안에서도 사용합니다. 즉, 중요한 것 같은 숫자는 그대로 사용 하지만, 그다지 중요하지 않은 숫자는 0.5배 하여 줄여서 처리하는 느낌입니다.
이 곱하는 숫자를 수학에서는 w로 표시하기도 합니다. 계산 과정에서 이 "가중치"를 신경망이 "학습"합니다. 즉 어떤 요소가 중요한지를 학습해 나가는 것입니다. 그리고 여러 층일수록 다양한 예측과 분류를 실현하고 있습니다.
4. 출력
그리고 가중되어 들어온 데이터를 뉴런으로 처리하며, 이 처리에 사용되는 함수를 활성화 함수라고 합니다. 활성화 함수는 응용에 따라 여러 가지가 있을 수 있습니다. 가장 간단한 것으로, 들어온 데이터의 합이 0.5보다 크면 그대로 다음 뉴런에 전달하고 그렇지 않은 것은 0으로 만들어 버리는 방법이 있습니다. 여기에 사용되는 함수는 "단계 함수"나 "헤비 사이드 함수"라고 가장 간단한 처리 방법 중 하나입니다.
이 첫 번째 입력 데이터가 들어오는 레이어를 입력층, 마지막 출력되는 층을 출력층 그리고 그 외 숨겨진 층을 은닉층이라고 합니다. 이 입력층에서 출력층까지 "입력"→ "처리"→ "출력"을 반복해가는 일련의 작업을 포워드 프로퍼게이션이라고 합니다.
5. 오차를 없애고 싶다 – 최적화
최후의 출력층에 생기는 오차를 줄이기 위해서는 어떤 작업을 하면 좋을까요. 이 오차를 최대한 줄이기 위해서 계산 도중 나온 w값을 바꿔가는 것을 생각해 봅시다. 이 경우, 층 전체를 두루두루 수정하기 위해 마지막 출력층부터 순서대로 하나 뒤의 층으로 "이런 오차가 있었다"라고 전해주는 것이 필요합니다.
이렇게 입력층까지 전체를 수정하는 방법을 오차 역전파법(백 프로퍼게이션)이라고 합니다.
그런데, 가중치의 예로 임대료 이야기를 생각해 봅시다. 당신이 물건을 찾을 때는 먼저 대략적인 중요도와 가격을 정해두고 있습니다. "월세 40만 원 이내, 16평 이상, 상태 깨끗"등 당신의 이상적인 물건을 과연 한 번의 검색만으로 찾을 수 있을까요?
아마도 경험 좀 있으신 분들은 "이상에 가깝지만, 이상과는 조금 다른"물건으로 결정하지 앉았을까요. 이 이상과 현실의 "차이"가 신경망의 오차에 해당합니다.
그래서 이상과 현실의 차이를 줄일 수 있도록 "월세는 40만 원이지만 평수가 넓으니까..."라고 생각하면서 "월세와 평수의 할당(가중치)"를 바꾸어가는 것입니다. 이것이 "최적화"프로세스입니다. 즉, 출력 결과(현실)와 정답(이상)이 가까워지도록 각 데이터의 가중치를 설정하는 것입니다.
또한 AI는 "감정"이 없기 때문에 학습 데이터를 참고해 "가장 좋은 물건"을 계산합니다.
정리
지금까지 신경망의 모습을 살펴보았지만, 활성화 함수의 처리 방법과 노드의 연결 방법 등은 실로 다양합니다.
특히 은닉층을 Convolution layer와 Pooling layer의 2종류로 구성하는 'CNN(Convolution Neural Network)'은 이미지 인식에서 실적이 좋으며, 가변 길이의 시계열 데이터를 주로 잘 다루는 'RNN(Recurrent Neural Network)'등 그 종류가 풍부합니다.
자, 당신의 뇌는 어떤 방법론으로 재현할 수 있을까요?
'AI · 인공지능 > 알기쉬운 AI' 카테고리의 다른 글
[알기쉬운 AI - 12] 특징으로 데이터 분류, '서포트벡터머신'이란? (0) | 2019.12.24 |
---|---|
[알기쉬운 AI - 11] 그룹에서 당신은 어떤 타입? '클러스터링'이란? (0) | 2019.12.23 |
[알기쉬운 AI - 10] AI의 발전적 기능: 자연어 처리와 강화학습, 이미지인식, 음성인식 (0) | 2019.12.08 |
[알기쉬운 AI - 09] 지도 학습과 비지도 학습이란? (0) | 2019.12.07 |
[알기쉬운 AI - 07] AI와 통계학의 관계 (1) | 2019.12.05 |
[알기쉬운 AI - 06] AI의 주요 기능, 회귀와 분류 (0) | 2019.12.03 |
[알기쉬운 AI - 05] AI관련 자격증 소개 (0) | 2019.12.01 |
[알기쉬운 AI - 04] AI공부에 필요한 기본지식 3가지 (0) | 2019.11.30 |