분류 전체보기 428

2. 머신러닝 프로젝트 - 큰 그림 그리기

진행할 주요 단계는 다음과 같다. 성능 측정 지표 선택 회귀 문제의 전형적인 성능 지표는 평균제곱근 오차(root mean square error (RMSE)) 이다. RMSE가 일반적으로 회귀 문제에 선호되는 성능 측정 방법이지만 경우에 따라 다른 함수를 사용할 수도 있다. 예를 들어 이상치로 보이는 구역이 많다고 가정하다. 이런 경우에는 평균 절대 오차(mean absolute error)를 사용한다. RMSE 와 MAE 모두 예측값의 벡타와 타깃값의 벡터 사이의 거리를 재는 방법이다. 거리 측정에는 여러가지 방법 (또는 노름norm)이 가능하다.

1. 한눈에 보는 머신러닝

1. 머신러닝이란? 머신러닝은 데이터로부터 학습할 수 있는 시스템을 만드는 것이다. 학습이란 어떤 작업에서 주어진 성능 지표가 더 나아지는 것을 의미한다. 2. 레이블된 훈련 세트란? 각 샘플에 대해 원하는 정답(레이블)을 담고 있는 훈련 세트이다. 3. 가장 널리 사용되는 지도 학습 작업 두 가지 회귀, 분류 4. 보편적인 비지도 학습 작업 네 가지 군집, 시각화, 차원 축소, 연관 규칙 학습 5. 사전 정보가 없는 여러 지형에서 로봇을 걸어가게 하려면 어떤 종류의 머신러닝 알고리즘을 사용할까? 알려지지 않은 지형을 탐험하는 로봇을 학습시키는 가장 좋은 방법은 강화학습이다. 6. 고객을 여러 그룹으로 분할하려면 어떤 알고리즘을 사용해야 할까? 만약 그룹을 어떻게 정의할지 모른다면 비슷한 고객끼리 군집으..

19. CNN(6) - CNN 시각화하기, 대표적인 CNN

이 포스팅은 밑바닥부터 시작하는 딥러닝을 공부하고 정리한것 입니다. CNN을 구성하는 합성곱 계층은 입력으로 받은 이미지를 데이터에서 '무엇으로 보고 있는' 걸까? 이번 절에서는 합성곱 계층을 시각화해서 CNN이 보고있는 것이 무엇인지 알아보도록 하겠다. 1. 1번째 층의 가중치 시각화 하기 앞에서 MNIST 데이터셋으로 간단한 CNN 학습을 해보았는데, 그때 번째 층의 합성곱 계층의 가중치는 그 형상이 (30,1,5,5) 였다. (필터 30개, 채널 1개, 5x5크기). 필터의 크기가 5x5이고 채널이 1개라는 것은 이 필터를 1채널의 회색조 이미지로 시각화할 수 있다는 뜻이다. 그럼 합성곱 계층(1층째) 필터를 이미지로 나타내보자. 학습전 필터는 무작위로 초기화되고 있어 흑백의 정도에 규칙성이 없다...

18. CNN(5) - CNN 구현하기

