합성곱 신경망의 구조와 구성 요소에 대하여 다뤘으니, 이번에는 본격적으로 합성곱 신경망을 직접 설계하고 이용하여 이미지 분류를 해보자. 우선, 동일하게 데이터를 준비해주자. 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.reshape(-1, 28, 28, 1) / 255.0 train_scaled, val_scaled, train_target, val_target = train_test..
합성곱 신경망(Convolutional Neural Network, CNN)은 필터링 기법을 인공 신경망에 적용함으로써 이미지를 더욱 효과적으로 처리하기 위해 고안되었다. 지난번 포스팅까지 다뤘던 인공 신경망에서는 각 뉴런마다 입력 개수만큼의 가중치가 존재했다. 즉, 모든 입력에 가중치를 곱하고 절편을 더하여 1개의 출력을 만드는 방식이었다. 예를 들어, 밀집층에 뉴런이 3개가 있다면 출력 또한 3개가 되며, 이는 입력 개수에 상관 없이 동일하다. 합성곱은 이러한 밀집층의 계산과는 조금 다르다. 입력 데이터 전체에 가중치를 적용하는 것이 아니라, 일부에 가중치를 곱한다. 즉, 가중치를 줄이는 효과가 있는데 특성이 어마어마하게 많아 가중치의 개수도 셀 수 없이 많은 이미지에서 연산량을 줄이고 효과적으로 처..
이전에 사이킷런에서 제공하는 일반적인 머신러닝 알고리즘은 좋은 성능을 내기 위해 매개변수를 조정하고 훈련하는 과정을 반복한다. 다소 모델의 구조가 어느 정도 고정되어 있다고 느껴진다. 반면에 딥러닝에서는 층을 추가하고 층에 있는 뉴런의 개수와 활성화 함수를 결정하는 등의 과정이 있어 모델의 구조를 직접 만든다는 느낌이 훨씬 강하다. 이번에는 Keras를 사용하여 모델을 훈련하는데 필요한 다양한 도구들을 알아보려고 한다. 바로 시작해보자. Keras의 fit() 메서드는 Histroy 객체를 반환하는데, 이 History 객체는 훈련 과정에서 계산한 지표, 즉 손실과 정확도 값이 저장되어 있다. 이 값을 잘 사용하면 그래프를 그릴 수 있다. 우선, 데이터를 준비하고 from tensorflow import..
지난번 포스팅에서 인공 신경망에 대한 기초적인 지식과 케라스를 사용하여 직접 이를 제작해봤다. 인공 신경망은 하나의 층이 아닌 여러 개의 층을 가질 수 있는데, 층을 더 추가하여 데이터 셋을 더 정확하게 분류하는 심층 신경망을 만들 수 있다. 입력층과 출력층 사이에서 입력 받은 데이터를 가중치와 절편에 따라 중간에서 연산한 뒤, 설정되어 있는 활성화 함수로 출력하여 내보내는 층을 은닉층이라고 하는데, 출력층의 경우에는 활성화 함수로 적용할 수 있는 함수의 종류가 시그모이드(이진), 소프트 맥스(다중)으로 제한되어 있지만, 은닉층의 활성화 함수는 그 종류가 비교적 자유롭다. 대표적인 은닉층의 활성화 함수로 렐루(ReLU) 함수를 사용하는데, 이는 밑에서 다룰 것이다. (활성화 함수는 분류 문제를 풀기 위해..
앞서 머신러닝의 지도 학습, 비지도 학습을 대표하는 각각의 알고리즘을 예제와 함께 실습하며 머신 러닝을 조금 핥아봤다. 완벽하지는 않지만, 이제 어느 정도 친해진 거 같으니 딥러닝을 다뤄보자. 이번 글에서는 28 x 28 픽셀로 이뤄진 사진 데이터 샘플과 텐서플로를 가지고 직접 인공 신경망을 만들어보며, 딥러닝이 무엇인지, 텐서플로가 뭔지 알아보려고 한다. 바로 시작해보자. 우선 데이터 셋은 패션 MNIST 데이터 셋을 사용하는데, 이는 10가지의 패션 아이템 사진 샘플이 각 6000장 씩 들어있는 데이터 셋이다. 우선, 아래와 같이 텐서플로의 케라스를 임포트하고 데이터를 로드한다. from tensorflow import keras import matplotlib.pyplot as plt import ..
비지도 학습의 예제들을 다뤄보면서, 과일 사진들을 예제 데이터로 사용하였다. 사진 데이터의 경우, 만약 10000개의 픽셀을 분석하여 모델을 만드는 예제라면, 특성이 10000개인 데이터를 다루는 셈이다. 머신러닝에서는 이런 특성을 차원이라고 하는데, 차원이 많으면 많을수록 좋은 성능을 내겠지만, 필요 이상으로 많다면, 모델이 과대적합될 가능성이 생기고, 저장 공간을 너무 많이 차지할 수도 있다. 그렇기 때문에 차원 축소를 통해 데이터를 가장 잘 나타내는 일부 특성만 선택하여 데이터의 크기를 줄이고 학습 모델의 성능을 향상시킬 수 있다. 이번에는 대표적인 차원 축소 알고리즘인 주성분 분석을 다뤄보려고 한다. 바로 한번 알아보자. 주성분 분석(Priciple component analysis)은 데이터에 ..
직전 포스팅에서는 사과, 바나나, 파인애플 사진에 있는 각 픽셀의 평균값을 구하여 그 평균값과 오차가 가장 적은 사진으로 각 과일을 구분했다. 하지만, 이 경우에는 처음부터 이건 사과야~ 하고 정답을 미리 알려준 사실상 지도 학습이었다고 할 수 있는데, 진짜 비지도 학습에서는 사진에 어떤 과일이 들어 있는 지 알지 못한다. 각 사진이 어떤 과일인 지 알지 못하는 상황에서 컴퓨터가 어떻게 하면 사과인 사진만을 골라 평균값을 계산하게 할 수 있을까? 이럴 때 사용하는 것이 바로 k-평균 군집 알고리즘이다. 바로 한번 알아보도록 하자. k-평균 알고리즘은 클러스터 중심이라는 개념을 사용한다. 무작위로 k개의 클러스터 중심을 정하고, 각 클러스터 중심과 가장 가까운 데이터들 끼리 군집화를 시켜 하나의 클러스터 ..
지도학습은 정답 데이터(타깃 데이터)를 모두 알려주고 학습을 시킨 뒤에 예측을 하는 모델이었다면, 비지도 학습은 타깃이 없을 때 사용하는 머신러닝 알고리즘이다. 사람이 가르쳐 주지 않아도 데이터 내에 있는 무언가를 학습하는 것이다. 이번 포스팅에서 알아볼 군집은 비슷한 샘플끼리 그룹으로 모으는 작업을 말한다. 우선 흑백 사진을 분류하는 예제로 군집 알고리즘이 뭔지 한번 알아보자. 데이터 확인 우선, 터미널에 wget https://bitly.com/fruits_300_data -OutFile fruits_300.npy 를 입력하여 캐글에 있는 데이터셋을 로컬로 받아온다. 이 데이터는 사과, 바나나, 파인애플의 흑백 이미지 데이터를 각각 100장씩 300장 가지고 있는 데이터이다. import numpy ..
지금까지 지도 학습을 진행하면서 k-최근접 이웃, 선형 회귀부터 로지스틱 회귀, 확률적 경사 하강법 알고리즘을 사용한 분류기와 결정 트리 모델까지 다양한 학습 알고리즘 모델을 다뤘다. 직전 포스팅에서는 교차 검증을 통한 하이퍼 파리미터 튜닝까지 익히며, 이제는 꽤나 머신러닝과 친해진 거 같다는 생각이 든다. 그럼 지금까지 학습한 모델 중 가장 좋은 알고리즘은 무엇일까? 물론 데이터의 유형이나 예측해야 하는 값에 따라 매번 다르겠지만, 분명히 가장 좋은 성능을 내는 모델이 존재할 것이다. 지금까지 예제를 실습하면서 다룬 데이터는 전부 CSV 파일로 정리된 데이터였으며, 이는 정형 데이터라고 부른다. 어떤 구조를 가지고 있는 데이터라는 뜻인데, 이와 반대되는 개념을 가진 데이터를 우리는 비정형 데이터라고 부..
지금까지 실습을 진행하면서 테스트 세트에서 얻어진 점수를 보고 해당 모델을 실전에 투입하면 이 정도 성능을 기대할 수 있겠다. 하는 일반화 성능을 기대할 수 있다고 생각했다. 그럼, 결정 트리의 max_depth와 같은 매개변수를 이런 저런 값으로 넣어 최적의 값을 찾아내려면, 테스트 세트의 점수를 반복적으로 확인해야 한다. 그러나, 테스트 세트를 자꾸 사용하여 성능을 확인하다보면 점점 해당 테스트 세트에 모델이 맞춰지는 셈이다. 그렇기 때문에 테스트 세트로 일반화 성능을 올바르게 예측하기 위해서는 가능한 한 테스트 세트를 사용하지 않아야 한다. 그러면 어떻게 해야 max_depth와 같은 매개변수를 사용한 하이퍼파라미터(사람이 정해야 하는 변수들)을 튜닝할 수 있을까? 게다가 결정 트리는 이외에도 테스..
- Async
- javascript
- 맛집
- react-native
- 정보보안기사 #실기 #정리
- 파니노구스토
- await
- redux-thunk
- 이탈리안 레스토랑
- react
- redux
- AsyncStorage
- 인천 구월동 맛집
- Promise
- 인천 구월동 이탈리안 맛집
- Total
- Today
- Yesterday