프로필사진

IT Anthology/encyclopedia 23

[밑러닝] 신경망에서의 최적화(optimization), 옵티마이저(optimizer) 정복하기

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 확률적 경사 하강법(SGD, Stochastic Gradient Descent) 모멘텀(Momentum) AdaGrad(Adaptive Gradient) Adam 신경망 학습의 목적은 손실 함수의 값을 낮추는 매개변수를 찾는 데에 있었다. 매개변수의 최적값을 찾아가는 방법은 여러가지가 있을 수가 있는데, 이렇게 최적값을 빠르게 찾아가는 문제를 푸는 것을 '최적화(optimization)'라고 한다. 우리는 앞선 활동을 통해 매개변수의 기울기를 구하고, 기울어진 방향으로 매개변수 값을 갱신하는 일을 반복하며 최적의..

[밑러닝] 파이썬으로 다양한 계층(활성화함수, softmax)에서의 역전파 구현하기

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 ReLU에서의 역전파 구현 Sigmoid에서의 역전파 구현 Softmax-with-Loss에서의 역전파 구현 앞서 간단한 덧셈, 곱셈 노드에서의 역전파를 구현해보았다. 2020/03/29 - 파이썬으로 간단한 계층(덧셈 노드/곱셈 노드)에서의 역전파 구현하기 이제 신경망에서 자주 쓰이는 활성화함수에서의 역전파를 구현해보도록 하자. 1. ReLU에서의 역전파 구현 앞선 포스트에서 ReLU 함수에 대해 다룬 바가 있다. 리마인드를 위해 잠깐 언급하자면 다음과 같다. ReLU(Rectified Linear Unit) ..

[밑러닝] 파이썬으로 간단한 계층(덧셈 노드/곱셈 노드)에서의 역전파 구현하기

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 덧셈 노드에서의 역전파 구현 곱셈 노드에서의 역전파 구현 사과 둘, 귤 셋 앞서 '오차역전파(backward propagation of error)'에 대한 개념에 대해 익혔다. 이번 글에서는 오차역전파가 파이썬으로 어떻게 구현되는지 살펴 보겠다. 오차역전파에 대한 개념이 아직도 아리까리한 사람들은 후딱 이전 글을 보고 오자. 2020/03/29 - 이보다 더 쉬울 수는 없다! 오차역전파(back-propagation)법 완벽 파헤치기 시작하기에 앞서, 순전파를 처리하는 함수는 forward()라는 이름으로, 역..

[밑러닝] 이보다 더 쉬울 수는 없다! 오차역전파(back-propagation)법 완벽 파헤치기

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 계산 그래프(computational graph)란? 계산 그래프 사용의 장점 계산 그래프의 역전파(back-propagation) 1. 계산 그래프(computational graph)란? 오차역전파를 쉽게 설명하기 위해 계산 그래프를 도입한다. (이 설명 방식은 안드레 카페스(Andreg Karpathy)의 블로그와 그와 페이페이 리(Fei-Fei Li) 교수가 진행한 cs231n 수업을 참고한다.) 계산 그래프(computational graph)란 계산 과정을, 복수의 노드(node)와 엣지(edge)가 ..

