분류 전체보기 10

WaveNet: A Generative Model for Raw Audio 정리

📜 A. Oord et al., "WaveNet: A Generative Model for Raw Audio," in arXiv, 2016. 논문 1줄 요약 WaveNet은 dilated causal convolution을 기반으로 audio waveform을 생성하는 딥러닝 모델입니다. Abstract 본 논문은 오디오 파형(audio waveform)을 생성하는 신경망인 "WaveNet"을 소개합니다. WaveNet은 모든 이전의 오디오 샘플로부터 조절된 각 오디오 샘플에 대한 분포를 예측하는 확률적이며 auto-regressive한 모델입니다. WaveNet은 각각의 발화자(speaker)에 유사하게 특징을 포착하고 이를 조절함으로써 다른 발화자의 목소리로 바꿀 수 있습니다. 1. Introduct..

Very Deep Convolutional Networks for Large-Scale Image Recognition 요약

📜 K. Simonyan and A. Zisserman, "Very Deep Convolutional Networks for Large-Scale Image Recognition," in ICLR, 2014 논문 2줄 요약 고전적인 Convolution 아키텍처에서 벗어나지 않고 네트워크의 깊이를 증가함으로써 성능을 향상시켰다. 네트워크의 깊이를 증가시키기 위해 매우 작은 $ 3\times3 $ 크기의 Convolutional filter를 사용하였다. Abstract 본 연구는 대규모 이미지 인식 문제에서 convolution network (ConvNet)의 깊이가 정확도(accuracy)에 미치는 영향을 조사합니다. 본 연구의 주된 성과는 매우 작은 $ 3\times3 $ Conv. 필터(filte..

학습과 관련된 기술들

💡 'Deep Learning from Scratch'를 참고하여 작성 1. 가중치의 초깃값(Initial value) 신경망의 학습에서 특히나 중요한 것은 가중치의 초깃값입니다. 가중치의 초깃값을 무엇으로 설정하느냐에 따라 신경망 학습의 성패가 갈리는 경우가 많습니다. 1.1 초깃값을 0으로 설정 가중치의 초깃값을 모두 0으로 설정하면, 올바른 학습이 이루어지지 않습니다. 가중치가 모두 0일 경우, 순전파시 같은 값들이 다음으로 전달됩니다. 이는 오차역전파법(back-propagation)에서 모든 가중치의 값이 동일하게 갱신되도록 만듭니다. 이렇게 가중치가 고르게 되어버리는 상황을 막기 위해 초깃값은 무작위로 설정해야 합니다. 1.2 은닉층(Hidden layer)의 활성화값 분포 1.2절에서는 가중..

기초/인공지능 2021.09.10

옵티마이저(Optimizer) (2/2)

💡 'Deep Learning from Scratch'와 'CS231N'을 참고하여 작성 (각 절의 넘버링은 지난 게시물에서 이어집니다) 2. 옵티마이저 지난 게시물에서는 SGD의 문제점으로 지적되었던 여러 가지 가운데 스텝 방향을 개선한 옵티마이저에 대하여 알아봤습니다. 오버슈팅(overshooting)으로 안장점(saddle point)과 지역 최솟값(local minima)을 통과하며 전역 최솟값(global minimum)을 찾던 SGD+Momentum, NAG를 직접 구현해보았습니다. 이번 게시물에서는 파라미터가 갱신된 정도에 따라 스텝 사이즈를 조정하며 학습을 진행하는 AdaGrad류의 옵티마이저에 대해 알아보겠습니다. 2.5 Adaptive Gradient (AdaGrad) AdaGrad는 ..

기초/인공지능 2021.09.02

옵티마이저(Optimizer) (1/2)

💡 'Deep Learning from Scratch'와 'CS231N'을 참고하여 작성 신경망(neural network)의 학습 목적은 손실 함수(loss function)의 값을 최대한 낮추는 매개변수(parameter)를 찾는 것이었습니다. 이는 곧 매개변수의 최적값을 찾는 문제이며, 이를 최적화 문제(optimization)라 합니다. 최적의 매개변수를 찾기 위해서는 학습 데이터들을 이용해 기울기(gradient)의 값을 구하고, 그 값을 기준으로 나아갈 방향을 결정해야 합니다. 이번 게시물에서는 최적의 매개변수를 찾는 방법인 옵티마이저에 대해 알아보겠습니다. 1. 기울기 학습 데이터를 이용하여 기울기를 구하기 위해서는 각 변수들에 대한 편미분을 동시에 계산해야 합니다. $$ f(x_0, x_1..

기초/인공지능 2021.08.31

오차역전파(Back-Propagation)

💡 'Deep Learning from Scratch'를 참고하여 작성함 신경망(neural network)의 학습을 위해서는 가중치 매개변수(weight parameter)에 대한 손실 함수(loss function)의 기울기(gradient)를 구해야 합니다. 기울기를 구하는 가장 간단한 방법은 수치 미분(numerical differentation)을 이용하는 것입니다. 수치 미분은 '근사치(approximation)'를 이용하여 계산하는 방법으로 단순하고 구현하기 쉽지만, 계산 시간이 오래걸린다는 단점이 있습니다. 이번 게시물은 가중치 매개변수의 기울기를 효과적으로 계산하는 방법인 '오차역전법'을 설명하겠습니다. 1. 역전파 왼쪽에서 오른쪽으로 진행되는 신경망이 있을 때, 신경망의 결과를 구하기 ..

기초/인공지능 2021.08.29

손실 함수(Loss function)

💡 'Deep Learning from Scratch'를 참고하여 작성 신경망에서 학습(train)이란 학습 데이터로부터 가중치 매개변수(weight parameter)의 최적값(optimal value)을 자동으로 획득하는 것을 의미합니다. 이번 게시물에서는 신경망을 학습하기 위한 지표, 손실 함수에 대하여 알아보겠습니다. 1. 데이터와 학습 신경망은 데이터를 통해 학습합니다. 데이터를 이용하여 학습한다는 것은 데이터를 통해 가중치 매개변수의 값을 자동으로 결정한다는 뜻입니다. 이는 모든 매개변수를 수작업으로 결정해야 하는 어려움을 해결해줍니다. 1.1 데이터 주도 학습 기계 학습(machine learning)의 생명은 바로 데이터입니다. 데이터에서 답을 찾고 데이터에서 패턴을 발견하고 데이터로 이야..

기초/인공지능 2021.08.28

Going Deeper with Convolutions 요약

📜 C. Szegedy et al., "Going Deeper with Convolutions", in CVPR, 2014 논문 3줄 요약 모바일과 임베디드 상에서 잘 작동하기 위해 컴퓨팅 자원을 효율적으로 활용해야 한다는 요구가 높아졌다. 차원 축소를 통한 계산양 감소와 비선형성 추가 두 가지를 목적으로 인셉션 모듈을 도입했다. 인셉션 모듈을 통해 컴퓨팅 비용은 적게 상승하지만, 더 깊고 넓으면서 성능도 좋은 GoogLeNet을 구축했다. Abstract 본 논문에서는 ImageNet Large-Scale Visual Recognition Challenge (ILSVRC) 2014에서 분류와 탐지 문제에서 좋은 성과를 거둔 '인셉션(Inception)'이라는 이름의 deep convolution neu..

활성화 함수(Activation function)

💡 'Deep Learning from Scratch'를 참고하여 작성 1. 퍼셉트론(perceptron)에서 신경망(neural network)으로 1.1 퍼셉트론 앞서 공부한 퍼셉트론은 $ x_1 $과 $ x_2 $라는 두 신호를 입력받아 $ y $를 출력했습니다. 이를 수식으로 나타내면 아래와 같습니다. $$ y=\begin{cases} 0\ (b+w_1x_1+w_2x_2\leq0)\\ 1\ (b+w_1x_1+w_2x_2>0) \end{cases} $$ 여기서 $ b $는 편향(bias)를 나타내는 매개변수(parameter)로 뉴런이 얼마나 쉽게 활성화되는지를 제어합니다. $ w_1 $과 $ w_2 $는 각 신호의 가중치(weight)를 나타내는 매개변수로 각 신호의 영향력을 제어합니다. 네트워크..

기초/인공지능 2021.08.26

퍼셉트론(Percetron)

💡 'Deep Learning from Scratch'를 참고하여 작성 퍼셉트론(perceptron)은 1957년 프라킁 로젠블라트(Frank Rosenblatt)가 고안한 알고리즘입니다. 딥러닝의 기원이 되는 알고리즘으로 퍼셉트론의 구조를 배우는 것은 딥러닝(deep-learning)을 이해하는데 도움이 됩니다. 1. 퍼셉트론이란? 퍼셉트론은 다수의 신호를 입력 받아 하나의 신호를 출력합니다. 'Deep Learning from Scratch'에서 기술하는 퍼셉트론은 정확히는 '인공 뉴런' 혹은 '단순 퍼셉트론(simple perceptron)'을 의미합니다. 퍼셉트론은 신호를 흐름으로 만들고 정보를 앞으로 전달합니다. 퍼셉트론의 신호는 '신호가 흐른다(1)'와 '신호가 흐르지 않는다(0)' 2가지의 ..

기초/인공지능 2021.08.25