목록Deep Learning/밑바닥부터 시작하는 딥러닝 1 (11)
KoreanFoodie's Study
해당 포스팅은 한빛 미디어에서 출판한 '밑바닥부터 시작하는 딥러닝'이라는 교재의 내용을 따라가며 딥러닝 튜토리얼을 진행하고 있습니다. 관련 자료는 여기에서 찾거나 다운로드 받으실 수 있습니다. 전체 구조 우선 CNN의 네트워크 구조를 살펴보자. CNN도 지금까지 본 신경망과 같이 레고 블록처럼 계층을 조합아혀 만들 수 있다. 다만, 합성곱 계층(convolutional layer)과 풀링 계층(pooling layer)가 새롭게 등장한다. 지금까지 본 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있었다. 이를 완전연결(fully-connected)라고 하며, 완전히 연결된 계층을 Affine 계층이라는 이름으로 구현했다. Affine 계층을 사용하면, 가령 층이 5개인 완전 연결 신경망은 다음 그림과 ..
해당 포스팅은 한빛 미디어에서 출판한 '밑바닥부터 시작하는 딥러닝'이라는 교재의 내용을 따라가며 딥러닝 튜토리얼을 진행하고 있습니다. 관련 자료는 여기에서 찾거나 다운로드 받으실 수 있습니다. 배치 정규화 이전 포스팅에서, 가중치의 초깃값을 적절히 설정하면 각 층의 활성화값 분포가 적당히 퍼지면서 학습이 원활하게 수행됨을 배웠다. 그렇다면 각 층이 활성화를 적당히 퍼뜨리도록 '강제'할 수도 있을까? 실은 배치 정규화(Batch Normalization)가 그런 아이디어에서 출발한 방법이다! 배치 정규화 알고리즘 배치 정규화는 2015년에 나온 기법임에도 널리 사용되고 있는 방식이다. 배치 정규화가 주목받는 이유는 다음과 같다. - 학습을 빨리 진행할 수 있다(학습 속도 개선). - 초깃값에 크게 의존하지..
해당 포스팅은 한빛 미디어에서 출판한 '밑바닥부터 시작하는 딥러닝'이라는 교재의 내용을 따라가며 딥러닝 튜토리얼을 진행하고 있습니다. 관련 자료는 여기에서 찾거나 다운로드 받으실 수 있습니다. 매개변수 갱신 신경망 학습의 목적은 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것이다. 이는 매개변수의 최적값을 찾는 문제이며, 이러한 문제를 푸는 것을 최적화(optimization)라고 한다. 우리는 지금까지 매개변수의 기울기(미분)을 이용해 기울어진 방향으로 매개변수 값을 갱신하는 일을 반복해 최적화를 진행했다. 이것이 확률적 경사 하강법(SGD)이라는 방법이다. SGD는 단순하지만, SGD보다 똑똑한 방법도 있다. 지금부터 SGD의 단점을 알아보고, SGD와는 다른 최적화 기법을 알아보도록 하겠다!..
해당 포스팅은 한빛 미디어에서 출판한 '밑바닥부터 시작하는 딥러닝'이라는 교재의 내용을 따라가며 딥러닝 튜토리얼을 진행하고 있습니다. 관련 자료는 여기에서 찾거나 다운로드 받으실 수 있습니다. 활성화 함수 계층 구현하기 이제 계산 그래프를 신경망에 적용해 보자. 우선은 활성화 함수은 ReLU와 Sigmoid 계층을 구현해 보자. ReLU 계층 활성화 함수로 상요되는 ReLU의 수식은 다음과 같다. 위 식에서 x에 대한 y의 미분은 다음과 같다. 위 식과 같이 순전파 때의 입력인 x가 0보다 크면 역전파는 상류의 값을 그대로 하류로 흘린다. 반면, 순전파 때 x가 0 이하면 역전파 때는 하류로 신호를 보내지 않는다(0을 보낸다). 계산 그래프로는 다음과 같이 그릴 수 있다. 이제 이 ReLU 계층을 구현해..
해당 포스팅은 한빛 미디어에서 출판한 '밑바닥부터 시작하는 딥러닝'이라는 교재의 내용을 따라가며 딥러닝 튜토리얼을 진행하고 있습니다. 관련 자료는 여기에서 찾거나 다운로드 받으실 수 있습니다. 오차역전파법 이전까지는 신경망의 가중치 매개변수의 기울기를 수치 미분을 사용해 구했다. 수치 미분은 단순하고 구현도 쉽지만 계산 시간이 오래 걸린다는 단점이 있다. 이번 강에서는 가중치 매개변수의 기울기를 효율적으로 계산하는 '오차역전파법(backpropagation)'을 배워보자. 오차역전파법을 제대로 이해하는 방법은 크게 두 가지가 있다. 하나는 수식을 통한 것이고, 다른 하나는 계산 그래프를 통한 것이다. 해당 포스트에서는 계산 그래프를 이용해 시각적으로 원리를 이해해 보자. 더 자세한 내용을 알고 싶다면, ..
해당 포스팅은 한빛 미디어에서 출판한 '밑바닥부터 시작하는 딥러닝'이라는 교재의 내용을 따라가며 딥러닝 튜토리얼을 진행하고 있습니다.관련 자료는여기에서 찾거나 다운로드 받으실 수 있습니다. 수치 미분 이전 포스트에서, 매개 변수의 미분값(기울기)값으로 최적의 매개변수를 찾아나가는 것이 신경망을 학습시키는 원리라고 설명한 바 있다. 그렇다면, 이 기울기 값을 구하기 위해 먼저 미분 함수부터 구현해 보도록 하겠다. 미분 미분의 정의식은 다음과 같다. 나이브하게 구현한다면, 다음과 같이 구현해볼 수 있을 것이다. def numerical_diff(f, x): h = 10e-50 return (f(x+h) - f(x)) / h함수의 이름은 수치 미분(numerical differentiation)..
해당 포스팅은 한빛 미디어에서 출판한 '밑바닥부터 시작하는 딥러닝'이라는 교재의 내용을 따라가며 딥러닝 튜토리얼을 진행하고 있습니다.관련 자료는여기에서 찾거나 다운로드 받으실 수 있습니다. 이번 포스트에서는 신경망 학습에 대해 다루어 보도록 하겠다. 여기서 학습이란 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 뜻한다. 신경망이 학습할 수 있도록 해주는 지표에는 손실 함수가 있는데, 이 손실 함수의 결과값을 가장 작게 만드는 가중치 매개변수를 찾는 것이 학습의 목표이다. 데이터에서 학습한다! 데이터 주도 학습 기계학습은 데이터가 생명이다. 데이터를 통해 패턴을 발견하고 모델을 만들 수 있기 때문이다. 위의 예시에서 숫자 '5'를 판별한다고 해 보자. '5'를 분류하는 프로그램을 직접..
해당 포스팅은 한빛 미디어에서 출판한 '밑바닥부터 시작하는 딥러닝'이라는 교재의 내용을 따라가며 딥러닝 튜토리얼을 진행하고 있습니다. 관련 자료는 여기에서 찾거나 다운로드 받으실 수 있습니다. 3층 신경망 구현하기 이번에는 3층 신경망에서 수행되는, 입력부터 출력까지의 처리(순방향 처리)를 구현해 보자. 이를 위해 전에 설명한 넘파이의 다차원 배열을 사용한다. 위 그림은 3층 신경망으로, 입력층(0층)은 2개, 첫 번째 은닉층(1층)은 3개, 두 번째 은닉층(2층)은 2개, 출력층(3층)은 2개의 뉴런으로 구성된다. 예시를 통해 이 과정을 더 자세히 살펴보자. import numpy as np X = np.array([1.0, 0.5]) W1 = np.array([[0.1, 0.3, 0.5], [0.2,..
해당 포스팅은 한빛 미디어에서 출판한 '밑바닥부터 시작하는 딥러닝'이라는 교재의 내용을 따라가며 딥러닝 튜토리얼을 진행하고 있습니다. 관련 자료는 여기에서 찾거나 다운로드 받으실 수 있습니다. 퍼셉트론에서 신경망으로 신경망의 예 신경망을 그림으로 나타낸 예시를 보자. Input이라고 표시된 것은 입력층, 맨 오른쪽 줄(Output)을 출력층, 중간 층(Hidden)을 은닉층이라고 한다. 은닉층의 뉴런은 사람 눈에는 보이지 않는다. 0층의 입력층, 1층이 은닉층, 2층이 출력층이 된다. 퍼셉트론 복습 기존 퍼셉트론은 이런 구조를 하고 있다. # 식 : y = 0 (b + w1x1 + w2x2 0) 여기서 b는 편향을 나타내는 매개변수로, 뉴런이 얼마나 쉽게 활성화되느냐를 제어한다. 한편, w1과 w2는 각..
해당 포스팅은 한빛 미디어에서 출판한 '밑바닥부터 시작하는 딥러닝'이라는 교재의 내용을 따라가며 딥러닝 튜토리얼을 진행하고 있습니다. 관련 자료는 여기에서 찾거나 다운로드 받으실 수 있습니다. 퍼셉트론(perceptron) 알고리즘 퍼셉트론은 프랑크 로젠블라트(Frank Rosenblatt)가 1957년에 고안한, 매우 오래된 알고리즘이다. 하지만 퍼셉트론의 구조를 배우는 것은 신경망과 딥러닝으로 나아가는 데 중요한 아이디어를 배우는 일도 된다. 퍼셉트론이란? 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 여기서 말하는 신호란 전류나 강물처럼 흐름이 있는 것을 상상하면 좋다. 퍼셉트론 신호는 '흐른다/안 흐른다(1이나 0)'의 두 가지 값을 가질 수 있다. 위 사진은 입력이 2개인 퍼셉..