본문 바로가기

딥러닝 공부

딥러닝이란 무엇인가?

※ 본 게시글의 내용은 '케라스 창시자에게 배우는 딥러닝'의 내용을 개인적인 이해를 통해 정리한 내용을 작성한 글입니다.

 

0. 인공지능

인공지능의 사전적 정의는 다음과 같다.

  • 1.
    정보·통신 인간의 지능이 가지는 학습, 추리, 적응, 논증 따위의 기능을 갖춘 컴퓨터 시스템. 전문가 시스템, 자연 언어의 이해, 음성 번역, 로봇 공학, 인공 시각, 문제 해결, 학습과 지식 획득, 인지 과학 따위에 응용한다.

즉, 컴퓨터를 통해 인간의 지능을 완전히 구현하는 하나의 시스템이다. 

우리가 흔히 '인공지능'하면 바로 떠올리는 '머신 러닝', '딥러닝'은 인공지능의 넓은 범위의 한 부분일 뿐이다. 다른 말로 '인공지능을 구현하기 위한 여러 방법 중 하나'라고 말할 수 있겠다. (또, 딥러닝은 머신러닝이라고 부를 수 있는 여러 방법 중 하나이다. 기계를 학습시키기 위한 방법은 몇 가지가 더 있다.)

 

초창기의 인공지능은 지금의 인공지능과는 상당한 차이점이 있었다. 당시의 인공지능은 문제를 해결할 수 있는 '체계적인 규칙'을 작성하여 만들고자 하였고, 이러한 규칙을 '충분히' 많이 만들게 된다면 인간 수준의 인공지능을 만들 수 있을꺼라 기대하였다. 이러한 접근 방법을 '심볼릭 AI'라 하였다. (사실상 모든 문제를 풀 수 있는 알고리즘을 구현하는 느낌인듯 하다)

 

하지만, 이러한 접근 방법엔 명확한 한계점이 존재하였다. '규칙'을 작성하기 위해선 어떤 상황 혹은 어떠한 것이 A 혹은 B이다. 라는 명확한 구분이 가능해야 하는데, 이미지 처리, 음성 처리와 같은 '인식' 혹은 '인지'와 관련된 문제를 해결하는데 있어서 규칙을 작성하기엔 그러한 구분을 위한 기준을 잡는 것이 쉽지 않았다. 

 

1. 머신 러닝

머신러닝의 출발점은 다음과 같은 생각이라고 할 수 있다. '컴퓨터가 우리가 작성한 규칙 이상의 것을 처리할 수 있는가?'

(알고리즘을 짜본 사람이라면 알겠지만, 내가 원하는 처리 그 이상을 바라기는 커녕 가장 이상적인 케이스에서라도 제대로된 결과를 내기를 기도하는 편이 더 현실적이다...)

이러한 의문은 인공지능을 만들기 위한 완전한 새로운 방법을 제시했으며, 그러한 방법이 '머신러닝'이다.

 

머신러닝이란 단어에서 알 수 있듯이 말 그대로 '기계 학습'이다. 기계를 학습시키는 것. (그냥 듣기엔 이게 뭔 소린가 싶다. 기계가 인지가 있는 것도 아닌데 어떻게 학습을 하는가. 이는 사람의 학습과는 조금은 다르지만 굉장히 비슷하다고 볼 수 있다. 데이터(공부 자료)를 통해서 학습하고, 더 많이 학습할 수록 데이터(공부 자료)에 대해 더 잘 알게 된다!)

 

데이터 컴퓨터에 입력하면 특정한 결과를 출력한다. 이는 심볼릭 AI도 똑같은 처리를 하지만, 그 과정이 다르다.

 

기존의 심볼릭 AI는 규칙과 데이터를 통해 해답을 출력했다면, 머신 러닝은 데이터와 해답을 통해 '규칙'을 출력한다.

즉, 머신 러닝이란 데이터를 통해 '규칙'(통계적 구조)을 찾아내게 하는 작업니다.

 

머신 러닝이 이렇게 통계적 구조를 찾아내는 작업이라면 실제 통계와는 무슨 차이가 있을까?

