기초 7

학습과 관련된 기술들

💡 '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

활성화 함수(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