본문 바로가기

모두의 딥러닝13

[모두의 딥러닝] 15장 선형 회귀 적용하기 이번 데이터는 보스턴의 집값에 대한 데이터 입니다. 레이블이 집값이기 때문에 분류가 아닌 회귀 문제입니다. 음... 인공 신경망은 분류와 선형 회귀가 큰 차이가 없습니다. 단지 출력층에서 0,1로 뱉는 활성화 함수를 지정해주지 않는다는 점이 차이점이예요. 마찬가지로 아주 간단합니다. from keras.models import Sequential from keras.layers import Dense from sklearn.model_selection import train_test_split import tensorflow as tf # seed값 설정 seed=0 np.random.seed(seed) tf.random.set_seed(3) dataset = df.values X = dataset[:,.. 2020. 7. 24.
[모두의 딥러닝] 14장 베스트 모델 만들기 오늘은 14장 '베스트 모델 만들기'가 주제입니다. 데이터셋은 와인의 속성 13개와 레이블이 레드와인 : 0, 화이트와인 : 1 입니다. 이진분류 모델을 만드는 데에 있어서 베스트 모델을 만들어 저장하는 법이 주제입니다! 우선 이제까지 했던 것처럼 모델을 적용해보겠습니다. 전처리 과정이 없고, 계속 똑같이 인공신경망으로 모델을 만들기때문에 코드는 동일합니다. from keras.models import Sequential from keras.layers import Dense from keras.callbacks import ModelCheckpoint, EarlyStopping import tensorflow as tf import matplotlib as plt # seed값 설정 seed=0 np... 2020. 7. 23.
[모두의 딥러닝] 13장 과적합 피하기 13장은 제가 잠깐 언급했던 과적합(overfitting)에 대한 챕터입니다. 과적합이 무엇인지에 대해서 정확히 짚어보고 그 해결방안을 주제로 포스팅 하겠습니다. 이번 데이터는 이진분류로 광석과 돌을 예측하는 모델을 설계합니다. 코딩은 지난 포스팅이랑 거의 똑같아요. 간단합니다. from keras.models import Sequential from keras.layers.core import Dense from sklearn.preprocessing import LabelEncoder # 시드값 설정 np.random.seed(3) tf.random.set_seed(3) # 데이터 입력 dataset = df.values X = dataset[:,0:60] X = X.astype(float) Y_ob.. 2020. 7. 14.
[모두의 딥러닝] 12장 다중 분류 문제 해결하기 이제껏 우리는 이진분류에 관한 데이터만 다루었습니다. 12장은 레이블 데이터가 3개 이상의 범주형 데이터를 다룰 때를 위한 챕터입니다. 앞에서 딥러닝을 공부하면서 레이블의 범주가 3개 이상이면 어떤 식으로 알고리즘이 분류할지 계속 궁금했습니다. 출력층은 활성화 함수(sigmoid)가 1 or 0의 값을 뱉어내는데 과연 이럴 때는 어떻게 알고리즘을 설계하거나 작동할지가 진짜 의문이었는데 답은 간단하더군요! ㅋㅋ 그냥 출력층의 개수를 범주의 개수와 똑같이 맞춥니다! 이제 데이터를 보겠습니다. 이번 데이터는 꽃잎의 모양과 길이 등의 정보를 토대로 꽃의 3종류를 분류하는 문제입니다. pair plot은 몇개의 피쳐들에 한하여 범주형 데이터를 시각화 할때, hue를 지정해주고 그리면 굉장히 유용합니다. 범주별 특.. 2020. 7. 12.
[모두의 딥러닝] 11장 데이터 다루기 11장은 10장처럼 간단하게 인공 신경망을 구현하지만, 약간의 데이터를 다루는 법이 추가되어 있습니다. 아주 기초적인 부분이라서 어렵지 않고, 코드 하나 하나 설명이 친절히 나와있어요. 이 책의 큰 장점이죠! 데이터는 pima indian입니다. 인디언 768명으로부터 당뇨병의 여부를 예측하는 문제입니다. 먼저 pandas를 이용해 각 column의 네임을 지정해주면서 DataFrame을 불러옵니다. 그리고나서 describe함수를 통해 기초 통계량을 확인합니다. decribe 함수는 각 컬럼들의 정보들을 한눈에 볼 수 있어서 컬럼이 적을 때는 꽤나 유용합니다. 이렇게 각 컬럼들의 기초 통계량과 컬럼들의 정보를 알아가면서 데이터 분석을 시작합니다. 우리가 가장 궁금하고 예측해야할 컬럼은 바로 'class.. 2020. 7. 11.
[모두의 딥러닝] 10장 모델 설계하기 드디어 이론은 끝났습니다! 10장부터는 데이터를 직접 다뤄보고 여러가지 딥러닝 알고리즘을 설계하는 단계가 시작됩니다! 10장은 그 중에서도 아주 기본적으로 케라스에서 제공하는 함수를 이용해 딥러닝을 구현합니다. 코드도 너무 쉬워서 10장까지 따라오면 큰 문제없이 따라하실 수 있습니다. # 필요한 모듈 import from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import numpy as np import tensorflow as tf import pandas as pd # 실행할 때마다 같은 결과를 출력하기 위해 설정하는 부분 np.random.seed(3) tf.random.set_seed(.. 2020. 7. 10.
[모두의 딥러닝] 8장 오차 역전파/ 9장 신경망에서 딥러닝으로 이번에도 8장, 9장이 짧아서 한 번에 포스팅을 합니다. 우선 8장의 오차 역전파를 알아보도록 할게요~ 책에서는 오차 역전파가 2장으로 설명했지만, 이게 또 굉장히 중요한 부분입니다! 오차 역전파에서 생긴 문제가 다시 한번 AI의 침체기를 야기시키는 원인이었거든요. 오차 역전파는 우리가 6,7장에서 배웠던 신경망의 가중치들을 출력층부터 반대로 거슬로 올라가면서 최적의 가중치들로 수정해나가는 방식입니다. 신경망의 성능을 높이는 핵심 개념이죠. 이는 우리가 앞서 배운 4장의 경사 하강법의 개념을 그대로 이용하면 됩니다. 1. 임의의 초기 가중치(W)를 준 뒤 결과(Y out)를 계산합니다. 2. 계산 결과와 우리가 원하는 값 사이의 오차를 구합니다. 3. 경사 하강법을 이용해 바로 앞 가중치를 오차가 작아지.. 2020. 6. 11.
[모두의 딥러닝] 6장/7장 단층, 다층 퍼셉트론 6장부터는 신경망의 이해라는 큰 챕터로 들어섭니다. 드디어 인공지능, 딥러닝에 대해 한 발짝 다가가는 거예요~ 어떻게 인공지능이 21세기 최근에서야 발전하고 핫해졌는지 마주쳤던 한계들과 이를 극복했던 방법도 나옵니다. 그 방법론이 바로 다층 퍼셉트론 이거든요~ 'AI(Artificial Intelligence)' 어떻게 컴퓨터로 인간의 지능을 구현해 낼 수 있을까요? 이는 인간의 뇌 구조와 굉장히 비슷합니다. 인간의 뇌는 약 천억 개의 뉴런으로 이루어져서 각각의 뉴런은 자극을 받고 그 자극이 어느 정도의 임계값을 넘기면 다음 뉴런으로 전달합니다.(임계값을 넘기지 못하면 아무것도 하지 않아요.) 이렇게 계속 수많은 뉴런으로 뻗어나가 인간은 지능을 가지고 생각을 하게 되죠. AI는 바로 여기서 출발합니다. .. 2020. 6. 1.
[모두의 딥러닝] 5장 참 거짓 판단 장치 : 로지스틱 회귀 이제껏 종속 변수 y 값이 연속형인 데이터의 수치를 예측하기 위한 선형 회귀를 알아봤습니다! 하지만 데이터는 다양합니다. 아래 그림처럼 종속 변수 y가 이산형이고, 범주형이라면? '예' or '아니오'로 수치가 아닌 정답을 원하는 데이터라면? 선형 회귀를 적용할 수 없습니다. 로지스틱 회귀는 바로 여기서 출발합니다. 로지스틱 회귀는 참 or 거짓을 판단해 주는 미니 판단 장치인 셈인 것이죠. 그림을 아무리 봐도 선형 회귀선을 그릴 수가 없죠? 직선이 아니라 S자 형태의 함수를 이용해야 합니다. 하지만 우리는 앞에서 S자 형태의 함수를 배운 적이 있습니다. 바로 '시그모이드 함수' 입니다. 로지스틱 회귀는 시그모이드 함수를 이용합니다. 로지스틱 회귀는 이렇게 시그모이드 함수로 표현이 가능합니다. 지수 부분.. 2020. 5. 18.