프로필사진

IT Anthology 30

과적합(오버피팅, over-fitting) 해결법

목차 오버피팅이란 과적합의 원인 오버피팅으 근본적인 방지 - variance낮추기 (https://nittaku.tistory.com/289) 데이터 보강(agumentation) feature 수 줄이기 가중치 감소 드롭아웃 https://shryu8902.github.io/working/2019-02-01-overfit/ 훈련 데이터를 늘린다 피처를 정규화 / 표준화 시켜준다 피처를 선택하여 제거하거나, 페널티를 준다. 데이터의 차원을 축소한다 (CNN과 같은 커널이나 샘플링 개념이 포함된 신경망 알고리즘은 이 문제가 자동으로 해결이 된다.) 1. 오버피팅이란 오버피팅이란, 신경망이 훈련 데이터에만 지나치게 적응된 나머지, 훈련 데이터가 아닌 새로운 데이터에는 제대로 대응하지 못하는 상태를 말한다. ..

[밑러닝] 배치 정규화(Batch Normalization)

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 배치 정규화(Batch Normalization) 배치 정규화의 효과 NLP에서의 배치 정규화는? 1. 배치 정규화(Batch Normalization) 배치 정규화에 대해 정식으로 소개하기 전에, 이 방식이 왜 그렇게 열광받는지 소개하겠다. 배치 정규화에는 다음과 같은 장점이 있다. 학습을 빨리 진행할 수 있다. 초깃값에 크게 의존하지 않는다. 오버피팅을 억제한다. 배치 정규화는 각 층에서의 활성화 값이 적당히 분포되도록 조정하는 것이다. 조금 더 자세히 얘기를 해보자면, 학습 시에 평균이 0, 분산이 1이 되..

[밑러닝] Xavier 가중치 초깃값 설정법과 He 가중치 초깃값 설정법

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 적절한 가중치 초깃값 설정이 필요한 이유 Xavier 초깃값 설정과 tanh 활성화함수 He 초깃값 설정과 ReLU 활성화함수 1. 적절한 가중치 초깃값 설정이 필요한 이유 이전 포스팅에서, 가중치의 초깃값을 랜덤으로 설정한 것을 기억하는가? (params['W1'] = np.random.normal(0, weight_init_std, (input_size, hidden_size))) 초깃값을 0으로 동일하게 하면, 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문에 가중치 여러개를 설정한 의미가 없게 된..

[밑러닝] 신경망에서의 최적화(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) 손실 함수는 신경망의 성능을 나타내는 지표라 할 수 있다. 신경망이 얼마나 '나쁘냐'를 나타내기 때문에, 손실 함수의 값이 클수록 신경망의 성능이 나쁜 것이다. 이때 주의할 점은, 막연하게 좋냐 나쁘냐를 나타내는 게 아니라, 숫자로 정확하게 나타내는 것이다. 즉, '얼마나 나쁘냐'를 어떤 방식으로 표현하냐에..