What is Machine Learning?
Machine Learning 이란, Data(경험)를 통해 Data간의 상관관계나 Data에 내제된 특징을 학습하여 컴퓨터 프로그램의 성능을 향상시키는 것을 말합니다. 즉, Machine이 일일이 코드를 명시하지 않은 동작을 Data로부터 Learning하여 실행할 수 있도록 하는 Algorithm을 개발하는 연구분야입니다.
Why Machine Learning?
Machine Learning이 각광받고 있는 이유는 Big Data 때문이라고 하겠습니다. Big Data는 물리적으로 많은 Data량을 지칭할 때 쓰였으나, 지금은 대량의 data에서 가치를 뽑아내고 결과를 분석하는 기술까지 포함합니다.
기업이 자체 DB(데이터베이스)를 구축해 자신들의 데이터를 열심히 쌓아두는 것도 일정 수준의 Data가 쌓이게 되면, 소비자의 소비 패턴을 분석하여 미래 시장에 대한 예상을 할 수 있기 때문입니다.
더 나아가, 소비자의 소비패턴을 분석하는 것뿐만 아니라, 3차 혁명으로부터 시작된 축적된 일정 수준의 Data를 이용하여 다양한 분야에서 앞으로의 미래를 예측하고 우리에게 필요한 것을 제공하는 것도 가능합니다.
이러한 Data를 주요자원으로 의미있는 가치를 산출하기 위한 가장 좋은 방법은 Machine Learning이라고 할 수 있습니다.
Neural Network
컴퓨터가 사람보다 잘할 수 있는 일은 단순 산술 계산 등을 들 수 있겠습니다만, 언어의 이해, 물체의 구별 등은 컴퓨터가 인간을 뛰어넘지는 못합니다. 컴퓨터가 단순 산술 계산을 넘어 인간만이 풀 수 있는 문제까지 영역을 넓히기 위해서 인간의 뇌를 모방하는 것이 Neural Network의 첫 시작입니다.
인간의 뇌가 작동하는 방식은 아래와 같이 크게 두 가지로 볼 수 있습니다.
1. 외부의 자극이 감지 되면 자극 감지 기관으로부터 뇌의 특정 부분까지의 신경계가 활성화되면서 해당 정보를 처리
2. 신경세포(neuron)들은 전기적 신호를 이용하여 메시지를 주고 받음
수많은 신경세포가 연결되어 뇌를 구성하는 것처럼 Neural Network는 뇌의 Neuron(신경세포)에 해당하는 'node'라고 하는 작은 요소들을 연결해 만든 네트워크입니다.
또한, 신경세포들의 전기적 신호는 외부의 자극에 따라 연결 관계를 바꾸는 방식으로 만들어 지게 되는데, 이 연결관계를 Neural Network는 node들의 연결 weight로 흉내 냅니다.
즉, Neural Network는 "inputs(외부의 자극)"에 "weight"를 곱한 총합이 "activation function(활성함수)"에 따라 최종 "출력"이 결정되는 방식으로 구성되어 있습니다.
여기서, weight는 인간의 뇌가 Neuron들의 연결관계를 바꾸는 동작을 흉내내게 되는데, weight가 크면 해당 신호가 크게 반영되고, weight가 작으면 작게 반영됩니다.
activation function은 weighted sum의 결과가 얼마만큼 다음 단계로 전달할지를 조정하는 역할을 합니다.
Neural Network에서의 Training은 Inputs을 나름대로 취합하여 최종 출력과 비슷한 결과를 낼 수 있도록 계속해서 weight를 조절해가는 과정을 말하며, Data를 통한 반복적 Training을 통해 weight가 정해지게 됩니다.
Back Propagation
Neural Network는 반복적인 Training을 통해 weight가 정해지게 되는데, 어떻게 weight를 조절할 것인가에 대한 가장 중요한 개념이 Back Propagation이라 할 수 있습니다.
Weight의 아주 작은 변화는 최종 출력에도 아주 작은 변화를 시킵니다. 따라서, 기대하는 출력과 Network를 통한 실제 출력간 오차를 반대로 입력쪽으로 전파시키면서 weight를 갱신하면 된다는 뜻이 됩니다.
훈련 데이터에 대해서 반복적으로 이 과정을 거치게 되면, weight는 훈련 데이터에 최적화된 값으로 바뀌게 되고 기대하는 출력에 실제 Network를 통한 출력과 근사하게 됩니다.