딥러닝(DL) 29

Explaining and Harnessing Adversarial Examples (ICLR 2015) - Adversarial attack(FGSM)

적대적 공격(Adversarial attack) 이란 딥러닝 모델의 취약점을 이용하여 만든 공격 방법으로, 특정 노이즈값을 이용해 의도적으로 오분류를 이끌어내는 입력값을 만들어 내는 것을 의미합니다. 논문 내 이미지를 통해 예를 들어보면 왼쪽 이미지는 누가 봐도 판다 사진이죠. 가운데 노이즈 이미지는 사람이 보기에 전혀 의미가 없는 이미지 처럼 보입니다. 그러나 가운데 노이즈는 특정 feature 값을 가지고 있는 의도적으로 만들어낸 노이즈이고, 실제로 왼쪽의 판다와 가운데 사진을 더해서 만든 사진이 오른쪽 사진인데, 육안으로 보기에는 똑같아 보이지만 오른쪽 사진은 gibbon, 긴팔 원숭이로 딥러닝 모델이 분류하고 있는 겁니다. 즉 딥러닝 모델은 사람보다 훨씬 자세하게 이미지의 정보를 학습하기 때문에,..

[DL] 선형 회귀 ( Linear Regression )

오늘의 포스팅에서는 파이썬(Python) 만으로 그리고 파이토치(PyTorch)를 이용하여 간단한 선형 회귀 모델을 만들어 보겠습니다. Python 선형 회귀 구현 (Bias X) Python 선형 회귀 구현 (Bias X) PyTorch 선형 회귀 구현 PyTorch 다변수 선형 회귀 구현 Python 선형 회귀 구현 (Bias X) 하루 노동 시간 하루 매출 1 25,000 2 55,000 3 75,000 4 110,000 5 128,000 6 155,000 7 180,000 위 표와 같이 하루 노동 시간에 따른 하루 매출 데이터가 있다고 가정하겠습니다. 하루 노동 시간이 8시간일 때 하루 매출은 얼마가 될까요? 이 질문에 대답하기 위해서는 1시간, 2시간, ... , 7시간을 일했을 때 얼마를 벌었..

Attention is All You Need (NIPS 2017) - Transformer

오늘 소개할 논문은 최근에도 자연어 처리와 비전 분야 모두에서 월등한 성능을 보이면서 발전하고 있는 Transformer 에 대한 논문입니다. 비전공자도 누구나 아는 ChatGPT 에서 GPT model 또한 Transformer 의 디코더 아키텍처를 활용한 모델입니다. Transformer 을 처음으로 제안한 논문이 바로 "Attention is All You Need" 으로 논문의 이름에서 알 수 있듯 트랜스포머 아키텍처는 Attention 메커니즘을 핵심 아이디어로 사용하고 있다는 것을 유추할 수 있습니다. 바로 이전의 논문 리뷰 순서가 Seq2Seq, Seq2Seq with Attention 논문이었습니다. Seq2Seq 는 기존의 통계적 기계번역이 아닌 신경망 기계번역, 그 중에서도 인코더-디코..

Neural Machine Translation by Jointly Learning to Align and Translate (ICLR 2015) - Seq2Seq with Attention

이전의 Seq2Seq 모델은 하나의 인코더 LSTM을 사용해 입력 문장을 하나의 고정된 크기를 가지는 Context vector 로 변환하고, 이 Context 벡터를 디코더 LSTM의 입력으로 사용해 출력 문장을 뽑아내는 방법을 사용하였습니다. 이 구조의 문제점 중 하나는 병목(Bottlenect) 현상으로 성능 하락의 주 원인입니다. 또한 하나의 Context vector 가 소스 문장의 모든 정보를 가지고 있어야 하므로 성능이 저하된다는 문제점 또한 발생합니다. 이를 해결하기 위해 매번 소스 문장에서의 출력 전부를 입력으로 받으면 어떨까? 라는 의문점으로 시작하는 것이 본 논문의 핵심입니다. 이번 논문은 Seq2Seq 모델에 어텐션(Attention) 메커니즘을 적용한 논문입니다. 디코더의 개선에 ..

Sequence to Sequence Learning with Neural Networks (NIPS 2014) - Seq2Seq

2014년 NIPS에 발표된 Sequence to Sequence Learning with Neural Networks 논문 리뷰 포스팅입니다. 이 논문은 LSTM을 활용한 Seq2Seq 기계 번역 아키텍처를 제안하는 NLP 분야의 기초 논문입니다. 이전의 DNN을 통한 Translation 은 SMT, 즉 통계적 방식을 통한 번역의 부분적 요소로만 활용되었습니다. 언어의 특성 상 요소들의 관계나, 연속적인 데이터를 통해 출력을 내놓는 것이 쉽지 않았기 때문입니다. 이 후 RNN 이나 LSTM 처럼 Sequence data에 대해서도 좋은 성능을 보여주는 모델이 등장하게 됩니다. 그러나 이들의 문제점은 Input 으로 Fixed-length vector를 넘겨주어야 한다는 점인데, 가변적인 길이를 가지는..

