본문 바로가기

반응형
Notice
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

<Piece of cake 시리즈 - 001> '딥러닝 모델을 학습한다는 건 뭔가요?'에 대한 답변, 딥러닝 동작 원리 쉽게 설명하기 본문

PIECE OF CAKE

<Piece of cake 시리즈 - 001> '딥러닝 모델을 학습한다는 건 뭔가요?'에 대한 답변, 딥러닝 동작 원리 쉽게 설명하기

areum_ 2023. 1. 26. 15:10

 

 

전혀 심층적이지 않은
한 입거리 이야기

001. 딥러닝을 학습한다는 게 무엇인가에 관하여.


 

​들어가면서

오늘은 평소에 쓰던 글과 완전히 결이 다른 글을 써보려 한다.

얼마 전, 질문을 하나 받았는데 그 질문이 뭐였냐면

"아, 오늘 기회가 되는 김에 궁금증을 해소해야겠어요. 제가 잘 몰라서 그러는데, 딥러닝 모델을 학습한다고 하잖아요? 그러면 학습하고 나서 새로운 이미지를 주면 얘가 어떤 형태로 동작하는 거예요? 가령, 학습할 때 있었던 데이터 중에 가장 유사한 애를 찾아서 알려주는 건가요? 아니라면 어떤 식으로 동작하는 거예요? 인터넷에 찾아봐도 수식만 잔뜩 나오고 용어 하나하나가 어려워서 이해가 잘 안되더라고요."

 

이거였다.

그런데 질문에 대한 내 답은 말하지 못했다. 왜냐하면 그 자리에 있던 다른 분이 먼저 답변을 하셨기 때문이다. 그 상황에서 굳이 내가 첨언하는 것이 불필요해 보여서 굳이 이야기를 꺼내지 않았다. 그래서 이 글은, 그날 하지 못했던 나의 답변을 쓰는 공간이다. 질문을 주셨던 분이 아버지뻘 되신 분이셨는데, 새로운 일을 시작하시면서 계속해서 공부를 하고 계신 것 같았다. 그런 분들께는 처음부터 복잡한 설명보다는 최대한 친근하고 직관적인 설명이 도움이 되겠구나 싶었다.

그래서 본 글에서는 수식 없이 개념적으로 답변해 보려 한다. (어디 가서 관련 대화를 이해할 수 있고, 아는척할 수 있게 만드는 게 본 글의 목적입니다.)

 

썸네일용 이미지.

난 평소에 생각하면서 산책하는 걸 좋아하는데

그림자 키가 작아 보여서 찍었던 사진이다.

나는 이 그림자보단 키가 크다.

 

 

 

 

 

우선 질문에 답을 하기에 앞서,

질문이 어떤 내용인지에 대한 설명

딥러닝은 인공지능(인공지능은 많이 들어보셨을 거다)이 우리 삶의 상당 부분을 해결해 줄 수 있을 거라고 기대하게 만든 장본인이다. 이세돌 님과 알파고의 대국은 그 기대치를 높인 사건이었다. 딥러닝은 인공지능을 실현하는 수단인 기계 학습 (말 그대로 기계 - 여기서 기계는 컴퓨터 - 가 학습한다는 뜻으로 받아들이셔도 좋다)이 '정확도'라는 과제에서 한계 문턱을 넘지 못하고 있을 때, 이를 해결해 주는 방법론으로 등장한 녀석이다. 'Deep Learning', 말을 풀어보면 깊은 학습이라는 뜻인데, 중요한 건 결국, 딥러닝도 기계 학습의 방법론 중 하나라는 것이다.