이 포스팅은 밑바닥부터 시작하는 딥러닝을 공부하고 정리한것 입니다. class SimpleConvNet: def __init__ (self,input_dim=(1,28,28),conv_param={'filter_num':30,'filter_size':5, 'pad':0,'stride':1}, hidden_size=100,output_size=10,weight_init_std=0.01): filter_num=conv_param['filter_num'] filter_size=conv_param['filter_size'] filter_pad=conv_param['pad'] filter_stride=conv_param['stride'] input_size=input_dim[1] conv_output_size=(..

17. CNN(4) - 합성곱/풀링 계층 구현하기

이 포스팅은 밑바닥부터 시작하는 딥러닝을 공부하고 정리한것 입니다. 1. 4차원 배열 CNN에서 계층 사이를 흐르는 데이터는 4차원이다. 예를 들어 데이터의 형상이 (10,1,28,28)이면, 이는 높이 28,너비 28, 채널 1개인 데이터가 10개라는 이야기이다. 2. im2col로 데이터 전개하기 im2col은 입력 데이터를 필터링(가중치 계산) 하기 좋게 전개하는 함수이다. 아래 그림과 같이 3차원 입력 데이터에 im2col을 적용하면 2차원 행렬로 바뀐다. 정확히는 배치 안의 데이터 수까지 포함한 4차원 데이터를 2차원으로 변환한다. 위 그림에서는 보기 좋게끔 스트라이드를 크게 잡아 필터의 적용 영역이 겹치지 않도록 했지만, 실제 상황에서는 영역이 겹치는 경우가 대부분이다. 필터 적용 영역이 겹치..

15. CNN(2) - 합성곱 계층

이 포스팅은 밑바닥부터 시작하는 딥러닝을 공부하고 정리한것 입니다. CNN에서는 패딩(padding), 스트라이드(stride)등 CNN 고유의 용어가 등장한다. 또, 각 계층 사이에는 3차원 데이터같이 입체적인 데이터가 흐른다는 점에서 완전연결 신경망과 다르다. 1. 완전연결 계층의 문제점 완전연결 계층의 문제점은 바로 데이터의 형상이 무시된다는 사실이다. 입력 데이터가 이미지인 경우를 예로 들면, 이미지는 통상 가로,세로,채널(색상)로 구성된 3차원 데이터이다. 그러나 완전연결 계층에 입력할 때는 3차원 데이터를 평평한 1차원 데이터로 평탄화해줘야 한다. 사실 지금까지의 MNIST 데이터셋을 사용한 사례에서는 형상이 (1,28,28)인 이미지 (1채널, 세로 28픽셀, 가로 28픽셀)를 1줄로 세운 ..

14. 합성곱 신경망(CNN)(1) - 전체 구조

이 포스팅은 밑바닥부터 시작하는 딥러닝을 공부하고 정리한것 입니다, CNN도 지금까지 본 신경망과 같이 레고 블록처럼 계층을 조합하여 만들 수 있다. 다만, 합성곱 계층(convolutional layer)과 폴링 계층(pooling layer)이 새롭게 등장한다. 지금까지 본 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있었다. 이를 완전연결(fully connected)이라고 하며, 완전히 연결된 계층을 Affine 계층이라는 이름으로 구현했다. 이 Affine 계층을 사용하면, 가령 층이 5개인 완전연결 신경망은 다음 그림과 같이 구현할 수 있다. CNN의 구조는 다음과 같다. 위 그림과 같이 CNN에서는 새로운 합성곱 계층(Conv)와 풀링 계층(pooling)이 추가된다.

13. 학습 관련 기술들 (5) - 적절한 하이퍼파라미터 값 찾기

이 포스팅은 밑바닥부터 시작하는 딥러닝을 공부하고 정리한것 입니다. 신경망에는 하이퍼파라미터가 다수 등장한다. 여기서 말하는 하이퍼파라미터는 각 층의 뉴런 수, 배치 크기, 매개변수 갱신 시의 학습률과 가중치 감소 등이다. 이러한 하이퍼파라미터 값을 적절히 설정하지 않으면 모델의 성능이 크게 떨어지기도 한다. 하이퍼파라미터의 값은 매우 중요하지만 그 값을 결정하기까지는 일반적으로 많은 시행착오를 겪는다. 이번 절에서는 하이퍼파라미터의 값을 최대한 효율적으로 탐색하는 방법을 설명한다. 1. 검증 데이터 하이퍼파라미터의 성능을 평가할 때는 시험 데이터를 사용해서 안 된다. 왜냐하면 시험 데이터를 사용하여 하이퍼파라미터를 조정하면 하이퍼파라미터 값이 시험 데이터에 오버피팅 되기 때문이다. 하이퍼파라미터 조정용..

12. 학습 관련 기술들(4) - 오버피팅, 가중치 감소, 드롭아웃

이 포스팅은 밑바닥부터 시작하는 딥러닝을 공부하고 정리한것 입니다. 기계학습에서는 오버피팅이 문제가 되는 일이 많다. 오버피팅이란 신경망이 훈련 데이터에만 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태를 말한다. 1. 오버피팅 오버피팅은 주로 다음의 두 경우에 일어난다 1. 매개변수가 많고 표현력이 높은 모델 2. 훈련 데이터가 적음 이처럼 정확도가 크게 벌어지는 것은 훈련 데이터에만 적응(fitting)해버린 결과이다. 훈련 때 사용하지 않은 범용 데이터에는 제대로 대응하지 못하는 것을 이 그래프에서 확인할 수 있다. 2. 가중치 감소 오버피팅 억제용으로 예로부터 많이 이용해온 방법 중 가중치 감소(weight decay)라는 것이 있다. 이는 학습 과정에서 큰 가중치에 대해서는 그..