NLP

딥러닝에 대한 짧은 정리

알 수 없는 사용자 2021. 5. 1. 22:40
반응형

이전 글에서도 언급했지만 이 포스팅은 기본적으로 컴퓨터비전을 연구하는 사람의 NLP 정리 글이다.

 

우선 딥러닝에 대해 짧게 짚고 넘어가려 한다.

인공지능, 머신러닝, 딥러닝의 차이에 대한 글들은 정말 도처에 널려있으니 필요하시다면 검색을 바란다.

 

딥러닝 부터 시작해보자.

딥러닝 하면 이런 그림들을 자주 보게 된다.

기본적으로 우리의 뇌 속에 있는 뉴런이라는 신경세포가 동작하는 모습을 가져와 만든것이 딥러닝이다! 라고들 많이 말한다.

하지만 정확하게는 반은 맞고 반은 틀린 이야기이다.

 

그 정확한 역사와 흐름은 공부해보면 나름 재미있기도 하고 흥미롭지만 지금은 자세히는 다루지 않겠다.

다만 예전에 수학적으로 사진을 판단하는 시도들이 연구비를 많이 타갔었는데(연구도 다 돈이다.) 언젠가 무슨 심리학자가 최근에 소개된 저 뉴런이라는 개념을 (정확히는 퍼셉트론이다.) 가지고 와서 혁신적인 마케팅을 통해 연구비를 싹쓸이 해 가면서 관련 연구가 성행했었다.

확실히 뇌를 모방하여 어느정도 동작하는 시스템이라는 것은 투자자들에게 매력적으로 다가갔고, 돈이 몰렸으며 그로 인해 이런저런 발전들이 생기게 되었다.

 

그러나 최초의 단일 퍼셉트론은 정말 뉴런과 같은 동작을 했을 지 모르지만 현대의 딥러닝은 뇌의 동작과 다른점들이 너무 많아졌다. 더 나아가 오히려 수학적 접근을 필요로 한다.

 

그래도 일단 시작은 저 뉴런에서 시작해보자.

뉴런은 여러개의 뉴런들이 이어져 있다.

http://seb.kr/w/%EC%9D%B8%EA%B3%B5_%EC%8B%A0%EA%B2%BD%EB%A7%9D

이런 식으로 말이다.

이전 뉴런 세포들에게서 많은 신호들이 오고, 가운데 있는 뉴런세포는 그 여러 신호들을 종합하여 뒤쪽에 연결된 뉴런에게 신호를 줄지 말지 결정하게 된다.

어떨 땐 신호를 뒤로 넘겨주고, 어떨 땐 안주는 것이다.

그리고 이러한 동작원리를 모사한 것이 딥러닝 이라 할 수 있다.

 

인간은 참 많은 것들을 인간의 생물학적 원리에서 만들어 냈다.

 

학창시절 카메라와 눈에 대해 과학시간에 배웠던 기억이 있는가?

카메라는 전적으로 사람의 눈을 모티브로 하여 만들어낸 현대 기술의 산물이다.

최초에는 위 그림과 같이 필름을 통해 인화 하였었다.

물론 지금은 광센서를 통해 디지털화시키는 추세이다.

우리의 눈은 색을 3가지 색으로 인지한다.

원뿔세포(cone)의 종류가 3가지로 각각 빨강, 초록, 파랑의 영역에서 전기적 신호를 보낸다.

www.youtube.com/watch?v=VFEoQO55GUE

해당 영상에서 정말 재미있게 가시광선을 어떻게 인지하는지. 세포가 어떤 형식으로 빛을 전달하는지 알려준다.

심지어 심해의 무슨 새우는 10개가 넘는 색을 인지한다고 한다.

하지만 인간은 RGB 3개의 색을 인지하는 것이고, 그로 인해 우리의 카메라도 밑의 사진처럼 RGB 3가지 색을 통해 세상의 빛을 담는다.

 

오른쪽 흑백 사진은 무시하자.

 

