분류 전체보기 428

2. 신경망 (1)

이 포스팅은 밑바닥부터 시작하는 딥러닝을 공부하고 정리한것 입니다. 앞에서 배운 퍼셉트론의 장점은 복잡한 함수를 표현할 수 있다는 것이다. 그러나 단점은 가중치를 설정하는 작업은 여전히 사람이 수동으로 한다는 점이다. 신경망이 이러한 단점을 커버해준다. 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력이 이제부터 살펴볼 신경망의 중요한 성질이다. 퍼셉트론에서 신경망으로 여기서는 입력,은닉,출력층을 순서대로 0층,1층,2층 이라 하겠다. 그림 3-1의 신경망은 모두 3층으로 구성된다. 가중치를 갖는 층은 2개뿐이기 때문에 2층 신경망이라고 한다. 위 그림에서는 가중치가 b이고 입력이 1인 뉴런이 추가되었다. 이 퍼셉트론의 동작은 x1,x2,1 이라는 3개의 신호가 뉴런에 입력되어, 각 신호..

1. 퍼셉트론

이 포스팅은 밑바닥부터 시작하는 딥러닝을 공부하고 정리한것 입니다. 퍼셉트론은 프랑크 로젠블라트가 1957년에 고안한 알고리즘으로 신경망(딥러닝)의 기원이 되는 알고리즘이다. 퍼셉트론이란? 퍼셉트론은 다수의 신호를 받아 하나의 신호를 출력한다. x1,x2는 입력 신호, y는 출력 신호, w1과 w2는 가중치를 뜻한다. 그림의 원을 뉴런 혹은 노드라고 부른다. 입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다. 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력한다. 그 한계를 입계값이라 하며 기호 세타로 나타낸다. 퍼셉트론 구현하기 def AND(x1,x2): w1,w2,theta= 0.5,0.5,0.7 tmp=x1* w1 + x2 * w2 if tmptheta: return..

[8-3] 합성곱 신경망의 시각화(2)

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝을 공부하고 정리한것 입니다. 특성 맵 시각화 케라스로 패션 MNIST 데이터셋을 읽은 후 훈련 세트에 있는 첫 번째 샘플을 그려 보자. (train_input,train_target),(test_input,test_target) = keras.datasets.fashion_mnist.load_data() plt.imshow(train_input[0],cmap='gray_r') plt.show() 앵클 부츠이다. 이 샘플을 conv_acti 모델에 주입하여 Conv2D층이 만드는 특성 맵을 출력해 보자. 앞에서도 설명했지만 predict() 메서드는 항상 입력의 첫 번째 차원이 배치 차원일 것으로 기대한다. 하나의 샘플을 전달하더라도 꼭 첫 번째 차원을 유지해..

[8-3] 합성곱 신경망의 시각화(1)

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝을 공부하고 정리한것 입니다. 이번 시간에는 합성곱 층이 이미지에서 어떤 것을 학습했는지 알아보기 위해 합성곱 층의 가중치와 특성 맵을 그림으로 시각화해 보겠다. 이를 통해 합성곱 신경망의 동작 원리에 대한 통찰을 키울 수 있다. 가중치 시각화 합성곱 층은 여러 개의 필터를 사용해 이미지에서 특징을 학습한다. 각 필터는 커널이라 부르는 가중치와 절편을 가지고 있다. 일반적으로 절편은 시각적으로 의미가 있지 않다. 가중치는 입력 이미지의 2차원 영역에 적용되어 어떤 특징을 크게 두드러지게 표현하는 역할을 한다. 예를 들어 다음과 같은 가중치는 둥근 모서리가 있는 영역에서 크게 활성화되고 그렇지 않은 영역에서는 낮은 값을 만들 것이다. 이 필터의 가운데 곡선 부분..

[8-2] 합성곱 신경망을 사용한 이미지 분류

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝 책을 공부하고 정리한것 입니다. 이번 시간에는 텐서플로 케라스 API를 사용해 7장에서 만들었던 패션 MNIST 데이터를 합성곱 신경망으로 분류해보겠다. 패션 MNIST 데이터 불러오기 합성곱 신경망은 2차원 이미지를 그대로 사용하기 때문에 일렬로 펼치치 않는다. 다만 입력 이미지는 항상 깊이(채널) 차원이 있어야 한다. 흑백 이미지의 경우 채널 차원이 없는 2차원 배열이지만 Conv2D층을 사용하기 위해 마지막에 이 채널 차원을 추가해야 한다. 넘파이 reshape() 메서드를 사용해 전체 배열 차원을 그대로 유지하면서 마지막에 차원을 간단히 추가할 수 있다. from tensorflow import keras from sklearn.model_select..