이런 기계 학습은 "학습"단계를 거쳐 사용자가 사용할 수 있다. 이때, 학습을 하려면 정보가 주어져야 하는데 (우리도 배우려면 정보가 있어야 하지 않는가? 예를 들어 학습지를 푼다던가 - 여기서 정보는 학습지 - 수업을 들어야 한다. 물론 똑똑한 학생은 스스로도 배울 수 있다.) 일반적으로는 입력 값과 이에 대한 정답이 주어져야 한다. 예를 들어, ⌜식물 사진을 보고 어떤 식물인지 알려줄 수 있는 모델 (쉽게 인공지능이라고 하자)⌟을 학습시키려면 식물 이미지와 정답을 함께 알려줘야 한다. 가령, 아레카 야자의 사진과 함께 얘가 아레카 야자라는 정보를 함께 주면 이를 보고 컴퓨터는 이 정보를 배우는 것이다. 이처럼 기계가 배울 수 있도록 제공해 주는 정보를 학습 데이터 (training data)라고 한다.

그래서 질문하신 분의 요지는 그거다.

"오케이! 딥러닝이 잘 동작하려면 학습을 해야 하고, 학습을 하기 위해서는 학습용 데이터를 줘야 한다는 것을 알겠다. 그러면, 학습이 된 후에 새로운 정보에 대해서는 어떤 식으로 동작하는가? 학습 데이터와 새로운 입력 사이에는 어떤 상관관계가 있는 건가? 궁극적으로, 학습한다는 게 무슨 의미이냐?" 적어도 내가 이해한 질문의 요지는 '학습한다는 게 무엇인가?'였다.

그래서 오늘은, 딥러닝 모델 (모델이 무엇인지는 답변에서 함께 설명하도록 하겠다)을 학습한다는 것이 무엇인가에 대해서 답변해 볼 것이다.

질문에 대한 답변

딥러닝 모델을 학습한다는 것은 "주어진 문제를 가장 잘 풀 수 있는 함수를 찾는 것"이다. 함수라고 하니까 당황했는가? (함수는 이과의 전유물이 아니다. 문과 여러분도 엑셀에서 함수를 매일 사용하고 있다) 함수는 별다른 게 아니다, 어떤 입력이 주어지면 자신만의 규칙을 따라 처리한 후 출력을 반환하는 것이 함수이다.

 

 

그러니까, 딥러닝 모델을 학습한다는 것은 원하는 특정 입력에 대해서 정답을 반환할 수 있는 규칙을 찾아내는 것이다. 그렇기 때문에, 학습을 하고 나면 학습에 사용되었던 이미지와 비교하기보다는 이미 찾아진 규칙에 의해 정답을 반환한다고 볼 수 있다. (물론, 학습에 사용되었던 이미지와 비교하는 개념이 들어가 있는 학습 방법들도 있다. 하지만, 본 글에서는 일반적으로 말하는 딥러닝 '학습'에 대한 개념을 소개한다)

그렇다면, 함수를 찾는다는 것은 무엇이고 이걸 설명할 때 언급한 모델은 무엇을 의미할까? 세상에는 정말 많은 함수가 있다. 일차 함수, 이차 함수, 삼차 함수, 삼각 함수 등의 종류로 볼 수도 있지만, 일차함수만 해도 기울기와 y 절편 (y=ax+b에서 a와 b를 말한다)의 값이 무엇이 되느냐에 따라 무한개의 함수가 존재한다. 그렇기 때문에, 세상에 무수히 많은 함수를 모두 찾아보는 것은 거의 불가능하다. 대신, "나는 3차 함수 중에서 제일 잘 맞는 함수를 찾겠어!"라고 가정하고 학습하는 것이 그나마 가능성이 있어 보인다.

