본문 바로가기

Deep Learning22

VGG-16, VGG-19, 2014 1. VGG 개요 VGG는University of Oxford의 Visual Geometry Group에서 제안한 ILSVRC, 2014 대회에서 준우승한 CNN 구조 (VGG-19)입니다. 2014 대회의 우승은 GoogLeNet (inception - v1)이 차지했지만, VGG의 구조가 워낙 간결해서 더 많은 인기를 얻었습니다. Simonyan et al., 2014 연구의 핵심은 네트워크의 깊이를 깊게 만드는 것과 모델 성능의 관계를 확인하는 것이었습니다. 때문에 kernel의 크기를 3x3으로 고정하고 layer를 깊게 만들어가며 성능을 비교했습니다. 논문에 실려있는 위 그림 Fig. 1에 다양한 VGG 실험 결과가 있습니다. 먼저 A, A-LRN에서는 구조 A에 Local Response No.. 2023. 2. 20.
AlexNet, 2012 1. AlexNet 개요 AlexNet은 Krizhevsky, Alex et al., 2012에서 제안된 CNN 구조로 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)의 2012년 대회에서 top 5 test error rate 15.4%로 2위 error rate 26.2%와 큰 차이를 만들며 1위를 차지했습니다. AlexNet은 단순히 2012년 대회에서 우승했을 뿐 아니라, CNN을 보편화하는 큰 역할을 했습니다. AlexNet이 좋은 성과를 내고, 보편화하는 데 중요한 몇 가지 기여가 있는데, 구조적인 특징과 과적합(Overfitting)을 줄이기 위한 노력입니다. 구조적인 관점에서는 ReLU(Rectified Linear Unit)사용, L.. 2023. 2. 10.
LeNet-5, 1998 1. LeNet-5 등장배경 LeNet은 CNN을 처음으로 개발한 Yann Lecun 연구팀이 1998년에 개발한 CNN알고리즘의 이름입니다. LeNet-5는 현대 CNN에서 성능이 좋은 모형은 아닙니다. 하지만 최초로 CNN을 제안했다는데 큰 의의가 있습니다. Lecun, Y. et al.은 LeNet 이전의 전통적인 이미지 분류 알고리즘의 세 가지 문제점을 설명합니다. 1) 전통적인 방법은 hand-crafted feature extraction을 하는데, 사람이 설계한 feature extractor 이다보니 제한된 학습이 이뤄질 수 밖에 없습니다. 따라서 Feature extractor 자체부터 학습이 이루어져야 합니다. 2) Fully-connected Layer (FC)의 경우 너무 많은 가중.. 2023. 1. 30.
Transformer (2) 이번 포스팅에서는 Transformer을 이어서 살펴보도록 하겠습니다. Transfromer를 이해하기 위해선 6개의 모듈을 이해해야 됩니다. (Input Layer, Positional Encoding, Multi-Head Attention, Masked Multi-Head Attention, Add. & Norm. Layer, Feed Forward Layer) 이전 포스팅에서는 Input Layer, Positional Encoding을 살펴보았고, 이번 포스팅에서는 나머지 모듈을 살펴보려고 합니다. Transformer Self-Attention? Input에 Positional Encoding을 더해준 후 Attention Layer에 진입하게 됩니다. 예전 포스팅에서 언급된 것 처럼 Atten.. 2022. 2. 21.
Transformer (1) 이번 포스팅에서는 2017에 발표된 논문인 "Attention is all you need"에 수록된 Transformer를 살펴보겠습니다. Transformer Background Transformer의 등장 배경은 두 가지의 장점을 계승하고, 한 가지의 단점을 보완하는데 있습니다. 직전 포스팅에서 살펴본 Bahdanau Attention, Luong Attention과 같은 Attention Mechanism이 잘 작동하고 있고, self-attention (Query, Key, Value의 출처가 같은 Attention)도 마찬가지로 Neural Translation Machine 영역에서 효과적이 었습니다. 또한 Seq2seq을 시작으로 Encoder-Decoder 구조로 Encoder로 Cont.. 2022. 1. 19.
Luong Attention 이번 포스팅에서는 지난 Bahdanau Attention에 이어서 Luong Attention을 살펴보겠습니다. Luong Attention 2014 Bahdanau et al.이 Neural Machine Translation (NMT)영역에 처음으로 Attention Mechanism을 적용하였습니다. Luong et al.은 "Effective Approaches to Attention-based Neural Machine Translation"에서 Bahdanau가 진행한 연구를 제외하면 NMT 영역에 Attention Mechanism 연구가 적다며, simplicity와 effectiveness를 염두한 방법을 제안합니다.Luong et al.의 출발점이 간단명료한 방향성을 갖고 있는 만큼 이.. 2021. 12. 9.
Bahdanau Attention 이번 포스팅에서는 Neural Machine Translation 영역에서 Attention Mechanism의 효시가된 Bahdanau Attention에 대해서 다뤄보겠습니다. Bahdanau Attention은 2014에 처음 등장한 이후, Attetion이라는 새로운 접근법 아래 활발한 연구와 발전을 이루며 기계 번역이 크게 성장했습니다. Why Attention? 지난 포스팅에서 Seq2Seq을 살펴봤습니다. 고정된 크기의 input과 output을 처리하던 전통적인 Recurrent Neural Networks에서 가변적 길이의 input, output을 처리할 수 있는 방법이었습니다. Seq2seq은 크게 Encoder Part와 Decoder Part로 구분되어 있습니다. Encoder에서.. 2021. 11. 24.
Seq2seq Model (Sequence to Sequence Model) 개요 이번 포스팅에서는 Sequence to Sequence (Seq2seq) Model에 대해서 알아보겠습니다. Seq2seq 모형은 LSTM(또는 GRU) 기반 모형으로 고정된 길이의 sequence를 입력받아, 입력 sequence에 알맞은 길이의 sequence를 출력해주는 모형으로 2014, Google et. al에 최초 제안되었습니다. 왜? Deep Neural Networks (DNNs)은 다양한 분야에서 좋은 성과를 거두어 왔습니다. 다만 DNNs은 고정된 차원의 feature와 고정된 차원의 출력에 특화된 방법입니다. 그래서 입력과 출력의 길이가 그때 그때 다른 데이터를 학습하고, 이를 응용하는 문제에는 적합하지 않습니다. 대표적으로 기계 번역 문제를 생각할 수 있습니다. 기계 번역은 .. 2020. 4. 20.
Autoencoder (오토인코더) 이번 포스팅을 시작으로 single autoencoder부터 다양한 autoencoder를 포스팅 할 예정입니다. Autoencoder는 역사적으로도 굉장히 중요한 의미가 있습니다. 다층신경망 학습시 기울기 소실문제와 가중치 초기 값에 영향을 많이 받아 학습이 어려운 문제가 있었는데 G. E. Hinton, 2006에 의해서 Restrited Boltzmann Machine을 이용하여 가중치 초기값을 구축하고, 기울기 강하법을 적용햇더니 학습이 잘 된다는 것이 밝혀져 deep learning의 부흥을 이끌었기 때문입니다. 하지만 사실 현대 딥러닝 생태계에서는 학습방법의 발전으로 과거처럼 RBM으로 초기 값을 지정하진 않습니다. 또한 현대에 이르러선 autoencoder는 처음엔 비지도 학습 (unsupe.. 2020. 1. 14.
RNN Tensorflow + Keras 이번 포스팅은 Tensorflow의 keras를 이용하여 RNN의 다양한 구조를 구현해보는 것이 목표입니다. RNN에는 크게 세 가지 방법이 있는데 simple RNN, LSTM, GRU가 있습니다. 이번 실습은 simple RNN을 이용하여 many-to-one, many-to-many, stacked many-to-one, stacked many-to-many 네 가지를 살펴보겠습니다. simple RNN을 이용하여 설명하지만 단순히 아래 등장할 코드에서 simple RNN을 LSTM, GRU로 바꾸어 주면 내용은 같기때문에 응용하는데 큰 문제는 없을 것 입니다. import numpy as np import tensorflow as tf from tensorflow import keras Dimen.. 2019. 12. 7.
Gated Recurrent Units (GRU) Gated Recurrent Units (GRU) GRU는 게이트 메커니즘이 적용된 RNN 프레임워크의 일종으로 LSTM에 영감을 받았고, 더 간략한 구조를 가지고 있습니다. 아주 자랑스럽게도 한국인 조경현 박사님이 제안한 방법입니다. (Cho et al., 2014) GRU는 LSTM에 영감을 받은 만큼 굉장히 유사한 구조로 LSTM을 제대로 이해하고 있으면 쉽게 이해할 수 있습니다. LSTM은 이곳에 자세히 정리되어 있으니 가볍게 읽고 이어질 포스팅을 읽으면 더 유익할 것 같습니다. GRU의 작동원리 LSTM과 같은 그림을 이용해서 GRU를 이해해보겠습니다. 전체적인 흐름은 아래와 같습니다. 뭔가 되게 복잡해보이지만, LSTM을 이해하셨다면 생각보다 단순합니다. 하나씩 단계별로 살펴보도록 하겠습니다... 2019. 8. 15.
Long Short-Term Memory (LSTM) 이번 포스팅에서는 Long Short-Term Memory (LSTM)에 대하여 작성하고자 합니다. LSTM은 이전 포스팅에서 다룬 RNN의 발전된 형태입니다. RNN 구조의 큰 특징은 과거의 정보를 은닉층에 저장하는 것인데, Bengio et al., 1994에 Long-term dependency 문제로 과거의 정보를 충분히 활용할 수 없음을 알게되었습니다. 위 RNN의 단점을 보안한 모형 LSTM을 Hochreciter et al., 1997이 제안합니다. 먼저 Long-term dependency 문제가 어떤 것인지 살펴보고 LSTM의 구조와 작동원리에 대해서 살펴보도록 하겠습니다. The Problems of Long-term Dependencies 장기의존성 문제(the problems of .. 2019. 8. 15.
Recurrent Neural Networks (RNN) RNN이란? Recurrent Neural Networks(RNN)은 순차적 데이터를 분석하기 위한 딥러닝 구조로 Rumelhart et al., 1986에 근간을 두고있습니다. Deep Neural Network (DNN)은 은닉층 내 노드간에 연결이 안되어 있지만, RNN은 은닉층 내 노드를 연결하여, 이전 스텝의 정보를 은닉층 노드에 담을 수 있도록 구성했습니다. 위 그림에서 볼 수 있듯 $x^{(1)}$으로 부터 $h^{(1)}$을 얻고 다음 스텝에서 $h^{(1)}$과 $x^{(2)}$을 이용하여 과거 정보와 현재 정보 모두를 반영할 수 있습니다. 은닉층의 노드의 값을 $t+1$ 시점으로 넘겨주고, $t+1$ 시점의 입력을 받아서 계산하는 작업을 반복적으로 진행하여 "Recurrent" 이름이 .. 2019. 8. 13.
Word2vec 학습 개요 이전 포스팅에서 Word2vec에 대해서 다루었습니다. CBOW와 Skip-Gram 모두 학습할 목적함수의 계산 복잡도가 높았습니다. CBOW의 목적함수는 $$\mathcal{L}_{CBOW}=-u_{c}^{\top}\hat{v}+\log{\sum_{j=1}^{|V|}exp(u_{j}^{\top}\hat{v})}$$와 같으며, Skip-Gram의 경우 $$\mathcal{L}_{skip-gram}=-\sum_{j=0,j\ne m}^{2m}u_{c-m+j}^{\top}v_{c}+2m\log{\sum_{k=1}^{|V|}exp(u_{k}^{\top}v_{c})}$$였습니다. 계산 복잡도가 높다는 말은 $|V|$와 직접적인 관련이 있습니다. $|V|$는 분석하고자하는 데이터로 부터 구축한 사전의 단어의 .. 2019. 7. 28.
Word2vec 본 포스팅은 스탠포드 대학교 CS244n 강의 자료를 참고하여 작성되었습니다. 이전 포스팅에서는 SVD 기반 word embedding에 대해서 살펴보았습니다. 포스팅 말미에 SVD 기반 방법의 단점 몇 가지를 서술하며 Word2vec을 예고했습니다. 이번 포스팅에서는 Word2vec에 대해서 살펴보겠습니다. Word2vec 개요 SVD 기반 모형에서는 대용량의 데이터를 계산하고 정보를 도출하는 방식을 취했습니다. 이에 따라 단어가 하나만 추가되더라도 많은 계산을 해야되는 단점이 있었습니다. 전체를 계산하는 것 대신, 어떤 계산을 한 번 반복할 때마다 가중치를 학습할 수 있고, 계속 반복하여 주어진 맥락(context)에 따른 단어(word)의 확률을 계산해나가는 방식을 Iteration based me.. 2019. 7. 22.
Word Embedding 개요 본 포스팅은 스탠포드 대학교 CS244n 강의 자료를 참고하여 작성되었습니다. Natural Language Processing (NLP)란 무엇인가? 자연어(Natural Language)란 인간이 실생활에서 사용하는 언어를 말하며, 자연어 처리(Natural Language Processing)이란 자연어의 의미를 분석하여 컴퓨터가 처리 할 수 있도록 하는 일을 말합니다. 인간의 언어는 의미를 전달하기 위한 어떤 구조적인 체계입니다. 예를 들어 "말을 하다." 와 "말이 달린다." 두 문장에서 말은 다른 의미를 지닙니다. 이에 따라 NLP는 다른 머신러닝이나 컴퓨터 비전과는 매우 다른 성격을 지닙니다. NLP는 아주 쉬운 영역부터 어려운 영역까지 다양한 과제가 있습니다. 쉬운 영역으로는 오타 확인, .. 2019. 7. 8.
CNN 역전파 (Backpropagation for CNN) 이번 포스팅에서는 CNN의 가중치를 학습하기 위한 역전파가 계산이 어떻게 이루어지는지 살펴 보겠습니다. 이번 포스팅에서 이미지 픽셀 좌표는 좌상단에서 0 부터 시작하기로 약속하겠습니다. 예를 들어 3x3 이미지에서는 (0, 0)으로 시작해서 (2, 2)로 끝나는 형태입니다. 역전파를 하려면 그래디언트가 필요합니다. Convolutional layer의 연산을 수식으로 표현해보겠습니다. 보통 CNN 구조는 Convolutional Layer, Activation Function, Pooling의 순으로 분석이 진행됩니다. 이를 도식화 하면 다음과 같습니다. 큰 흐름은 입력($x$)에 필터 가중치($w$)로 convolution하고($z$), 이를 활성화 시킨 뒤($a$), Pooling($x$)하는 절차입.. 2019. 7. 2.
Convolution Neural Networks (합성곱 신경망) CNN 이란? CNN은 Convolutional Neural Networks의 줄임말로 인간의 시신경을 모방하여 만든 딥러닝 구조 중 하나입니다. 특히 convolution 연산을 이용하여 이미지의 공간적인 정보를 유지하고, Fully connected Neural Network 대비 연산량을 획기적으로 줄였으며, 이미지 분류에서 좋은 성능을 보이는 것으로 알려져있습니다. CNN의 간단한 역사 시신경의 구조 David H. Hubel과 Torsten Wiesel은 1959년 시각 피질에 구조에 대한 고양이 실험을 수행했습니다. 실험에서 시각 피질 안의 많은 뉴런들이 작은 local receptive field를 가진다는 사실을 밝혀냈습니다. Local의 의미는 보이는 것 중 일부 범위 안에 있는 시각 자.. 2019. 6. 23.
기울기 강하법 기본 본 포스팅에서는 답러닝 역전파 알고리즘에 적용되는 여러 기울기 강하법을 익히기 위한 기본 개념에 대해서 정리하려고 합니다. 초보적인 내용부터, Batch Gradient Descent, Stochastic Gradient Descent, Mini-Batch Gradient Descent까지 살펴보겠습니다. 기울기 강하법 (Gradient Descent Algorithms) 인공신경망의 가중치를 학습하기 위해서 기울기 강하법을 사용합니다. 기울기 강하법은 국소 최소값(Local Minimum)을 찾기 위한 수치적인 방법(numerical method)으로 기울기의 역방향으로 값을 조금씩 움직여 함수의 출력 값이 수렴할 때까지 반복하는 방법입니다 어떤 함수 $f$의 국소 최소값을 찾기 위한 기울기 강하법은 .. 2019. 6. 1.
Gradient Descent Algorithms 본 내용은 "An overview of gradient descent optimization algorithms."을 참고하여 작성하였습니다. 기울기 강하법 기본 포스팅에서 기울기 강하법의 기초적인 내용과 강하법시 이용되는 데이터의 크기에 따라서 Batch, Mini-Batch, Stochastic Gradient Descent를 구분했습니다. 위 세 가지 알고리즘을 편의상 앞에 "Vanilla(기본의)"를 붙여부르도록 하겠습니다. 용어의 혼란을 줄이기 위해 첨언하면, 통상적으로 딥러닝 프레임워크(tensorflow, keras 등)에 적용된 Batch Gradient라는 컨셉은 Mini-batch를 의미합니다. Challenges Vanilla Mini-batch Gradient Descent는 좋은 .. 2019. 5. 30.
Artificial Neural Network (인공신경망) Artificial Neural Network (인공신경망) 인공신경망(ANNs; Artificial Neural Networks)은 인간 뇌의 신경망에서 영감을 받은 분석방법으로, 입력($X$)과 반응($Y$)을 모두 알고서 학습하는 지도 학습(Supervised Learning)의 한 부분입니다. 생물학적 뉴런의 수상돌기(Dendrite)은 다른 신경세포로부터 입력(Inputs)을 받아들이는 역할을 합니다. 받아진 입력들은 세포체(Cell body)에서 정해진 방식에 따라 처리를 합니다. 이어서 축색(Axon)은 처리된 정보를 다른 신경세로 전달하는 역할을 합니다. 인공신경망은 생물학적 뉴런의 작동 과정을 흉내낸 것(정확히 같지는 않음)으로, 데이터를 입력(input)으로 받아, 가중치와 입력을 곱한.. 2019. 5. 24.
Perceptron (Deep Learning의 시작) 간략한 Deep Learning의 역사 F. Rosenblatt의 Perceptron모형부터 현재 GAN, R-CNN에 이르기 까지의 간략한 역사입니다. Deep Learning 관련 포스팅은 크게 역사 기반 진행될 예정입니다:) 먼저 Rosenblatt의 Perceptron 모형부터 시작하겠습니다. Perceptron (단층퍼셉트론) 퍼셉트론 모형은 1958년 F. Rosenblatt이 최초 고안한 모형으로 현재 딥러닝의 효시가 되었습니다. 퍼셉트론 모형은 단순히 입력 변수($x$)와 가충치($w$)의 곱이 thereshold($\theta$)보다 크면, 1, 아니면 0으로 분류하는 모형입니다. 간단히 수식으로 나타내면, $$x^{\top}w+b\geq\theta\rightarrow 1$$가 됩니다. .. 2019. 5. 24.