[3Blue1Brown] 신경망이란 무엇인가
3Blue1Brown 이라는 유튜브 채널에 업로드된 영상입니다.
오래전에 봤지만 갑자기 추천에 뜨길래 다시 봤더니 또 다른 느낌이어서 빠르게 요약을해봤습니다. 무언가를 설명할 때 영상처럼 이렇게 쉽고 interactive하게 설명할 수 있는게 대단한 것 같습니다. 영상을 보는 것이 제일 좋지만 그냥 갑자기 저도 설명해보고 싶어서 이미지 데이터라고 가정하고 적어보았습니다(반말)
Neural Network 는 어떻게 이미지를 이해할 수 있을까 ?

recognize or classification. 다음과 같은 28x28 해상도의 숫자 9의 필기체 이미지가 있다. 물론 잘 알겠지만 Mnist 데이터이다.
black은 0, white는 1의 픽셀 값을 가지므로 숫자 9에 해당하는 영역들은 0에서 1사이의 gray scale 값을 지닌다. 이를 신경망에서 컴퓨터는 어떻게 이해하여 판별할까?
Activation

첫번째 레이어의 784개의 뉴런은 28x28의 픽셀값인 input에 해당한다. 마지막 레이어는 output으로 0~9의 숫자 중 이미지가 어떤 숫자에 해당하는지를 의미하는 것으로 보인다.
신경망 내부의 뉴런은 그럼 어떤 역할을 할까. 바로 Activation(활성화)이다.
학습이 진행되면서 레이어가 깊어질 수록 이미지의 패턴에 해당하는 feature를 추출하여 다음 레이어로 정보를 전달 한다. 각각의 뉴런은 다른 정보를 represent할 것이고, 이미지가 얼마나 그 특징을 담고 있는지 활성화하여 다음 레이어로 넘겨줄지 말 지를 결정한다.
How much the system thinks the given image corresponds with the given digits.
Hidden layer

그렇다면 내부의 Hidden layer(은닉층)은 무슨 역할을 할까?
사진에서 보는것처럼 숫자 9 는 상단의 동그라미와 짝대기가 합쳐진 모습이다.
즉 이미지에는 굴곡이나 선 등의 특징이 있고, hidden layer는 이런 세부 피쳐들에 대한 정보를 담고있다. 이를 학습하면서 해당 뉴런이 represent하는 특징들을 얼마나 activate할지 최적화 할 것이다. 해당 영상은 CNN에 대한 설명은 아니지만 CNN의 convolutional filter 개념으로 보면 이해가 더 쉬울 것 같다.

CNN은 초반 레이어에서는 edge에 해당하는 피쳐를 추출하고 레이어가 깊어지면서 이미지의 abstract한 정보를 담아내며 이는 각각의 특징을 잡아내는 수많은 convolutional filters를 통해 가능하다. 레이어가 깊어질수록 피쳐맵의 사이즈는 작아지고, convolutional filter size는 동일하다.
따라서 상대적으로 작은 feature map에 비해 이전 레이어에서 커버하는 범위보다 많은 정보를 담고 있어서 후반부 레이어가 abstract하지 않을까 싶다.
Activation function, weight matrix


