# AI 이론/DeepLearning 15

[GAN] 생성적 적대 신경망

GAN 논문자료 GAN 딥러닝 논문 리뷰(Youtube - 동빈나) Youtube 동빈나 님의 자료와 GAN 논문 자료를 인용하여 작성하였습니다. GAN에 대해 설명하기 앞서, 필요한 내용인 Generative Models에 대해서 간략하게 설명하겠습니다. Generative Models Generative model이란 실존하지는 않지만 있을 법한 이미지를 생성할 수 있는 모델을 의미합니다. 사진의 왼쪽에서 보면 분류의 경우는 클래스간의 경계를 나눈 것이고, Generative 의 경우는 데이터간의 분포를 생성한 것입니다. 생성모델의 목표는다음과 같습니다. 입력 데이터의 분포에 근사하는 모델 G를 만드는 것 모델 G가 잘 작동한다는 것은 기존 이미지들의 분포를 잘 모델링 한다는 의미인데, 이때 2014..

Variational AutoEncoder(VAE)

오토인코더의 모든것(유튜브) - 이활석 Variational AutoEncoder(논문) Variational AutoEncoder - reference 이번 포스트에서는 이활석님의 "오토인코더의 모든 것"의 강의를 참고하여 정리하고자 쓴글 입니다. 뒤에 나올 내용들은 수학적 배경지식이 많이 필요하기 때문에, 이글 을 읽고 오시는것이 좋습니다. VAE를 설명하기전, AutoEncoder에 간단하게 설명 드리면, 오토인코더의 구조는 Encoder ,Decoder 부분으로 나누어져있습니다. 입력값 x에 대해서 특징을 추출해서, 입력의 정보를 Latent Variables(z)에 담은후,Latent Variables로 부터 자기자신을 다시 복호화하는 알고리즘 입니다.즉 X를 넣어서 X를 반환 하려고 하는 알고..

트랜스포머 정리(3)

이전글에 이어서 정리하는 글입니다. 트랜스포머 정리(2) 이전 글에 이어서 정리하는 글입니다. 앞의 글에서는 트랜스포머의 구조와 셀프 어텐션에 대해서 알아보았습니다. 멀티 헤드 어텐션(Multi-head Attention) 앞서 배운 어텐션에서는 $d_{model}$의 차원을 peaco.tistory.com 인코더에서 디코더로 지금까지 인코더에 대해서 정리를 했습니다. 인코더는 입력 데이터를 num_layers 수만큼의 연산을 순차적으로 수행 한 후, 마지막 층의 인코더의 출력을 디코더에 전달합니다. 그럼 이제 디코더도 num_layers 수만큼의 연산을 수행할텐데, 디코더의 역할은 무엇일까요? 디코더의 첫번째 서브층 : 셀프 어텐션과 룩-어헤드 마스크 위 그림을 살펴보면, 디코더도 인코더와 비슷한 점이..

트랜스포머 정리(2)

