본문 바로가기

전체 글

(28)
[논문 리뷰]An overview of gradient descent optimization algorithms*SebastianRuder 공부를 하는 입장(번역만 하는 것이 아니라 제가 이해하고 정리하려 했기 때문에)이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다!  밑바닥부터 시작하는 딥러닝의 chap6이 Learning skill들에 관한 내용인데, 이를 보고 찾아보다가 이 논문을 발견했다. 책으로만 정리하는 것도 좋지만 책이 이 내용과 매우 유사하다고 느껴져서 이 논문을 리뷰하게 되었다. Ruder, S. An Overview of Gradient Descent Optimization Algorithms. 2016. An overview of gradient descent optimization algorithmsGradient descent optimization algorithms, ..
Backpropagation Example 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! 1. Two_Layer_Network 각 계층에 대하여 알았으므로, 이를 활용하여 전에 있던 2층 신경망의 업그레이드 버전의 예시이다. Backpropagation.two_layer_net.py에서 확인할 수 있다.import sys, os# 내경로가 현재 폴더가 아닌 상위 폴더로 바꿈 # 부모 디렉터리의 파일을 가져올 수 있도록 설정sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__)))) import numpy as npfrom collections import OrderedDict #상위 파이썬은 필요없으나, ..
Backpropagation 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! 1. 오차역전법(backpropagation) 오차 역전파란 신경망의 출력과 실제 값 간의 오차를 기반으로, 그 오차를 입력층까지 거꾸로 전달하며 가중치를 조정하는 방식을 말한다. 일반적으로는 순전파를 통해 입력 데이터를 네트워크에 전달하여 추론 값을 얻고, 역전파를 통하여 각 층의 가중치에 대한 기울기를 계산하여 경사하강법을 사용한다.   100원짜리 사과를 3개 샀을 때, 10%의 소비세가 붙는다면 최종 가격은 얼마일까? 이 문제를 풀기 위해, 먼저 사과의 개당 가격(100원)에 사과의 개수(3개)를 곱하고, 이후 소비세(10%)를 적용해 계산할 수 있다.  이 과정을 신경망으로 표현하면,..
Neural Network Learning Example 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! 1. Two Layer Network 학습하기 위한 2층 신경망을 구성하는 예제 코드이다. Neueral_network_learning.two_layer_net.py에서 확인할 수 있다. import sys, os# 내경로가 현재 폴더가 아닌 상위 폴더로 바꿈 # 부모 디렉터리의 파일을 가져올 수 있도록 설정sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__)))) import numpy as npfrom Neueral_network_learning.numetical_gradient import numerical_g..
Neural Network Learning 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! 1. 신경망 학습(Neural Network Learning) 신경망을 학습한다는 것은 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 알아내는 것을 말한다. 기계학습에서는 데이터의 특징을 사람이 직접 정의하고 이를 학습시키는 반면, 신경망 학습은 데이터를 있는 그대로 학습하여 특징을 자동으로 추출한다.  과적합(overfitting)은 모델이 훈련 데이터에게만 지나치게 최적화가 되어 다른 데이터들에는 성능이 떨어져 일반성을 잃게 되는 것을 말한다.  기계학습과 마찬가지로, 모델의 일반화를 위해 훈련 데이터(training data)와 시험 데이터(test data)를 나누어 사용한다. ..
Neural Network example 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다!1. Three layer neural network 3층 신경망을 통해 값을 추론하는 예제 코드이다. Neural_network.three_layer_neural_network.py 에서 확인 할 수 있다.입력 데이터가 한개이므로 출력 값도 한 개다. import numpy as npdef sigmoid(x): return 1 / (1 + np.exp(-x))def identity_function(x): return xclass NEURAL_NETWORK: def __init__(self, x): self.x = x self.network = {} ..
Neural Network 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! 1. 신경망 (Nerual Network)  신경망에서 가장 왼쪽 줄을 입력층(Input Layer), 가장 오른쪽 층을 출력층(Output Layer)라고 한다. 그리고 그 사이에 중간 단계에 있는 노드들을 은닉층(Hidden Layer)라고 한다. 다음층으로 이동할 때, 가중치를 거쳐서 이동하게 되는데, 일반적으로는 가중치를 가지고 있는 층만 계산하여서 ~~ 층 신경망이라고 하여 모델의 깊이를 정한다. 따라서 위에 예시는 노드의 층이 4층이지만 3층 신경망이라고 많이 부른다.  입력층은 말 그대로 원본 데이터를 받아들이는 층을 말한다. 출력층은 은닉층에서 추출된 결과를 바탕으로 최종결과를 ..
밑바닥부터 시작하는 딥러닝 밑바닥부터 시작하는 딥러닝이라는 책을 읽었다. 정확히는 밑바닥부터 시작하는 딥러닝 1, 2, 3 중에서 1권의 2장부터 7장까지 읽었다. 책을 읽으면서 GitHub에 있는 코드를 읽고, 직접 다시 작성해보기도 했으며, 이해가 안 되는 수식은 직접 풀어보기도 했다.  결론적으로, 책에 나온 코드를 활용하여 MNIST 데이터를 통해 손글씨 추론 모델을 만들었다. 처음으로 라이브러리 없이 모델을 만들어 보고 공부한 것이라 놓친 부분이 많았던 것 같다. 그래서 다시 한 번 책을 읽으면서 내가 작성한 코드를 검토하고 정리해보려고 한다. 내가 사용한 conda환경이다. window에서 진행을 하였다.  코드를 적은 깃허브 주소이다. Study_with_book/DeepLearning-from-Scratch at m..