최적화 알고리즘이란?
산업공학과 컴퓨터공학, 그리고 데이터사이언스를 공부하다 보면 '최적화(optimization)'라는 단어를 많이 접하게 될 것입니다. 꼭 이 분야를 공부하지 않더라도 '최적화'라는 말은 굉장히 낯익은데요. 그렇게 느껴지는 것은 최적화가 다양한 분야에서 사용되고 있기 때문입니다.
예를 들어, 제조업에서는 제품의 성능을 최적화하기 위해 최적의 설계를 찾기 위해 최적화를 사용합니다. 운송업에서는 물류를 최적화하여 비용을 절감하고 운송 시간을 단축하는 데 사용하고 있습니다. 그리고 경제학에서는 수익을 극대화하거나 비용을 최소화하기 위해 최적화를 사용하기도 하죠. 일상을 비롯해 여러 분야에서 최적화는 실제 문제를 해결하는데 중요한 역할을 하고 있습니다.
데이터 사이언스에서 최적화란 무엇일까요?
최적화(optimization)란 주어진 문제에 대해 최소한의 비용으로 가장 최선의 목표를 찾는 과정을 의미합니다.
Data Scientist는 수많은 데이터를 다루게 되죠. 보통은 raw data를 그 자체로 바로 분석에 이용하기는 어렵습니다.
우리는 이 데이터를 분석하기 위해 데이터를 수치화된 matrix로 표현하고, 차원 축소(deminsion reduction), 데이터 전처리(Data preprocessing) 등을 거쳐 손실 함수(lost function)를 최소화하는 방향으로 목표를 찾게 됩니다. 바로 이 과정이 최적화입니다.


왜 최적화가 머신러닝과 딥러닝에서 중요할까요?
개념이 헷갈릴 수도 있지만 머신러닝과 딥러닝의 원리는 결국 같습니다.
머신러닝(machine learning)은 간단히 말해 입력 데이터(input data)와 출력 데이터(output data)가 주어지면 그중 일부를 학습을 시켜서 새로운 입력에 대한 출력값을 예측하는 모델을 만드는 것입니다. 이 학습의 과정에 바로 최적화가 사용됩니다.
딥러닝(deep learning)은 머신러닝의 하위 개념으로 인간의 뇌 구조와 비슷한 인공신경망(Artificial Neural Network)을 깊게 쌓아서 학습을 진행합니다. 인공신경망은 수많은 layer로 구성되어 있는데 각 layer마다 입력과 출력으로 구성되어 있습니다. 이렇게 여러 layer로 구성된 모델은 음성 인식, 이미지 인식, 로봇, 게임 등의 분야에서 사용되고 있습니다.
몇 년 전 이세돌 기사와의 대국으로 화제가 되었던 알파고를 기억하시나요? 바로 이 알파고가 딥러닝을 기반으로한 인공지능 시스템입니다. 신경망을 사용하여 강화학습을 수행한 알파고는 바둑과 같은 보드 게임에서 세계 랭킹과 겨루어도 이길 정도의 수준 높은 플레이를 구현했습니다. 인간이 생각할 수 없는 방향으로 수를 두어 이겼던 거죠.
결국 모델의 학습을 위해서는 최적화를 사용할 수 밖에 없습니다. 모델이 최적화되지 않으면 예측 성능이 떨어지고, 과적합(overfitting)과 같은 문제가 발생할 수 있기 때문입니다. 다시 말해, 머신러닝과 딥러닝에서 최적화는 하나의 tool로써 사용되는 것입니다.
앞으로 데이터사이언티스트 관점에서 최적화에 대해 자세히 다루어 보겠습니다.