ML_DL/DL(8)
-
Deep Learning -> CNN 복습
딥 러닝이란? 비정형데이터를 처리하는데 특화된 머신러닝 알고리즘의 한 종류이다. 이는 최소 2개 이상의 hidden layer를 가지고 구성되어 있다. 케라스 그리고 텐서플로우 케라스 : 신경망을 만들기 위한 고수준 파이썬 라이브러리 텐서플로우 : 신경망을 훈련하기 위해 필요한 저수준 배열 연산을 수행하는 역할을 하는 백엔드 라이브러리 Tensor? 행렬로 표현할 수 있는 2차원 배열을 높은 차원으로 확장시킨 다차원배열의 형태 모델생성 흐름 이미지 적재 -> 모델 생성 -> 모델컴파일(옵티마이저, 손실함수 정의) -> 모델훈련 -> 모델평가 합성곱층이 등장한 배경 Flatten -> Dense 로만 이루어진 모델을 그다지 높은 성능을 낼 수 없다. 이유는 다음과 같다. 입력 이미지의 공간 구조를 다룰 수..
2022.09.13 -
DL) GAN
GAN이 뭔데? 생성모델 중 하나이며, Generative Adversarial Network를 줄여서 우리는 GAN 이라고 부른다. 사실 이름에서도 어느정도 많은 정보를 유추 할 수 있다. Generative : 생성적인 Adversarial : 적대적으로 기본적으로 무엇인가를 생성하는 모델이며, 적대적이기에 생성하는것에 대응하는 무엇인가가 있나보다 정도로 의미를 파악할 수 있다. 그러면 GAN에 대해서 좀 더 자세하게 알아보자 z : 0과 1로 이루어진 마구 뿌려진 의미가 없는 상태이다. G : 생성자 ( Noise를 통해서 뭔가를 만들어내는 것 ) G(z) : Noise 를 통해 G 가 만들어낸 결과물 x : 실제 있던 작품(데이터) D : 판별자 ( 해당 데이터(작품)가 생성된 것인지 실제인지 판..
2022.07.20 -
DL) CNN
컴퓨터 비전에서 자주 사용되는 합성곱 신경망에 대해서 알아보자 이미지는 공간적인 특성을 가지고 있으므로, 복잡한 이미지에 대해 현재 까지 해준 Flatten으로 퍼준 뒤 연산하는 기술은 공간적 특성을 표현하기 어렵다. 즉 공간적인 특성을 살리려고 등장한 것. CNN(Covolutional Neural Network)의 구조 먼저 Conv Layer 와 Pooling Layer의 역할을 보자. Conv Layer Convolution 합성곱 이러한 Convolution이라는 개념이 CNN에서는 어떻게 적용이 되었을까? 초록표 : 기본 Input 노란표 : 합성곱 필터 노란표가 이동하는 것 : 슬라이딩 분홍표 : 합성곱이 이루어진 Output 단순한 Convolution은 위와 같이 이루어지는 것을 확인했다..
2022.07.15 -
DL) RNN 구조와 Attention
RNN 기반(LSTM, GRU) 번역 모델을 만들었다고 생각해보자. 사실 RNN의 치명적인 단점은 장기 의존성 문제이다. 시퀀스가 길면 길 수록 앞 쪽 부분에 있는 토큰에 대한 정보를 잃어버린다는거다. 위에서 보면 이전 state를 현재 state에 사용하기 위해 전달하고 마지막 context라는 부분에 모든 단어 정보를 압축해서 하나의 벡터로 만듭니다. 이를 context vector라고 부른다. 이제 디코딩을 통해서 해당 vector를 번역된 단어로 한 개 씩 순차적으로 출력하게 되는데 여기서 문제는 context 부분이다. 입력 문장이 길면 고정된 크기의 벡터에 모든 정보를 압축하기 위해 정보 손실이 발생하게 된다. 번역 모델에서 이러한 문제를 어떻게 해결하고자 했을까? 이를 해결하고자 등장한 개념..
2022.07.12 -
DL) RNN , LSTM
언어 모델 (Language Model)에 대해서 알아보자. 언어 모델이란? 문장과 같은 단어 시퀸스에서 각 단어의 확률을 계산하는 모델이다. (Word2Vec도 여러 가지 언어 모델 중 하나이다. CBOW 같은 경우 주변 단어 정보로 타겟 단어의 확률을 할당하였다.) 근데 신경망은 비교적 최근 기술인데 그러면 그 이전에는 어떻게 자연어처리를 하였을까? 통계적 언어 모델(Statistical Language Model, SLM) 단어의 등장 횟수를 바탕으로 조건부 확률을 계산하였다. ex) I'm a student 라는 문장이 등장할 확률을 구해보자. 먼저 식으로 나타내면 다음과 같다. P("I","am","a","student") = P("I") X P("am" | "I") X P("a" | "I", ..
2022.07.12 -
DL) 단어의 분산 표현(Distributed Representation)
앞서 등장횟수 기반을 통해서 벡터화란 것을 다뤘다. 이번에는 등장횟수 기반이 아닌 분포 가설에 입각하여 단어를 벡터로 표현하는 방법을 알아보자. 분포가설은 무엇인가? 분포가설이란 단어의 의미는 주변 단어에 의해 형성된다 라는 것이다. I drink beer 와 We drink soju 처럼 drink 주변에는 음료가 등장 할 확률이 높다는 의미이다. 분산표현을 배우기 앞서서 가장 쉬운 방법을 하나 보자. 단어를 벡터화 하는데 있어서 가장 단순한 방법이 원-핫 인코딩(One Hot Encoding)이다. 원핫인코딩이란? We are the champions 라는 문장이 있다고 할 때 We, are, the , champions 를 원 핫 인코딩을 통해 나타내면, We = [1, 0, 0, 0] are = ..
2022.07.11