Python-이론/python-인공지능2(38)
-
10강 인공신경망 2편
10.3 텐서플로의 저수준 API로 심층 신경망 훈련하기 이번에는 텐서플로우의 고수준 api인 tf.estimator를 사용하지 않고 저수준 api를 사용하여 mnist를 평가해보겠습니다. 10.3.1 구성 1. 입력과 출력의 크기를 설정하고 출력수를 정한다. import tensorflow as tf n_inputs = 28 * 28 n_hidden1 = 300 n_hidden2 = 100 n_outputs = 10 2. placeholder로 데이터 그릇 만들기 X = tf.placeholder(tf.float32, shape=(None, n_inputs), name="X") Y = tf.placeholder(tf.float32, shape=None, name="y") 3. 다중 퍼셉트론 층 만들기 ..
2018.09.28 -
10강 인공신경망1 편
10강 인공신경망 사람들이 새로운 무언가에 대해 생각할때 자연에서 아이디어를 얻는 경우가 많이 있습니다. 예를 들어서 비행기(새)라던지 끈끈이 주걱(식물) 등에서 아이디어를 얻곤 하죠. 그래서 우리가 인공지능을 만들려고 했을 때 가장 먼저 아이디어를 얻은 부분이 뇌입니다. 뇌에서 어떻게 영감을 받아서 인공 뉴런까지 만들게 됐는지 살펴보겠습니다. 10.1 생물학적 뉴런에서 인공 뉴런까지 역사적으로 1943년 생리학자 워런 맥컬록이 수학자 월터 피트가 인공신경망에대해 처음 소개했습니다. 이논문에서 명제 논리를 사용해 동물 뇌의 생물학적 뉴런이 복잡한 계산을 위해 어떻게 상호작용하는지에 대한 간단한 계산 모델을 제시했습니다. 이것이 최초의 인공 신경망이었습니다. 1960년대 인공신경망의 초기 성공은 곧 지능을..
2018.09.27 -
[핸즈온 머신러닝 ch9]9강텐서플로우 사용해보기 2편
9.6 경사 하강법 구현 이번에는 정규방정식이 아닌 경사하강법을 사용하여 회귀 문제를 해결해보겠습니다. 9.6.1 직접 그레디언트 계산 import numpy as np import tensorflow as tf from sklearn.datasets import fetch_california_housing from sklearn.preprocessing import StandardScaler n_epochs = 1000 learning_rate = 0.01 scaler = StandardScaler() housing = fetch_california_housing() m, n = housing.data.shape # 데이터 개수, 특성 수 scaled_housing_data = scaler.fit_tr..
2018.09.03 -
[핸즈온 머신러닝 ch9]9강텐서플로우 사용해보기 1편
ch9 텐서플로우 사용해보기 1편 텐서플로우란? 구글에서 인공지능을 더 편하게 사용하기위해서 강력한 오픈소스 소프트웨어 라이브러리로 특히 머신러닝에 맞춰 세밀하게 튜닝되어 있습니다. 텐서플로우에 기본원리 먼저 파이썬으로 수행할 계산 그래프를 정의한 다음 텐서플로가 최적화된 C++ 코드를 사용해 이 그래프를 효율적으로 실행시킵니다. 간단한 계산 그래프의 예시 그리고 좋은 점이 계산 그래프를 여러 부분으로 나누어 여러 CPU나 GPU에서 병렬로 실행할 수 있습니다. 또한 분산 컴퓨팅도 지원하므로 수백 대의 서버에 계산을 나누어 납득할만한 시간 안에 대규모 데이터셋으로 거대한 신경망을 훈련시킬 수 있습니다. 그리고 수백만 개의 특성들을 가진 수십억 개의 샘플로 구성된 데이터셋에서 수백만 개의 파라미터를 가진 ..
2018.09.02 -
[핸즈온 머신러닝]8강 차원축소 2편
차원축소8.3.7 압축을 위한 PCA 차원을 축소하고 난 후에는 훈련 세트의 크기가 줄어듭니다. 예를 들어 MNIST 데이터셋에 분산의 95%를 유지하도록 PCA를 유지하도록 PCA를 적용해보겠습니다. 각샘플은 원래 784개 특성이 아니라 150개 정도만 가지고 있을 것입니다. 대부분의 분산은 유지되었지만 데이터셋은 원본크기의 20% 미만이 되었습니다. 이는 상당한 압축률이고 svm등에 훈련 속도를 높일 수 있습니다. 또한 압축된 데이터에 PCA투영의 변환을 반대로 적용하여 784개의 차원으로 되돌릴 수 있습니다. 물론 PCA압축을 하면서 분산 5%정도의 손실이 일어날 수 있습니다. 그러므로 원래 데이터와 완전히 같진 않겠지만 원본데이터와 매우 비슷할 것 입니다. 원본데이터와 복원된 데이터 사이의 평균 ..
2018.08.04 -
[핸즈온 머신러닝]8강 차원축소 1편
차원 축소 머신러닝을 사용할 때 훈련데이터는 수천개에서 ~ 수백만개의 특성을 갖고 있습니다. 이 부분은 훈련의 속도를 늦추거나 더 나은 솔루션을 찾기 힘들게 합니다. 이런 문제를 차원의 저주라고 합니다. 예를 들어 Mnist를 사용할 때 흰바탕의 특성을 줄인다고 해도 검사를 하는데 많은 문제가 되지 않을 것입니다. 하지만 머신러닝을 공부하면서 느끼지만 항상 양날의 검이 있는 것 같습니다. 차원 축소에서도 분명히 차원을 줄여주면 시간 단축이 될 수 있겠지만 시스템의 성능이 나빠질 수 있습니다. 차원을 축소하다 중요한 특성을 지워버릴 수 도 있으니깐요. 그래서 항상 자신의 상황과 데이터를 잘고려해서 차원 축소를 잘진행해주어야 하는 것 같습니다. 그리고 훈련 속도를 높이는 것 이외에도 데이터를 고차원으로 보여..
2018.08.04