시각세포가 RGB 3개의 값을 뉴런들을 통해 넘겨주는 것과 같이 사진 또한 RGB 3개로 이루어져 있다면 이를 똑같이 적용시킬 수 있지 않을까?

 

이렇게 이미지가 R,G,B로 이루어져 있다는 사실을 알면 딥러닝에 대한 기본적인 이해를 할 준비가 되었다.

 

자 이제 생각을 해보자.

우리는 위의 사진을 보면 "앵무새"라는 단어를 떠올릴 수 있다.

인간은 어떻게 앵무새가 앵무새라는 것을 알까?

정답은 '모른다.'

 

모른다!

 

어쩌면 과학이 많이 발달해서 시간이 많이 지나면 알게 될 수도 있지 않을까 싶지만 아직은 정확히 모른다.

하지만 우리가 알고 있는 사실은 하나 있다.

저 앵무새 사진을 보면 '앵무새'를 떠올린다는 것이다.

 

마찮가지로 우리는 고양이를 봤을 때 고양이라는 사실을 안다.

개를 봤을 때 개라는 사실을 안다.

 

만약 컴퓨터가 저 사진들을 보았을 때, (사진은 각각의 RGB 값들로 이루어진 데이터이다.) 그 사진을 통해 '고양이' 또는 '개' 라는 결과값을 내놓는다면? 그 사진을 알아본다고 할 수 있을 것이다.

 

그리고 그렇게 만들어 주는 것이 딥러닝이다.

 

딥러닝에 대해 자세히 파고들면 많은 이야기들을 해야한다.

Gradient descent, Optimize, overfitting, Activation function... 등등

하나씩 잡고 정리하려고 해도 산더미일 양이다.

그 모든 것을 다루는 것은 잠깐 체쳐두고 개념적으로 이해해보자.

이후 관련된 내용을 다뤄야 하는 순간이 온다면 자세하게 다루도록 하겠다.

 

http://seb.kr/w/%EC%9D%B8%EA%B3%B5_%EC%8B%A0%EA%B2%BD%EB%A7%9D

자 다시 뉴런으로 돌아왔다.

위 사진을 보면서 개념을 이해하도록 해보자.

뉴런의 세포는 이전 세포의 신호를 받아 다음 세포에게 신호를 넘겨줄지 말지 결정한다고 말했었다.

여기서 말하는 '신호'란 정말 말 그대로 전기적 신호이다. 생물학적으로 자세하게 이야기 하자면 그 전기적 신호 또한 마이너스와 플러스가 있다는 것을 알겠지만(비교적 최근에 nature를 통해 발표되었다.) 일단 편의를 위해 0과 1 이렇게 2개의 신호에 대해 이야기 해보자.

전기신호가 있다면 1, 없다면 0이다.

 

각각의 뉴런은 이전 뉴런들에게서 받은 정보들을 바탕으로 뒤로 신호를 넘겨줄지 말지 판단을 한다. 가장 단순하게 생각해보자. 앞에 연결되어 있는 뉴런들이 4개라고 해보자. 그리고 4개중에 2개 이상 1을 넘겨 줬으면 1을, 2개보다 적다면 0을 넘겨준다고 생각하자.

 

그럼 지금 저 가운데 있는 뉴런은 2라는 '기준'을 가지고 있는 것이다.

이전 뉴런들에게서 받은 신호의 합이 2를 넘기면, 뒤로 1을 전달하고 그렇지 않으면 0을 즉, 전달하지 않는 것이다.

 

그런데 우리가 아래의 파란 숫자의 그림과 같이 0을 뒤로 넘겨주었는데 사실은 1을 넘겨주는 것이 맞는 판단이었다고 해보자. 예를 들면 아이가 강아지를 보고 고양이라 생각하였는데 엄마가 '저건 강아지란다' 라고 알려준 것이다.

그렇다면 뉴런은 자기가 가지고 있는 '기준'을 정답을 향하는 방향으로 조금씩 바꾼다.

