인공지능 in 네부캠 AI 4기/딥러닝 기본 9

Generative Models

Generative Model 생성 모델. 흔히 생각해볼 수 있는 생성 모델은 어떤 그림을 만들어주는 모델을 들 수 있다. 강아지 그림을 예시로 들어보자. 우리에게 일련의 강아지 그림이 주어졌다. 이때 우리의 모델은 이 입력값들을 토대로 강아지 그림을 그려내면 된다. 그러기 위해서 우리의 모델은 어떤 사진이 주어졌을 때 그것이 강아지인지 아닌지 구분해내는 능력도 갖춰야 한다. 확률론적으로 말하자면 우리는 입력값들(그림)을 토대로 어떠한 확률분포probability distribution를 만들어낸 후에 이 확률분포를 따르는 어떤 그림을 만들 수 있어야 하며, 어떤 그림이 주어졌을 때는 이것이 확률분포에 따르는지 확인할 수 있어야 한다는 것. 우리의 모델이 정말 확률분포, 즉 모든 구간의 넓이가 1인 분포..

Transformer

이번에느 LSTM과는 조금 다르면서 연속데이터(보통 시계열 데이터라고 부르는 모양인데, sequence는 그냥 연속이라 부르는 게 낫지 않나 하는 생각)를 다루는 모델, Transformer를 보자. 이 모델은 특히 NLP, 자연어 처리에 사용하기 적합한 모델이다. 우리가 쓰는 언어에서 한 문장은 길이가 달라지기도 하고 어순이 바뀌기도 하고, 생략이 일어나는 등의 다양한 변형이 가해질 수 있다. "나는 음식을 먹는다." 와 "나는 먹는다 음식을." 이라는 두 문장을 RNN에서는 다르게 보게 되지만 transformer는 self-attention을 이용해 이러한 문제를 해소한다. Transformer 재귀적인 구조 없이, 한번에 N개의 데이터를 처리한다. 참고로 NLP에서 잘 쓰인다고 해서 다른 곳에 쓰..

Recurrent Neural Networks

이번에는 RNN을 보자. 우리가 처리해야 할 데이터 중에서는 이미지와 다르게 소리나 말 같은 연속 데이터Sequence data.가 있다. 그래서 이에 맞춰서 sequential model이 필요하다. 연속 데이터를 다룰 때 어려운 점은 끝이 어딘지를 알 수가 없다는 것이다. 그렇기에 입력 차원의 깊이를 파악하기 쉽지 않다. 또한 연속 데이터는 이전 데이터와의 연관성에서 주어지는 것이기 때문에 고려해야할 이전 데이터의 양이 갈수록 늘어난다. 두번째 문제를 해결하는 방법 중 하나는 현재 데이터를 기준으로 과거에서 고려할 데이터 수를 딱 정하는 것이다. 이런 식으로 움직이는 모델을 마르코브 모델Markov model이라고 부른다. 가령 지금으로부터 10번째 전까지 들어온 데이터까지만 고려하겠다고 지정한다던가..

Computer Vision Applications

CNN에서는 단순히 한 이미지가 무엇인지에 대해서만 분류만 하는 게 아니다. 다른 방식으로도 적용이 되는데 그것을 보자. Semantic Segmentation 한 이미지를 픽셀마다 구분 짓는 작업. 자전거 타는 사람 사진에서 자전거랑 사람, 배경을 각각 따로 구분하내는 것. 이런 건 자율주행에서 많이 쓰이는 문제이다. 이걸 어떻게 하지? Fully Convolutional Network 여태 우리가 봤던 CNN에서는 마지막에 dense layer를 거쳐 하나의 라벨로 분류되도록 한다. 하지만 이 dense layer를 없애게 되면(convolutionalization이라 부른다고) 평탄화 작업이 없어지니 채널이 겹겹이 쌓인 결과가 나오게 되는데 이를 Fully Convolutional Network라 ..

Modern Convolutional Neural Networks

처음에 나온 CNN 이후로, CNN은 어떻게 발전해왔을까? ImageNet Large-Scale Visual Recognition Challenge, 줄여서 ILSVRC라는 대회에서 수상한 모델을 기준으로 보자. 이 대회에서는 이미지를 가지고 각종 작업을 하는 성능을 가지고 비교하는데, 2015년을 기점으로 모델들의 오차율이 인간의 오차율이라 여겨지는 5퍼센트 밑으로 내려가게 됐다. 본격적으로 CNN이 발전한 시기와 겹친다. AlexNet alexnet의 특이점은 당시 컴퓨터의 성능 이슈로 gpu가 두 개를 사용했다는 것. 그리고 처음에 11, 11필터를 사용했다는 것. 이후에 보겠지만 이렇게 필터의 크기가 큰 것은 좋지 않다. 왜 갑자기 이 모델은 혜성처럼 나와서 성공했을까? Relu 활성함수 relu..