https://blog.naver.com/gksshdk8003/222421389873 

 

데이터 과학의 두 가지 관점, 통계와 기계학습

데이터 과학은 크게 두 가지 관점으로 발전해 왔다. 매우 큰 범위로 보았을 때 그렇다. 하나는 통계학이다....

blog.naver.com

위 블로그에서 꽤나 명료하게 그 차이점을 알 수 있다. 

 

내가 느낀 머신 러닝과 통계의 가장 큰 차이점은 '설명 가능성'에 있다고 생각한다. 

머신 러닝에 있어서 학습 모델에 어떠한 데이터를 입력했을 때에 대한 출력의 이유를 알 수 있는 방법이 없다. 컴퓨터가 어떠한 이유에서 해당 입력에 대해 그러한 출력을 냈는지 알 수 없다는 뜻이다.(컴퓨터가 작성한 규칙이 어떤 내용인지 알 수 없다)

그렇기 때문에 요즘의 머신 러닝, 딥러닝은 수학적 이론보단 경험을 바탕으로 아이디어가 증명되는 경우가 많다.(본 교재가 18년도에 첫 발행된지라 현재도 많은 모델들을 그런 식으로 설계하는지는 의문이지만, 딥러닝과 관련되어 결과를 만들어낸 논문들을 살펴본다면 대부분 수학적 이론을 통해 모델의 성능을 증명하는 것 보다 결과를 통해 증명하는 논문들이 절대 다수임을 살펴볼 수 있다. 그렇다고 모델에 대한 설명을 하려는 시도가 아주 없지는 않다.

https://christophm.github.io/interpretable-ml-book/

 

Interpretable Machine Learning

Machine learning algorithms usually operate as black boxes and it is unclear how they derived a certain decision. This book is a guide for practitioners to make machine learning decisions interpretable.

christophm.github.io

위 글은 제목 그대로 설명가능한 학습모델을 만들기 위한 가이드이다. 글 작성일 기준 나온지 1년도 안 된 따끈 따끈한 책이다보니 번역본은 없는듯하다.)

 

2. 딥러닝

앞서 말했듯, 딥러닝은 머신러닝의 방법 중 하나이다. 딥러닝에서 '딥'의 의미는 특정 학문에 깊이 있는 학습을 한다는 뜻이 아닌, 모델을 학습할 때 신경망을 쌓는데, 해당 신경망을 여러 층 쌓기 때문에(깊게 쌓기 때문에) '딥러닝'이라 부른다.

 

머신 러닝에선 데이터와 해답을 통해 규칙을 찾는다고 했는데, 딥러닝엔 이러한 규칙을 찾기 위한 여러 보조장치들이 존재한다. 

 

우선, 머신 러닝의 신경망엔 '가중치'라는 것이 존재한다. 이러한 가중치를 통해 입력 데이터를 처리하여 출력을 하는데, 이러한 가중치를 조정하는 것을 우리는 '학습'이라고 부른다. 학습을 위해서는 모델의 출력 값과 실제 해답 사이의 차이를 이용하는데, 이러한 차이의 정도를 측정하는 일을 '손실함수' 혹은 '목적 함수'라 부르는 특정 함수가 담당한다.

 

앞서 손실함수를 통해 측정한 손실 점수를 점차 감소하는 방향으로 가중치를 조정하는 과정은 딥러닝의 핵심 알고리즘이라 할 수 있는 '역전파 알고리즘'을 통해 조정하며, 이러한 역전파 알고리즘을 구현한 것을 '옵티마이저(optimizer)'라 한다.

 

그러므로, 모델의 학습에 있어서 데이터를 입력하였을 때의 출력된 값을 실제 정답과 비교하여 손실함수를 통해 손실 정도를 측정하고, 해당 손실 정도를 감소시킬 수 있도록 역전파 알고리즘을 하용하여 가중치를 조정하는 일련의 과정이 우리가 표현하는 '딥러닝에서의 학습 모델의 학습'이라 부르며, 이러한 학습을 여러 번 수행하며 학습 모델을 조정해 나간다.