레이어의 각각의 뉴런들은 weight(가중치) 값을 가지고 있으며, 신경망은 이 weight값을 학습하게 된다. 사진 예시에서 보면, weight는 각 레이어의 뉴런의 곱만큼, 그리고 bias는 뉴런만큼 존재한다.
weight는 입력신호가 결과 출력에 주는 영향을 조절하는 매개변수이고, bias(편향)은 뉴런이 얼마나 쉽게 activation이 되는지를 조정하는(adjust) 매개변수이다. bias는 threshold(임계값)을 설정하여 모델이 데이터에 과적합되는 것을 방지하며 다양한 패턴을 학습할 수 있게 한다.
결국 딥러닝의 신경망 모델의 학습이란 기존 데이터를 학습하면서 최적화된 weight와 bias를 배우는 것이다.
'machine learning' 카테고리의 다른 글
[CS224N] Introduction and Word Vectors (0) | 2019.07.19 |
---|---|
딥러닝을 이용한 자연어 처리(3) (0) | 2019.07.19 |
딥러닝을 이용한 자연어처리(2) (0) | 2019.07.11 |
딥러닝을 이용한 자연어 처리(1) (0) | 2019.06.29 |
댓글
이 글 공유하기
다른 글
-
[CS224N] Introduction and Word Vectors
[CS224N] Introduction and Word Vectors
2019.07.19※ 스탠포드 자연어처리강좌인 2019 CS224N을 듣고 정리하여 블로그에 포스팅하기로 했습니다. 영어강의고 전문지식이 미숙하다보니 내용정리에 틀린점이 있을 가능성이 다분합니다. 일단은 정리용으로 포스팅하겠습니다. 강의의 원문 링크입니다. https://web.stanford.edu/class/cs224n/ 우리가 하려고 하는것은 단어의 의미(meaning)을 표현하는 것입니다. 그렇다면 Meaning 이란 무엇일까요. 바로 우리가 word나 phrase 등을 통해서 표현하고자 하는 idea를 뜻합니다. 텍스트가 아니더라도 writing이 아닌 다른 art의 방식으로도 아이디어는 표현될 수 있겠죠. 컴퓨터 사이언스에는 Denotational semantics(표시적 의미론) 으로 형식적인 의미를 제공합니… -
딥러닝을 이용한 자연어 처리(3)
딥러닝을 이용한 자연어 처리(3)
2019.07.19이제껏 classification에 대해서 공부했는데 generation 또한 이와 더붙어 자연어리에서 중요합니다. Language Modeling이란 input으로 하나의 문장이 들어왔을때 output으로 그에 대한 확률을 알려주는 모델입니다. 즉 기존의 데이터 문장을 토대로 문장이 등장할 확률을 계산 , scoring하는것으로 이해할 수 있습니다. 기존의 classification은 supervised learning 이였지만 , 언어 모델링은 비지도학습입니다. 그러나 순서가 있는 지도학습으로 바꿔서 풀 수 있습니다.(?) 이를 풀기 위해 Autoregressive language modeling(자기회귀 언어 모델링)에 대해 알아봅시다. n-gram language model이란 연속적인 n개의 토… -
딥러닝을 이용한 자연어처리(2)
딥러닝을 이용한 자연어처리(2)
2019.07.11Sentence representation을 어떻게 할까 Continous bag-of words(CBow) 단어장을 단어 주머니로 보게되고, 이에 따라 단어의 순서는 무시합니다. 문장에 대해서는 token의 순서를 무시하고 각각의 개별 토큰의 벡터화한 합을 average한다. 효과가 제일 좋기 때문에(경험상) classification 할 때 baseline으로 두고 시도하는게 좋다고 합니다. 관련해서 FastText[Bojanowski, 2017]를 언급하셨는데 저번에 sentiment analysis 공부하다 pytorch로 구현한 링크를 보아서 첨부하겠습니다. https://github.com/bentrevett/pytorch-sentiment-analysis/blob/master/3%20-%20… -
딥러닝을 이용한 자연어 처리(1)
딥러닝을 이용한 자연어 처리(1)
2019.06.29edwith에서 조경현 교수님의 nlp에 대한 강의가 있어 이를 수강하고 정리하여 포스팅해보려고 합니다. https://www.edwith.org/deepnlp/joinLectures/17363 Text Classification 텍스트에서 분류는 input으로 자연어로 된 문장(sentence)나 문단(paragraph) 혹은 Document가 들어왔을 때, output으로 해당 텍스트가 어떤 카테고리에 속하는 지를 알려주는 것입니다. 카테고리가 몇개냐에 따라서 어떤 분류 모델인지를 나눌 수 있습니다. Sentiment analysis : 카테고리가 positive인지 negative인지 2개 binary한 classification이며 흔히 영화 등의 리뷰 데이터를 예시로 들 수 있습니다. Text …
댓글을 사용할 수 없습니다.