Convolutional Neural Networks

CNN 여태 많이 들어봤던 CNN. Convolution이란 합성곱 연산을 말한다. 뭐, 수학적으로 뭔가 어려운 연산인 것 같다. 포인트는 함수가 주어졌을 때, 목적에 따라 다른 함수를 통해 분해, 변환, 필터링을 한다는 것이다. ai에서는 주로 이미지를 변환하고 처리하는데 쓰이는 연산을 convolution이라 이름 짓고 쓴다. I는 이미지, K는 우리가 쓰는 필터가 된다. 이렇게 보면 잘 이해가 되지 않지만.. 이렇게 보면 이해가 쉬울 듯하다. 원래 7,7이던 이미지를 3,3필터로 도장 찍듯이 쾅쾅 찍어서 한번에 찍힌 값을 하나의 픽셀로 만든 꼴이다. 결과적으로 7,7 이미지에 3,3필터를 5,5(25)번을 찍어서 결과물을 낸 것이다. 이것은 어떤 의미인가? 우리가 적용하고자 하는 필터에 따라 우리는..

Optimization

최적화가 뭘까? 최적화 기법에는 어떤 것이 있을까? 오늘은 경사하강법에 초점을 맞춰 최적화 기법을 알아보자. 용어 Generalization, Underfitting & Overfitting 일반화. 우리는 학습을 시켜서 어느 데이터를 넣더라도 잘 작동하는, 잘 일반화된 모델을 만들고 싶어한다. 그래서 우리는 학습 데이터를 통해 계속 학습을 시키는데 이러면 학습 데이터에 대한 오차는 줄어든다. 그러나 결과적으로 일반적인 데이터에 대한 오차는 어느 시점을 지나면서 점차 커지기 시작한다. generalization gap이란 이러한 test error와 training error의 차를 말하는데, 어느 정도의 학습이 지나면 이 갭이 커지게 되고 이전에 학습을 마치는 게 중요하다. 참고로 이 갭이 적다고 해서..

Neural Networks & Multi-Layer Perceptron

딥러닝, 뉴럴 네트워크가 뭘까? 학습 단계가 어찌 되는가? Neural Network 뉴럴 네트워크는 생체 뇌신경망을 모방한 컴퓨터 시스템이라는 것이 기본적인 정의이다. 그런데 사실 구조가 어느 정도는 비슷할 수 있지만 신경망이라는 아이디어를 모방한 것일 뿐, 세부적인 내용에서는 큰 차이가 있다. 인류가 최초로 발명한 비행 모델이 새를 모방했지만, 지금의 비행기는 새와 닮은 점보다는 다른 점이 훨씬 더 많듯이. 비선형 연산이 반복적으로 이뤄지는 함수를 근사하는 모델이란 표현이 뉴럴 네트워크를 표현하는 더 좋은 정의일지도 모른다. 작동 방식을 통한 정의! 이제 방식을 이해해보자. 우리가 이러한 네트워크를 통해 해결하려는 문제 중 가장 간단한 문제는 선형 문제라 할 수 있다. W(가중치)와 b(편향)를 찾는..

Historical Review

딥러닝은 어떻게 출발했을까? 딥러닝은 뭘까? 딥러닝의 핵심 요소 모델이 학습할 수 있는 데이터 데이터는 우리가 풀고자하는 문제에 의존적이다. 사진 데이터를 받을 때, 거기에서 한 개체를 찾는 것이 문제일 수도 있고, 영역을 구분하는 게 문제일 수도 있다. 그러한 데이터를 학습하고자 하는 모델 모델은, 뭐 우리가 아는 흔한 모델. 그 모델의 부정확도를 측정하는 손실함수 모델이 어떻게 학습할지를 정하는 손실 함수. 회귀 문제를 풀 때는 단순하게 차이를 줄이는 평균제곱오차. 분류 문제에서는 크로스 엔트로피. 확률적인 문제를 다룰 때는 최대가능도 추정 그 손실함수를 최소화하는 최적화 알고리즘 대체로 우리가 활용하는 것은 손실함수를 일차 미분한 값이다. 대표적으로 단순하게 사용하는 것이 바로 경사하강법이다. 이걸..