이때, 3차 함수, 1차 함수 등 함수의 종류에 해당되는 것 (그냥 우리끼리는, 꼴이라고 하자) 결정하는 것이 모델이다. 이때, 딥러닝의 '딥'은 모델에 사용되는 단위인 레이어가 많아지는 데서 유래됐다 (딥러닝을 뇌의 활동에 비유하곤 하는데, 레이어가 깊어진다는 말은 시냅스의 연결이 많아지는 것으로 비유되곤 한다 +첨언, 이과라면 '딥'의 의미가 작은 단위의 함수를 계속해서 합성한다고 생각하면 된다. 합성을 중첩해서 깊어지니까 딥러닝이라고 부른다). 그리고, 딥러닝 모델의 종류에는 큰 의미에서 심층 신경망 (DNN), 합성곱 신경망 (CNN) 등이 있고, 더 자세하게는 합성곱 신경망 안에도 다양한 구조의 모델이 있다 (세계 유수의 연구자들이 다양한 구조의 모델을 개발해 두었고, 여러분도 기본 틀을 가지고 조합해서 만들 수 있다).

자, 다시 학습이란 무엇인가로 돌아가서 이야기해 보자. 그러면 먼저, 사람이 함수의 꼴을 정해야 한다. 즉 모델을 먼저 준비해야 한다는 소리다. 이때, 모델의 종류는 어떤 일을 시킬 건지에 따라 달라질 수 있다. 그러고 나서, 학습 데이터를 준비해야 한다. 그러면 주어진 꼴 안에서 (예를 들어, 나는 일차 함수를 쓰기로 결정했다. y=ax+b) 학습 데이터를 가장 잘 설명할 수 있는 형태의 함수 (예를 들어, y=1.83x + 4.98)를 찾는 것이다. 결론적으로 함수를 구성하는 파라미터 값 (여기서는 a, b) 찾는 것이 학습이 되겠다. 결국에는 찾아낸 함수가 (학습된) 모델이 되는 것이다. 그리고, 한 번 학습이 된 이후에는 x 값을 대입하면 우리는 y를 얻을 수 있다.

그러면 이 파라미터 값은 어떻게 얻는가?

이거는 본 글의 취지를 넘어가는 이야기다. 이때부터는 미분을 이야기해야 한다. 오늘은 수식은 말하지 않기로 했으니, 여기서 멈추기로 하자.

답변 외의 이야기

딥러닝 모델은 말 그대로 '딥'하기 때문에 함수 꼴에서 파라미터의 수가 굉장히 많다 (a와 b, 2개면 충분한 1차 함수와는 비교도 되지 않는다). 그 말은, 표현할 수 있는 함수 종류의 가짓수가 엄청 많다는 것이다. 그렇기 때문에 우리가 원하는 문제를 더 잘 풀 수도 있지만, 역으로 말하면 우리가 제공해 준 학습 데이터에만 함몰될 수도 있다 (머리가 너무 비상한 나머지, 기출문제 족보의 정답만 통으로 암기할 수도있다. 그럼 겉으로 보기에는 열심히 공부한것처럼 보이지만 막상 시험을 치면 꽝인 것이다). 그렇기 때문에 주어진 문제와 유사한 어느 문제에도 잘 대응하도록 하기 위해서는, 최대한 많은 데이터를 주어야 한다. 단순 암기보다는 원리를 파악할 수 있도록, 문제의 다양한 경우를 제시해주어야한다는 것이다. (물론 요즘에는 데이터가 많이 없어도 잘 학습할 수 있는 알고리즘들도 연구되었다) 이 말은, '인공지능용 학습 데이터'를 구축하는 것이 인공지능 시대의 주요 자원 중 하나라는 걸 의미한다. 하지만, 이 인공지능용 학습 데이터라는 것은 결국에는 사람이 작업해야 하는 부분이 있고, 이게 꽤나 단순 작업이다. 똑똑한 사람들이 인공지능을 만들었지만, 도리어 이 인공지능을 똑똑하게 만들기 위해 우리는 단순 작업을 하는 이면을 갖게 되었다는 사실이 조금은 슬프게 다가온다. 이러한 문제를 해결하기 위해서 여전히 새로운 연구들이 진행되고 있지만, 똑똑한 기계의 발전이 과연 인류의 발전에 늘 긍정적인 피드백만을 주는지는 생각해 볼 필요가 있을 것 같다.

 

 


 
 
 
반응형
Comments