이전의 기준이었던 '2'를 '1'로 낮춤을써 옳은 판단을 할 수 있게 되는 것이다.

생각해야 할 것은 정말 많은 뉴런이 연결되어 있을 것이고 각각의 뉴런들이 자기만의 기준을 가지고 있다는 것이다. 인간이 학습을 한다는 것은 그 기준을 끊임없이 바꾸는 행위이며 그 기준에 의해 우리는 사고를 하고 생각을 한다.

이는 딥러닝에서도 같은 방식으로 이루어진다.

다만 앞서 잠깐 언급하였듯이 딥러닝은 수학적으로 조금 더 복잡하게 구성된다. (사람 뇌는 딥러닝보다 엄청나게 복잡하다. 어디까지나 앞서 언급한 설명에 비해 복잡하다는 것일 뿐이다.)

딥러닝의 부분을 도식화한 그림을 보자.

사람의 뉴런에서는 전기적 신호이기에 1 또는 0으로 예시를 들었다.

하지만 딥러닝에서는 그 신호를 Activation function을 통과 한 값을 통해 넘겨준다. (꼭 0과 1이 아닌 0.5673865 과 같은 값이 될 수 있다.)

뉴런에서는 '기준'이라는 값을 설정해두고 이야기 했다.

딥러닝에서는 이 기준을 weights 를 통해 설정한다.

그림에서 w는 앞에서 오는 것이라 헷갈릴 수도 있다. 하지만 앞에서 오는 값은 사실 앞 뉴런이 보내준 값이다. 즉, 저 값은 앞 뉴런의 '기준'을 통해 왔다고 이해해도 좋을 것 같다.

 

끝이다.

 

이렇게 만들어진 뉴런들을 정말 많이 쌓아올려서 서로서로 연결시키는 것이다.

이미지 라는 것은 결국 data이기 때문에 이 데이터를 넣어 우리가 원하는 9라는 값이 나오면 좋은 상황이다.

그러면 우리는 이 네트워크를 학습을 시킨다.

학습을 시킬 때 마다 모든 뉴런들은 9라는 값이 나오기 좋은 방향으로 '기준'을 변경한다.

딥러닝에서 이 좋은 방향을 위해서 여러가지 Loss들을 설정한다. 그리고 그 Loss를 줄이는 방향이 좋은 방향이라 생각한다. 이 좋은 방향을 찾는 과정을 Gradient descent라고 한다.

 

그런데 여기서 문제가 하나 있다. 바로 '얼마나' 변경 할 지이다.

너무 많이 변경하면 적절한 값을 벗어나서 더 안좋아 질 수도 있을 것이다. 현재 값이 1이고 적절한 기준 값이 2라고 해보자. 근데 우리가 알 수 있는 것은 위, 아래 라는 방향만 알 수 있는 것이다. 한번에 5만큼 움직이면 1에서 6으로 가게 될 것이다. 이는 이전보다 안좋은 결과를 낳게된다.

 

이 '얼마나'를 결정하는 것은 learning rate 이다. 그리고 '어떻게'를 생각하는 것이 optimazation 이다.

 

그 외에도 너무 많은 학습을 돌릴 경우 특정 데이터들에 고착화 되어버리는 overfitting이나 이를 막기 위한 여러 기법들이 있지만 이와 관련된 내용들은 직접 찾아보길 바란다.

 

이번 포스팅을 통해 말하고 싶은 것은

1. 이미지라는 것은 RGB로 이루어진 데이터이다.

2. 그것을 인간의 신경망을 본따 만든 뉴럴네트워크를 통해 학습시키는 것이 딥러닝이다.

 

이 두가지 사실이다.

반응형

'NLP' 카테고리의 다른 글

인공지능에서 Attention 이란? _ seq to seq  (0) 2021.06.11
NLP 벤치마크 GLUE  (0) 2021.06.11
RNN과 LSTM  (0) 2021.05.02
Word Embedding  (0) 2021.05.02
NLP 정리를 시작하며  (0) 2021.05.01