본문 바로가기

머신 러닝

[케라스 창시자에게 배우는 딥러닝] 1장 : 딥러닝이란 무엇인가?

인공 지능 개념도

1.1 인공 지능과 머신 러닝, 딥러닝

 

1.1.1 인공 지능

인공지능을 간단히 정의하자면 이렇게 말할 수 있다.

"보통의 사람이 수행하는 지능적인 작업을 자동화하기 위한 연구 활동"

1950년대에는 심볼릭 AI라고 불리는 방법으로 접근했다. 예를 들어, 초기 체스 프로그램은 사전에 프로그래머가 승리를 위한 규칙을 하나하나 만들어주었다. 하지만 이런 방법은 이미지 분류, 음성 인식, 언어 번역 같은 더 복잡하고 불분명한 문제를 해결하기 어려웠다. 모든 규칙을 만들고 수정하는 것이 불가능에 가깝기 때문이다.

1.1.2 머신 러닝

머신 러닝은 반대로 접근했다. 전통적인 프로그래밍에서는 규칙(프로그램)과 이 규칙에 따라 처리될 데이터를 입력하면 해답이 출력된다. 반면 머신 러닝에서는 데이터와 이 데이터로부터 기대되는 해답을 입력한다. 그러면 컴퓨터가 알아서 규칙을 만들고 수정한다. 그리고 점점 해답을 더 잘 맞추는 방향으로 규칙을 완성해나간다. 이 과정이 바로 머신 러닝 알고리즘이다.

1.1.3 데이터에서 표현을 학습하기

머신 러닝에 꼭 필요한 세 가지

1) 입력 데이터 포인트
 음성 인식이라면 사람의 대화가 녹음된 사운드 파일. 이미지 분류라면 사진. ex) 고양이 사진 10장을 주고 이게 고양이인지 개인지 맞추기

2) 기대 출력
 음성 인식이라면 사운드 파일을 듣고 옮긴 글. 이미지 분류라면 태깅. "고양이다!"

3) 알고리즘의 성능을 측정하는 방법
 알고리즘의 현재 출력 (기계의 제안)과 기대 출력 (인간이 원하는 답)의 차이를 결정하기 위해 필요하다. 측정값은 알고리즘의 작동 방식을 교정하기 위한 신호로 다시 피드백되는데, 이런 과정을 학습이라고 한다. 그래서 머신 러닝이라고 부르는 것이다.

 

1.1.4 딥러닝에서 '딥'이란 무엇일까?

딥러닝은 뭔가 깊고 대단해 보이지만, 그건 아니다. 딥러닝에서 사용하는 인공 신경망 (Neural Network) 모델 역시 사람의 뇌는 현격하게 다르다. 오히려 그런 오해 때문에 딥러닝을 어렵고 복잡한 것 혹은 엄청나게 대단한 것으로 착각하게 만든다. 딥러닝의 '딥'은 층이 많다는 뜻이다. 

딥러닝의 구조

여기 보면 Hidden Layers (은닉층) 이 2개인 것을 볼 수 있다. 실제로는 수백, 수천 개의 은닉층을 사용한다. 이 은닉층이 개수가 엄청나게 많아서 이를 딥러닝이라고 부른다.

1.1.5 딥러닝의 작동 원리 이해하기

아까의 이미지 분류 - 고양이 사진 10장을 보고 고양이인지 아닌지 맞추기 - 를 예를 들어보자. 이 사진 (0과 1의 무수한 조합, 픽셀)과 "고양이" 사이에는 여러 개의 층 (즉, 데이터 변환기)이 있다. 이 변환은 각 층의 가중치 (weight)에 저장되어 있다. 이를 파라미터(parameter)라고 부른다. 마치 간단한 함수와 같다. 이런 맥락으로 본다면 "학습"은 주어진 입력 (고양이 사진)을 정확한 타깃 ("고양이")에 매핑하기 위해 신경망의 모든 층에 있는 가중치 값을 찾는 것을 의미한다. 하지만 어떤 신경망은 수천만 개의 파라미터를 가지기도 한다. 정확한 값을 찾기가 매우 힘들다. 하나의 파라미터가 변하면, 다른 모든 파라미터에 영향을 끼치기 때문이다.

 파라미터를 바꿀 때, 이게 정답을 더 잘 맞추는 쪽으로 바꾸어야 한다. 그러면 그걸 측정할 수 있어야 한다. 그게 바로 손실 함수 (Loss function)다. 신경망이 한 샘플에 대해 얼마나 잘 예측했는지 측정하기 위해 손실 함수가 신경망의 예측과 진짜 타깃 (신경망의 출력으로 기대하는 값)의 차이를 점수로 계산한다.

 이 점수를 피드백 신호로 사용하여, 손실 점수가 감소하는 방향으로 가중치를 조금씩 수정하는 것이 딥러닝의 핵심이다. 이걸 담당하는 게 역전파 알고리즘 (Backpropagation)을 구현한 옵티마이저 (Optimizer)다. 

 최초의 파라미터는 랜덤한 값으로 설정된다. 하지만 점차 손실 점수가 낮아지는 방향으로 규칙을 수정하며, 이를 훈련 반복 (training loop)라고 한다. 일반적으로 수천 개의 샘플에서 수십 번 반복하면 손실 함수를 최소화하는 가중치 값을 산출한다.

1.1.6 지금까지 딥러닝의 성과

오랫동안 기계가 잘 하지 못 했던, 시각과 청각 같은 지각 문제에서 큰 성과를 내고 있다. 잘 알려진 바둑, 음성 인식, 자율 주행 등. 가끔 회사 근처 (상암)에서 자율 주행 버스를  만날 수 있다. 최근 회사에서 강연한 구글코리아 조용민 부장이 말해준 유튜브의 업데이트 방향도 딥러닝의 성과 중 하나다. 조만간 "고양이가 춤추는 영상"이라고 검색창에 입력하면, 내가 원하는 영상이 나온다고 한다. 

1.1.7 단기간의 과대 선전을 믿지 말자

하지만 향후 10년간 사람들이 기대하는 수준은 가능한 것보다 훨씬 높은 편이다. 이런 과한 기대는 오히려 기술 발전을 저해할 수 있다. 실망한 정부나 기업의 투자가 줄어들기 때문이다. 1960년대와 1980년대에 AI 겨울이 있었다. 

1.1.8 AI에 대한 전망

아직 AI는 사람들에게 장난감 같은 존재이다. "헤이 카카오, 회사로 가는 택시 불러줘." 정도나, 아침에 날씨를 묻는 정도일 것이다. 더 새로운 기술들 - 예를 들어 AI 비서나 AI 변호사가 이미 등장했지만, 보편적으로 쓰이지는 않는 게 현실이다. 하지만 언젠간 AI의 시대가 반드시 온다. 인터넷이 우리의 모든 일상을 연결했듯이, AI 또한 조만간 우리의 삶 곳곳에 스며들어, 없어서는 안 될 존재가 될 것이다. 그러니 단기 선전은 믿지 말고 장기 비전을 믿으라.