[밑러닝] 밑바닥부터 구현하는 인공신경망 학습 알고리즘

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 딥러닝(deep learning)에서의 러닝(learning) 2층 신경망 클래스의 학습(learning) 구현 이제까지 배운 모든 것을 종합하여 드디어 딥러닝의 러닝을 구현할 수 있게 되었다! 앞의 내용을 놓친 사람은 필요한 내용을 리마인드하고 오도록 하자. 2020/03/11 - 인공신경망 구현을 위해 알아야할 것들 (활성화 함수와 소프트맥스) 2020/03/17 - 손글씨 숫자 인식으로 해보는 간단한 인공신경망 예측(feat. MNIST 데이터셋) 2020/03/17 - 인공신경망의 학습 지표, 손실함수(l..

[밑러닝] 수치 미분, 딥러닝에서 경사하강법을 위한 기울기 계산

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 수치 미분(numerical differentiation) 기울기 벡터(gradient vector) 경사하강법(gradient descent method) 인공신경망에서의 기울기 1. 수치 미분(numerical diffrentiation) 1-(1). 수치 미분이란 미분은 고등학교 때 열심히 배웠듯이, 특정 순간의 변화량을 뜻한다. 하지만 이 '특정 순간'이라고만 하면 애매한 게, 어느 특정 순간을 콕 찝으면 사실 그 '순간'의 변화량은 측정을 할 수가 없다. 변화량이라는 것 자체가, 대상이 얼마나 변했는가를..

[밑러닝] 인공신경망의 학습 지표, 손실함수(loss function)

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 손실 함수(loss function)란 평균 제곱 오차(Mean Squared Error, MSE) 교차 엔트로피 오차(Cross Entropy Error, CEE) 1. 손실 함수(loss function) 손실 함수는 신경망의 성능을 나타내는 지표라 할 수 있다. 신경망이 얼마나 '나쁘냐'를 나타내기 때문에, 손실 함수의 값이 클수록 신경망의 성능이 나쁜 것이다. 이때 주의할 점은, 막연하게 좋냐 나쁘냐를 나타내는 게 아니라, 숫자로 정확하게 나타내는 것이다. 즉, '얼마나 나쁘냐'를 어떤 방식으로 표현하냐에..

[밑러닝] 손글씨 숫자 인식으로 해보는 간단한 인공신경망 예측(feat. MNIST 데이터셋)

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 학습과 예측 MNIST 데이터셋 인공신경망 구축 배치 처리 1. 학습과 예측 기계학습의 문제 해결은 두 단계를 거친다. 첫번째는 학습이고, 두번째는 예측이다. 학습의 과정은 적당한 가중치를 찾는 과정이고, 예측의 과정은 그렇게 찾아낸 적당한 가중치를 대입해서 새로운 데이터의 정답이 뭘지 찾아내는 과정이다. 학습의 과정은 간략하게 다음과 같다. 데이터셋 파악 훈련용 데이터와 테스트용 데이터로 나누기 인공신경망 구축 적당한 가중치 찾기 위의 과정을 거쳐 찾아낸 적당한 가중치를 대입한다. 예측의 과정은 다음과 같다. ..

[밑러닝] 인공신경망 구현을 위해 알아야할 것들 (활성화 함수와 소프트맥스)

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 퍼셉트론 식의 변형 활성화 함수(Activation function) 3층 신경망 출력층(Output Layer) 1. 퍼셉트론 식의 변형 저번 포스트부터 읽어온 분들은, 그래서 인공신경망이 대체 뭔데? 하는 마음으로 이 포스트를 열었을 것이다. 그리고 또 저번 포스트를 착실하게 읽었다면, 왠지 아래의 수식이 눈에 익을 것이다. $$ y = \begin{cases} 0\ (b + w_1x_1 + w_2x_2 \le 0)\\ 1\ (b + w_1x_1 + w_2x_2 > 0) \end{cases} $$ 그래, 그 ..

[밑러닝] XOR 문제의 해결, 층 쌓기

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 XOR 문제 리마인트 XOR 문제 해결 다층 퍼셉트론 (multi-layer perceptron) 1. XOR 문제 리마인드 지난 포스트에서, 풀기 어려운 난제에 대해 이야기한 바가 있다. 문제를 풀기에 앞서, 문제가 무엇인지 리마인드를 해보자. AND, NAND, OR 게이트 등은 2차원의 공간 상에 표현했을 때, 하나의 선만으로 빨간 동그라미와 파란 세모와의 구역을 구분지을 수 있었다. 예를 들면, 아래는 OR 게이트를 시각화한 것이다. 하지만 XOR 게이트는 하나의 선만을 가지고 구분지을 수가 없었다. 이것..