이전 글에 이어서 정리하는 글입니다. 앞의 글에서는 트랜스포머의 구조와 셀프 어텐션에 대해서 알아보았습니다. 멀티 헤드 어텐션(Multi-head Attention) 앞서 배운 어텐션에서는 $d_{model}$의 차원을 가진 단어를 num_heads로 나눈 차원을 가지는 $Vector_{Q,K,V}$로 바꾸고 어텐션을 수행했는데, 왜 어텐션을 $d_{model}$로 하지않고, 굳이 num_heads로 나눈 크기만큼의 차원을 축소했을까요? 한번의 어텐션을 하는것 보다 여러번의 어텐션을 병렬로 사용하는 것이 더 효율적 이라고 합니다.어딘가를 감시할때 혼자 감시하는 것보다 여러명이 동시에 감시하는것이 더욱더 정확하게 하는것 처럼말이죠.. 그래서 $d_{model}$의 차원을 num_heads로 나눠서 $d_{..

트랜스포머 정리(1)

2017년 구글이 발표한 논문인 "Attention is all you need"에서 나온 모델인 트랜스포머는 기존의 seq2seq의 구조인 인코더 디코더를 따르면서도, 어텐션만으로 구현이 가능한 모델입니다. 이 모델은 RNN을 사용하지 않고, 인코더-디코더 구조를 설계하였음에도 번역 성능에서도 RNN 보다 우수한 성능을 보여주었습니다. 트랜스포머 하이퍼 파라미터 아래에서 정의한 수치는 트랜스포머를 제안한 논문에서 사용한 수치로 하이퍼파라미터는 사용자가 모델 설계시 임의로 변경이 가능합니다. $ d_{model} $ = 512 트랜스포머의 인코더와 디코더의 정해진 입력과 출력의 크기 임베딩 벡터의 차원 또한 $ d_model $ 이며, 인코더와 디코더가 다음 층의 인코더와 디코더로 보낼때도 차원 값 유지..

어텐션 메커니즘

RNN의 seq2seq 방식에는 두가지의 문제가 존재합니다. 하나의 고정된 크기에 모든 정보를 압축하려고 하기때문에, 정보 손실이 발생 RNN의 고질적인 문제인 기울기 소실이 발생 이러한 문제로 기계 번역 분야에서 문장이 길수록 번역이 이상하게 되는 현상이 일어납니다.이를 해결 하기위해 고안된 기법이 바로 어텐션 메커니즘 입니다. Attention Idea & Function 디코더에서 출력 단어를 예측하는 매 시점마다, "인코더에서의 전체 입력 문장을 다시 한 번 본다" 라는 점입니다. 전체입력을 동일한 비율로 보는것이 아니라, 연관이 있는 입력단어 부분을 조금더 집중적으로 보게됩니다. 어텐션 함수는 다음과 같이 표현합니다. Attention(Q, K, V) = Attention Value 다음과 같은..

RNN,LSTM,GRU에 대해서 알아보자

시작에 앞서... 우리는 일상생활에서 미래를 예측합니다. 예를들어, 친구의 말을 대신 마무리하거나, 음식 냄새를 예상하는 것처럼 말이죠 이 장에서는 미래를 예측할 수 있는 네트워크인 순환 신경망에 대해서 알아보겠습니다. 순환 신경망(Recurrent Neural Network, RNN) 이란? 순환신경망은 시계열(time series) 데이터를 분석해서 주식가격 같은 것을 에측하고 언제 사고 팔지 알려줄 수도 있고, 자율주행 시스템에서는 차의 이동경로를 에측하고 사고를 피하도록 도울 수 있습니다. 일반적으로 이 신경망은 지금까지 봤던 모든 네트워크처럼 고정 길이 입력이 아닌 임의 길이를 가진 시퀀스를 다룰 수 있는데, 문장,문서,오디오 샘플 등이 예시입니다. RNN은 자동 번역, 스피치 투 텍스트와 같은..

TensorFlow Protocol Buffer

Protocol Buffer CSV,XML,JSON등 여러 직렬화 방식 중 하나로 구글에서 개발한 이진 직렬화 방식 직렬화(Serialization)란 직렬화란 시스템 내부에서 사용하는 개체를 다른 시스템에서도 사용할 수 있도록 바이트 형태로 데이터를 변환하는 기술을 뜻한다. 예를들면 Java,Python에서 사용하던 객체 방식과 Node.js에서는 형식이 다르기 때문에 모두가 같은 데이터를 사용하도록 공통화 작업을 한다고 생각하면 된다 ProtoBuf 사용순서 protoBuf 포맷으로 데이터 구조를 정의 컴파일하기(각 타겟 언어별 protoc 컴파일러 사용) 컴파일된 모듈 각 언어에서 코드레벨로 로드하기 ProtoBuf 파일 생성 %%writefile person.proto syntax = "proto..

규제를 사용해 과대적합 피하기

l1,l2규제 드롭아웃 앞선 글에서 배치 정규화를 통해 불안정한 그레이디언트 문제를 해결방안을 제시했습니다 이번 글에서는 신경망에서 널리 사용되는 다른 규제방법을 알아보겠습니다 L1,L2 규제 https://peaco.tistory.com/26?category=1253919 선형회귀(GD,Ridge,Lasso,ElasticNet) 선형회귀 및 경사하강법(배치 경사하강법, 미니배치 경사하강법, 경사하강법) 다항회귀 규제가 있는 선형 모델 선형회귀 입력 특성의 가중치 합과 편향 이라는 상수를 더해 예측을 만든다. y는 peaco.tistory.com 선형회귀에서 다루었던 것처럼 신경망의 연결 가중치를 제한하기위해 l2 규제를 사용하거나 (많은 가중치가 0인)희소모델을 만들기 위해 l1 규제를 사용했습니다. ..

배치 정규화

그래디언트 소실과 폭주 배치 정규화 그레이디언트 소실과 폭주문제 역전파 알고리즘은 출력층에서 입력층으로 오차 그레이디언틀르 전파하면서 진행합니다. 이때 알고리즘이 신경망의 모든 파라미터에 대한 오차 함수의 그레이디언트를 계산하면 경사 하강법 단계에서 이 그레이디언트를 사용하여 각 파라미터를 수정하게 됩니다. 그런데 알고리즘이 하위층으로 진행될수록 그레이디언트가 점점 작아지는 경우가 많아지는데, 경사 하강법이 하위층의 연결 가중치를 변경되지 않은 채로 둔다면 안타깝게도 훈련이 좋은 솔루션으로 수렴되지 않을 것 입니다. 이 문제를 그레이디언트 소실(vanishing gradient) 라고합니다. 위와 반대로 그레이디언트가 점점 커져서 여러 층이 비정상적으로 큰 가중치로 갱신되면 알고리즘은 발산합니다. 이 문..

1 2