[8-1] 합성곱 신경망

합성곱 합성곱(convolution)은 마치 입력 데이터에 마법의 도장을 찍어서 유용한 특성만 드러나게 하는 것으로 비유할 수 있다. 인공 신경망은 처음에 가중치 w1~w10과 절편 b를 랜덤하게 초기화한 다음 에포크를 반복하면서 경사 하강법 알고리즘을 사용하여 손실이 낮아지도록 최적의 가중치와 절편을 찾아간다. 이것이 바로 모델 훈련이다. 합성곱의 밀집층의 계산은 입력 데이터 전체에 가중치를 적용하는 것이 아니라 일부에 가중치를 곱한다. 다음 그림과 위의 그림을 비교해 보자. 여기에서는 이 뉴런이 3개의 가중치를 가진다고 가정했다. 가중치 w1~w3이 입력의 처음 3개 특성과 곱해져 1개의 출력을 만든다. 이 뉴런이 한 칸 아래로 이동해 두 번째부터 네 번째 특성과 곱해져 새로운 출력을 만든다. 여기서..

[7-3] 신경망 모델 훈련

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝을 공부하고 정리한것 입니다.손실 곡선 케라스의 fit() 메서드는 History 클래스 객체를 반환한다. History 객체에는 훈련 과정에서 계산한 지표, 즉 손실과 정확도 값이 저장되어 있다. 이 값을 사용하면 그래프를 그릴 수 있다.from tensorflow import keras from sklearn.model_selection import train_test_split (train_input,train_target),(test_input,test_target)=keras.datasets.fashion_mnist.load_data() train_scaled=train_input /255.0 train_scaled,val_scaled,train_ta..

[7-2] 심층 신경망

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝을 공부하고 정리한것 입니다. model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics='accuracy') model.fit(train_scaled,train_target,epochs=5) 앞에서 만들었던 인공 신경망의 성능을 더 높여보자. 2개의 층 from tensorflow import keras (train_input,train_target),(test_input,test_target)= keras.datasets.fashion_mnist.load_data() 이미지의 픽셀값을 0~255 범위에서 0~1 사이로 변환하고 28 x 28 크기의 2차원 배열을 784 크기의 ..

[7-1] 인공 신경망

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝 책을 공부하고 정리한것 입니다. 패션 MNIST from tensorflow import keras (train_input,train_target),(test_input,test_target) = keras.datasets.fashion_mnist.load_data() keras.dataset.fashion_mnist 모듈 아래 load_data() 함수는 친절하게 훈련 데이터와 테스트 데이터를 나누어 반환한다. 이 데이터는 각각 입력과 타깃 쌍으로 구성되어 있다. print(train_input.shape,train_target.shape) 훈련 데이터는 60,000 개의 이미지로 이루어져 있다. 각 이미지는 28 x 28 크기이다. print(test_i..

[6-3] 주성분 분석

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝 책을 공부하고 정리한것 입니다. k-평균 알고리즘으로 업로드된 사진을 클러스터로 분류하여 저장할수 있게 되었다. 그런데 시간이 지나면서 너무 많은 사진이 등록되어 저장 공간이 부족해질 수 있다. 나중에 군집이나 분류에 영향을 끼치지 않으면서 업로드된 사진의 용량을 줄일 수 있을까? 차원과 차원 축소 지금까지 우리는 데이터가 가진 속성을 특성이라 불렀다. 과일 사진의 경우 10000개의 픽셀이 있기 때문에 10000개의 특성이 있는 셈이다. 머신러닝에서는 이런 특성을 차원(dimension) 이라고도 부른다. 10000개의 특성은 결국 10000개의 차원이라는 건데 이 차원을 줄일 수 있다면 저장 공간을 크게 절약할 수 있을 것이다. 이를 위해 비지도 학습 작..