본문 바로가기

프로그래밍 놀이터/머신러닝, AI, 딥러닝10

[머신러닝] #8 딥러닝 [머신러닝] #8 딥러닝 "Deep Learning from Scratch” 책을 보고 제가 필요한 내용만 정리한 내용입니다.자세한 내용은 책을 구매해서 보세요~ -딥러닝은 층을 깊게 한 심층 신경망이다.심층 신경망은 지금까지 설명한 신경망을 바탕으로 뒷단에 층을 추가하기만 하면 만들 수 있지만, 커다란 문제가 몇 개 있다. 8.1. 더 깊게 8.1.1. 더 깊은 신경망으로 -심층 신경망을 학습시키는 데는 시간이 오래 걸린다.그러나 정확도는 올라간다. 8.1.2. 정확도를 더 높이려면 -MNIST 데이터셋에 대해서는 층을 아주 깊게 하지 않고도 최고 수준의 결과나 나온다.이는 손글씨 숫자라는 문제가 비교적 단순해서 신경망의 표현력을 극한까지 높일 필요가 없기 때문이라고 생각된다.그래서 층을 깊게 해도 혜.. 2018. 7. 10.
[머신러닝] #7 합성곱 신경망 (CNN) [머신러닝] #7 합성곱 신경망 (CNN) "Deep Learning from Scratch” 책을 보고 제가 필요한 내용만 정리한 내용입니다.자세한 내용은 책을 구매해서 보세요~ -합성곱 신경망(Convolutional Neutral Network, CNN) 은 이미지 인식과 음성 인식 등 다양한 곳에 사용된다.특히 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 다 CNN 을 기초로 한다. 7.1. 전체 구조 -CNN 도 기존 신경망과 같이 레고 블록처럼 계층을 조합하여 만들 수 있다.이곳에 새로운 개념이 등장한다. 합성곱 계층(convolutional layer)과 폴링 계층(pooling layer)이다. -지금까지 본 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있었다.이를 완전 연결(ful.. 2018. 7. 9.
[머신러닝] #6 학습 관련 기술들 [머신러닝] #6 학습 관련 기술들 "Deep Learning from Scratch” 책을 보고 제가 필요한 내용만 정리한 내용입니다.자세한 내용은 책을 구매해서 보세요~ 6.1. 매개변수 갱신 -신경망 학습의 목적은 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것이다.이는 곧 매개변수의 최적값을 찾는 문제이며, 이러한 문제를 푸는 것을 최적화(optimization)라 한다.안타깝게도 신경망 최적화를 굉장히 어렵다. 매개변수 공간은 매우 넓고 복잡해서 최적의 솔루션은 쉽게 못 찾기 때문이다. 우리는 지금까지 최적의 매개변수를 찾는 단서로 매개변수의 기울기(미분)을 시용했다.매개변수의 기울기를 구해, 기울어진 방향으로 매개변수 값을 갱신하는 일을 몇 번 반복해서 점점 최적의 값에 다가갔다.이것이.. 2018. 7. 8.
[머신러닝] #5 오차역전파법 ( Back propagation ) [머신러닝] #5 오차역전파법 ( Back propagation ) "Deep Learning from Scratch” 책을 보고 제가 필요한 내용만 정리한 내용입니다.자세한 내용은 책을 구매해서 보세요~ -수치미분은 단순하고 구현하기도 쉽지만 계산 시간이 오래 걸린다는게 단점이다.오차역전파법(backpropagation)은 어렵지만 시간이 짧게 걸린다. -오차역전파법을 제대로 이해하는 방법은 두 가지가 있다. 하나는 수식을 통한 것이고, 다른 하나는 계산 그래프를 통한 것이다.수식을 통한 것이 일반적인 방법으로, 특히 기계학습을 다루는 책 대부분은 수식을 중심으로 이야기를 전개한다.하지만 수식을 중심으로만 생각하다 보면 본질을 놓치거나, 수많은 수식에 당황할 수 있다. 5.1. 계산 그래프 -계산 그래.. 2018. 7. 7.
[머신러닝] #4 신경망 학습 #2 [머신러닝] #4 신경망 학습 #2 "Deep Learning from Scratch” 책을 보고 제가 필요한 내용만 정리한 내용입니다.자세한 내용은 책을 구매해서 보세요~ 4.4. 기울기 -x0 와 x1 의 (두 변수의) 편미분을 동시에 계산하는, 모든 변수의 편미분을 벡터로 정리한 것을 기울기(gradient)라고 한다.def numerical_gradient(f, x): h = 1e-4 grad = np.zeros_like(x) # x 와 형상이 같은 배열을 생성 for idx in range(x.size): tmp_val = x[idx] # f(x+h) 계산 x[idx] = tmp_val + h fxh1 = f(x) # f(x-h) 계산 x[idx] = tmp_val - h fxh2 = f(x) .. 2018. 7. 6.
[머신러닝] #4 신경망 학습 #1 [머신러닝] #4 신경망 학습 #1 "Deep Learning from Scratch” 책을 보고 제가 필요한 내용만 정리한 내용입니다.자세한 내용은 책을 구매해서 보세요~ -학습은 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 뜻한다.신경망이 학습할 수 있도록 해주는 지표인 손실함수가 있다.이 손실 함수의 결과값을 가장 작게 만드는 가중치 매개변수를 찾는 것이 학습의 목표이다. 4.1. 데이터에서 학습한다! -신경망의 특징은 데이터를 보고 학습을 할 수 있다는 것이다.데이터에서 학습한다는 것은 가중치 매개변수의 값을 데이터를 보고 자동으로 결정한다는 뜻이다. 4.1.1. 데이터 주도 학습 -기계학습은 데이터가 생명이다. 데이터에서 답을 찾고 데이터에서 패턴을 발견하고 데이터로 이야.. 2018. 7. 5.
[머신러닝] #3 신경망 #2 [머신러닝] #3 신경망 #2 "Deep Learning from Scratch” 책을 보고 제가 필요한 내용만 정리한 내용입니다. 자세한 내용은 책을 구매해서 보세요~ 3.5. 출력층 설계하기 -신경망은 분류와 회귀 모두에 이용할 수 있다.어떤 문제냐에 따라 출력층에서 사용하는 활성화 함수가 달라진다.일반적으로 회귀에는 항등 함수를, 분류에는 소프트맥스 함수를 사용한다. -기계학습 문제는 분류(classification)과 회귀(regression)로 나뉜다.분류는 데이터가 어느 클래스(class)에 속하냐는 문제이다.사진 속 인물의 성별을 분류하는 문제가 여기에 속한다.한편 회귀는 입력 데이터에서 (연속적인) 수치를 예측하는 문제이다.사진 속 인물의 몸무게(57.4kg?)를 예측하는 문제가 회귀이다... 2018. 7. 4.
[머신러닝] #3 신경망 #1 [머신러닝] #3 신경망 #1 "Deep Learning from Scratch” 책을 보고 제가 필요한 내용만 정리한 내용입니다.자세한 내용은 책을 구매해서 보세요~ -앞 장에서 배운 퍼셉트론은 좋은 소식과 나쁜 소식이 있다.좋은 소식은 퍼셉트론으로 복잡한 함수를 표현할 수 있다는 것이고,나쁜 소식은 가중치 설정은 여전히 사람이 수동으로 한다는 것. 신경망은 이 나쁜 소식을 해결해준다.가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력이 신경망의 중요한 성질이다. 3.1. 퍼셉트론에서 신경망으로 3.1.1. 신경망의 예. -가장 왼쪽 줄은 입력층,맨 오른쪽 줄을 출력층,중간 층을 은닉층이라고 한다. 은닉층의 뉴런은 입력층이나 출력층과 달리 사람 눈에는 보이지 않는다.이 책에서는 입력층, .. 2018. 7. 3.
[머신러닝] #2 퍼셉트론 [머신러닝] #2 퍼셉트론 "Deep Learning from Scratch” 책을 보고 제가 필요한 내용만 정리한 내용입니다.자세한 내용은 책을 구매해서 보세요~ -퍼셉트론(perceptron) 은 프랑크 로젠블라트라는 사람이 1957년에 고안한 알고리즘이다.고대 화석 같은 녀석인데 퍼셉트론이 신경망(딥러닝)의 기원이 되는 알고리즘이다.그래서 알아두어야 한다. 2.1. 퍼셉트론이란? -퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다.여기서 신호란 전류나 강물처럼 흐름이 있는 것을 상상하면 좋다.실제 전류와 달리 퍼셉트론 신호는 0, 1 값만 갖는다. - x1, x2 는 입력 신호y 는 출력 신호w1, w2 는 가중치를 말한다. (w 는 weight 의 머릿글자) 그림의 원을 뉴런 혹은 노.. 2018. 7. 2.