Deep Learning
-
자연어와 단어의 분산 표현Deep Learning/밑딥2(자연어 처리) 2021. 7. 16. 17:11
자연어 처리란 한국어와 영어 등 우리가 평소에 쓰는 말을 자연어(natural language)라고 한다. 자연어 처리(Natural Language Processing : NPL)는 우리의 말을 컴퓨터에게 이해시키기 위한 기술 이다. 단어의 의미 단어는 의미의 최소 단위이다. 컴퓨터에게 단어의 의미를 이해시키는 세 가지 기법이 있다. 시소러스를 활용한 기법 통계 기반 기법 추론 기반 기법(word2vec) 분산 표현 통계 기반 기법을 살펴보면서 말뭉치(corpus)를 이용한다. 말뭉치는 간단히 말하면 대량의 텍스트 데이터이다. 말뭉치 전처리 전처리란 텍스트 데이터를 단어로 분할하고 그 분할된 단어들을 단어 ID 목록으로 변환하는 일이다. text = 'You say goodbye and I say he..
-
합성곱 신경망 | 역전파Deep Learning/밑딥1 2021. 7. 9. 02:40
합성곱 신경망의 역전파에 대해 알아보자 크게 합성곱층, Max Pooling층으로 나누어 살펴본다. 합성곱층 역전파 합성곱층은 다음과 같이 이루어진다. im2col → Affine 변환 → Reshape 이것의 역전파는 im2col의 역전파 ← Affine층 역전파 ← Reshape의 역전파 Affine층 역전파는 잘 이해하고 있다. reshape의 역전파와 im2col의 역전파인 col2im에 대해 알아보자. 재배열의 역전파 재배열의 역전파는 역재배열이다. 데이터를 im2col 할 때, 아래와 같은 순전파 과정이 이루어진다. 순전파 : reshape(N, OH, OW, FN) → transpose(0, 3, 1 ,2) 역전파는 아래와 같다. 역전파 : reshape(-1, FN) ← transpose(..
-
합성곱 신경망 | im2colDeep Learning/밑딥1 2021. 7. 7. 03:45
im2col "image to column" 합성곱은 4차원 텐서에 대한 연산이므로 구현하려면 코드가 복잡해지고 반복문으로 내적해서 array에 넣는 코드 횟수가 많을 경우는 시간이 오래 걸린다. im2col은 4차원 텐서를 2차원 텐서로 바꾸어 행렬 계산으로 처리해서 속도를 높여준다.(합성곱 정의대로 구현한 코드보다 약 200배 속도 향상) im2col을 이용한 합성곱 데이터를 합성곱 순서대로 부분 tensor를 뽑아내서 flatten시킨 후 각 행에 넣어 col 이란 행렬을 만든다. 데이터의 im2col 연산 과정, 4차원 텐서를 2차원 텐서로 바꾼다. 각 필터를 flatten 시켜 각 열에 넣어 colW 란 행렬을 만든다. 필터의 im2col 연산 과정, 4차원 텐서를 2차원 텐서로 바꾼다. 두 행..
-
합성곱 신경망 | Max PoolingDeep Learning/밑딥1 2021. 7. 6. 04:53
Pooling Pooling은 세로, 가로 방향의 공간을 줄이는 연산이다. Max Pooling의 경우 아래와 같이 연산이 이루어진다. 2x2 크기의 Max Pool은 2x2 크기의 영역에서 가장 큰 원소를 하나 꺼낸다. stride는 2이므로 2칸씩 이동하며 처리를 한다. 일반적으로 윈도우 크기와 스트라이드는 같은 값으로 설정한다. 풀링 계층의 특징 학습해야 할 매개변수가 없다. 최댓값이나 평균을 취하는 명확한 처리이므로 특별히 학습할 것이 없다. 채널 수가 변하지 않는다. 위의 Max Pooling 연산을 보면 채널마다 독립적으로 계산하여 채널 수가 변하지 않는다는 것을 볼 수 있다. 입력 데이터 : N x C x H x W 출력 데이터 : N x C x OH x OW Down Sampling 을 통..
-
합성곱 신경망 | 합성곱Deep Learning/밑딥1 2021. 7. 5. 02:20
fully connected layer의 문제점 이미지를 이동, 확대, 회전과 같은 변형에 취약 고해상도 이미지를 입력할 경우 파라미터 수가 너무 많아진다. → 막대한 계산비용, 오버피팅 시각 피질의 구조 1981년 노벨 생리의학상은 시각 피질에 대한 연구에 수여함 각각의 뉴런마다 반응하는 부분이 다르다 합성곱 신경망은 이러한 특징을 이용하여 구현한다. 행렬의 합성곱 Filter : 3 x 3 Padding : 1 stride : 1 위의 그림과 같이 합성곱 연산은 입력 데이터에 Filter를 적용한다. Kernel이라고 부르기도 한다. 각 요소마다 필터와 이미지를 곱하고 총합을 구하여 출력을 낸다. 합성곱 연산을 수행하기 전에 입력 데이터 주변을 0으로 채우기도 하는데 이를 Padding 이라 한다. ..
-
학습 관련 기술 : 가중치 초기값Deep Learning/밑딥1 2021. 6. 25. 23:52
가중치 초기값의 설정 가중치 초기값을 잘못 설정 할 경우 생기는 문제점 가중치의 표준편차를 매우 크게 잡을경우 가중치를 평균이 0, 표준편차가 1인 정규분포로 초기화할 때의 각층의 활성화값 분포 활성화 값이 0과 1로 치우친다. 0과 1로 치우치면 그 미분값이 0에 가까워 진다. 0에 가까워진 값을 계속해서 역전파를 해 나가면 값이 계속 작아져 Vanishing Gradient Problem이 발생한다. 가중치의 표준편차를 매우 크게 잡을경우 가중치를 평균이 0, 표준편차가 0.01인 정규분포로 초기화할 때의 각층의 활성화값 분포 활성화 값이 가운데에 몰리게 된다. 표준편차가 매우 작으면 가중치의 값들이 거의 비슷하게 된다. 같은 가중치값으로 학습을 할 경우 같은 값을 출력함 100개의 뉴런으로 이루어진..
-
PyTorch | DNNDeep Learning/PyTorch 2021. 6. 20. 03:50
DNN(Deep Neural Network) Fashion MNIST 데이터셋을 심층 신경망으로 분류해보자. Fashion MNIST 필요한 모듈 from torchvision import datasets, transforms, utils from torch.utils import data import matplotlib.pyplot as plt import numpy as np torch.utils.data : 데이터셋을 불러오고 자르고 섞는데 쓰는 도구들이 들어있는 모듈 torchvision.datasets : 데이터셋의 모음 torchvision.transforms : 이미지 데이터셋에 쓸 수 있는 여러 가지 변환 필터를 담고 있는 모듈 torchvision.utils : 이미지 데이터를 저장하고 ..
-
[CHAPTER 15] 딥러닝 | TensorFlowDeep Learning/인공지능 입문 코딩 2021. 6. 16. 23:10
인간은 어떻게 생각하나? Dendrite : 이웃 뉴런에서 전기 신호를 받는다. Synapse : 다른 뉴런과 Dendrite의 연결 부위에 있다. 전기 신호의 세기를 재조정한다. Cell body(Soma) : Dendrite로부터 받은 여러 전기신호들을 모두 합친다. Axon : Soma의 전위가 일정 이상이 되면 이웃 뉴런으로 전기 신호를 보낸다. 인간의 뇌는 뉴런이라는 수없이 많은 신경세포가 다른 신경세포와 연결되어 있고, 뉴런들 끼리 화학적 신호를 주고 받는다. 이러한 뉴런이 1000억개 가량 있다고 한다. 인간의 뇌를 모방하여 만든 알고리즘이 바로 퍼셉트론이다. 퍼셉트론에 대해 따로 정리해 놓은 글이다. https://pintelligence.tistory.com/2?category=93237..