An Overview of Gradient Descent Optimization Algorithms (Arxiv 2016)

2016년 학회는 아닌 아카이브에 등재된 논문이며, 인용 횟수가 꽤 높은 Gradient Descent Optimaization Algorithms 논문입니다. 전반적인 GD Optimization Algorithm 들에 대해 정리가 잘 되어 있는 논문이며, 알고리즘들의 동작 원리와 사용 이유, 차이점에 대해 이해하기 위한 논문 리뷰입니다. 이 논문 내의 기능들은 대부분 PyTorch 내에 구현되어 있기 때문에 사용은 어렵지 않습니다. 애초에 알고리즘들을 정리하는 논문이기 때문에 원본 논문의 내용을 살리되 논문 내용 뿐 아니라 추가적으로 이해에 도움이 되는 외부 자료나 gif 등을 추가하면서 정리하도록 하겠습니다. An overview of gradient descent optimization algor..

[DL] 역전파를 이용한 2층 신경망 학습 구현

구현이라기보단 제가 스스로 이해하기 위해 주석 및 설명을 달아놓는 포스팅입니다. 개념 설명이 아닌 포스팅이라 코드를 보실 분 아니면 넘어가셔도 좋을 것 같습니다. # coding: utf-8 import sys, os sys.path.append(os.pardir) # 부모 디렉터리의 파일을 가져올 수 있도록 설정 import numpy as np from common.layers import * from common.gradient import numerical_gradient from collections import OrderedDict class TwoLayerNet: def __init__(self, input_size, hidden_size, output_size, weight_init_std..

[DL] 역전파 ( Backward-propagation )

다층 퍼셉트론(MLP) 같은 깊은 신경망이 등장한 후 선형으로 분류가 가능하지 않은 데이터들을 분류하는 것이 가능해졌습니다. 하지만 모델의 깊이(depth)가 깊어질수록, 즉 모델의 층이 많아질수록 모델의 가중치의 수는 기하급수적으로 많이 늘어납니다. 기존의 경사하강법(수치미분)은 기울기를 이용하여 가중치를 업데이트하는 방법을 사용하는데, 이 때 수치미분 방법으로 여러 층에 존재하는 가중치들을 모두 하나하나 업데이트하는 것은 매우 많은 연산량과 메모리를 요구합니다. 이를 해결하고자 고안된 알고리즘이 역전파 알고리즘(Backpropagation algorithm) 입니다. 역전파를 설명하는 대표적인 2가지 방법은 계산 그래프(Computational graph) 로 설명하는 방법과, 다변수 미분을 직접 수..

[DL] 학습 알고리즘 구현 ( 2층 신경망 )

앞선 포스팅에서 다루었던 내용들을 종합하여 간단한 구조의 신경망 학습을 전체적으로 구현해보는 포스팅입니다. 구현 하기 전 신경망 학습의 절차에 대해 간단히 확인해보면 아래와 같습니다. 미니배치 - 훈련 데이터의 일부를 무작위로 가져와 학습 기울기 산출 - 각 가중치 매개변수의 기울기를 구함 ( 손실함수 값을 줄이기 위해 ) 매개변수 갱신 - 가중치 매개변수를 학습률과 기울기의 곱을 뺌으로써 갱신 반복 - 1~3 반복 2층 신경망 클래스를 구현하는 것부터 시작됩니다. class TwoLayerNet: def __init__(self, input_size, hidden_size, output_size, weight_init_std=0.01): # 가중치 초기화 self.params = {} self.para..

[DL] 경사 하강법 ( Gradient Descent )

기계학습 문제는 학습의 목표가 최적의 매개변수를 찾는 것이고, 이는 곧 손실 함수가 최솟값이 될 때의 매개변수를 찾는 것과 동일합니다. 이 때 기울기를 사용해서 함수의 최솟값을 찾는 아이디어가 경사 하강법(Gradient Descent) 입니다. [DL] 손실 함수 ( Loss function ) 신경망 학습이란 train 데이터로부터 가중치 매개변수의 최적값을 자동으로 얻는 것을 뜻합니다. 이번 포스팅에서는 신경망이 학습할 수 있도록 해주는 지표인 손실 함수에 대해 알아보도록 하 songsite123.tistory.com 지난 포스팅에서 손실 함수의 개념을 알아보았습니다. 손실함수는 신경망의 성능의 '나쁨'을 나타내는 지표로 현재의 신경망이 훈련 데이터를 얼마나 잘 처리하지 못하는가 를 나타냅니다. 이..

728x90
반응형