반응형

AI/모두의 딥러닝 14

[Deep Learning] Wine Classification Problem

이번 예제는 화이트와인과 레드와인을 구분하는 예제이다. 산도, 당도, pH등을 이용해서 12번 인덱스에 있는 두 클래스(화이트와인, 레드와인)을 구분하자. # 데이터 입력 from google.colab import files uploaded = files.upload() my_data = 'wine.csv' # !pip install -q tensorflow-gpu==1.15.0 # %tensorflow_version 1.x import tensorflow as tf import pandas as pd import numpy import matplotlib.pyplot as plt from keras.models import Sequential from keras.layers import Dense f..

[딥러닝:DeepLearning] 러닝 모델 저장하기

학습이 완료된 딥러닝 모델을 저장하려면 `model.save()`함수를 사용하면 된다. `model.save()`는 keras.models.load_model에 있다. del 키워드는 파이썬 내장 함수로 대상 객체의 데이터를 삭제한다. 예를 들면 a = [1,2,3] del a[1] print(a) output은 [1, 3]이다. 조금 더 자세한 설명은 이곳을 참고하자. https://hashcode.co.kr/questions/7566/%ED%8C%8C%EC%9D%B4%EC%8D%AC-del-%EC%9D%B4-%ED%95%A8%EC%88%98%EC%9D%B8%EA%B0%80%EC%9A%94 예시 코드는 저번 예제에서 사용한 코드에서 보도록 하겠다. # 데이터 입력 from google.colab imp..

[딥러닝 : Deep Learning] 과적합 해결하기 Solutions for Overfitting

# 데이터 입력 from google.colab import files uploaded = files.upload() my_data = 'sonar.csv' from keras.models import Sequential from keras.layers.core import Dense from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import train_test_split import pandas as pd import numpy import tensorflow as tf # seed 값 설정 seed = 0 numpy.random.seed(seed) tf.compat.v1.set_random_seed(3) #데이터..

[Deep Learning : 딥러닝] 과적합 Overfitting

과적합(overfitting)이란,,, 학습이 이미 학습된 특정한 데이터에만 잘 예측하고, 다른 테스트용/실제 데이터에는 제대로 작동하지 않는 현상을 의미합니다. 초음파를 통해 광물과 돌을 구분하는 sonar예제를 통해서 과적합 문제를 살펴봅시다. 아래 코드를 실행하면 매우 오래걸리지만 결국 언젠간 분석해냅니다.. 아래 데이터를 보면 20개의 샘플, 60개의 속성, 1개의 클래스로 구성되어고, 마지막 클래스는 자료형이 class이기에 0과 1로 표현해줘야합니다. # 데이터 입력 from google.colab import files uploaded = files.upload() my_data = 'sonar.csv' #본문에 맞는 텐서플로 버전을 선택합니다. !pip install -q tensorflo..

[Deep Learning : 딥러닝] 다중 분류 문제

다중 분류 문제 multi classification 여러개의 답 중 하나를 골라야하는 문제 - 다중 분류 문제(multi-classification)라고 합니다. 다중 분류 문제의 대표적인 예제인 'iris 품종 맞추기'를 해봅시다. 해당 예제의 데이터셋은 속성은 4개, 클래스가 3개인 데이터셋입니다. # 파일 선택을 통해 예제 데이터를 내 컴퓨터에서 불러옵니다. from google.colab import files uploaded = files.upload() my_data = 'iris.csv' from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from sklearn.preprocessin..

[Deep Learning : 딥러닝] 딥러닝과 데이터 전처리

데이터를 추출하면 클래스와 상관없는 속성과 클래스와 상관이 큰 속성으로 나뉜다. 딥러닝을 실행하기 전, 클래스와 상관관계가 있는 속성을 분류하여 딥러닝의 정확성을 높이자. 아래는 피마 인디언들의 당뇨병 여부를 예측하는 프로그램이다. 샘플 수는 768개이고, 속성이 8개 인것을 알 수 있다. 그리고 클래스는 1 혹은 0으로 구분된다. # 파일 선택을 통해 예제 데이터를 내 컴퓨터에서 불러옵니다. from google.colab import files uploaded = files.upload() my_data = 'pima-indians-diabetes.csv' # pandas 라이브러리를 불러옵니다. import pandas as pd import matplotlib.pyplot as plt import..

[Deep Learning : 딥러닝] 딥러닝 모델 설계

https://knowledgeforengineers.tistory.com/69?category=946640 에서 봤던 첫 번째 코드를 다시 살펴보자. 딥러닝 입문 - 최소제곱법, 평균제곱오차, 딥러닝의 기본 연산(method of least squares, Mean squared error) 참고도서 : 모두의 딥러닝, 제2판(조태호, 2020) 개발환경 : google colab 데이터를 입력하고 분석하는 과정을 training이라고한다. 텅빈 좌표평면에 data를 하나씩 놓고 이를 분류하는 과정이다. 이 dat knowledgeforengineers.tistory.com 아래 코드는 폐암 수술 환자의 생존율을 예측하는 코드이다. 환자의 dataset을 보면 1 ~ 17번째까지는 분석 대상이고, 그 ..

[Deep Learning : 딥러닝] 오차 역전파 기울기 소실, 확률적 경사 하강법(Stochastic Gradient Descent)

오차 역전파 기울기 소실 문제 오차 역전파를 이용하면 입력층에 가까워 질수록 보정해야하는 기울기의 값이 작아질 수밖에 없다. 애초에 기울기가 0이 되는 방향으로 parameter를 조정하기 때문에.또한 활성화 함수로 사용되는 sigmoid함수의 미분 최대값이 0.3인 것도 한 몫한다. 그래서 다른 여러가지 활성화 함수를 도입한다. $tanh(x), log(1+e^x), y=x(x>0)$ 확률적 경사 하강법 Stochastic Gradient Descent SGD 계산량을 줄이고, 과적합이 되는 경우를 방지하기 위해, 랜덤하게 일부 데이터만을 이용해서 경사 하강법을 적용하는 것을 의미한다. 모멘텀 Momentum Momentum SGD는 오차를 수정하기 전, 직전의 수정값의 부호/방향을 참고해서 같은 방향..

[Deep Learning : 딥러닝] 오차 역전파와 XOR 문제

딥러닝의 핵심은 가중치 변경에 있다. 딥러닝의 가중치 변경 방법을 오차 역전파(Back Propagation)라고 한다. 오차에 대한 함수를 만들고, 경사하강법을 통해 오차가 최소인 지점으로 parameter를 보정해주는 것을 반복한다. 그런데 이런 수정 과정이 입력층부터가 아닌 **출력층부터 시작해서 은닉층, 입력층까지** 가므로, 이걸 **오차 역전파**라고 이름붙이게 된다. 오차 역전파는 다음과 같은 과정을 거친다. 임의의 초기 가중치 W로 결과 y를 계산한다. 계산 결과 우리가 원하는 값에 대한 오차를 구한다. 경사 하강법을 통해 오차가 작아지는 방향으로 parameter를 업데이트한다. 일정 범위에 오차가 들어올 때까지 반복 (=오차 함수에 대한 미분값이 0이 될 때까지 = 가중치에서 기울기를 ..

[Deep Learning : 딥러닝] 퍼셉트론과 XOR 문제

퍼셉트론의 구조 입력값을 놓고 활성화 함수에 의해 일정한 수준을 넘으면 참, 그렇지 않으면 거짓을 내보내는 회로의 형태다. 아래와 같은 퍼셉트론을 서로 연결하고 조합하여 입력값에 대해 판단하는 것이 신경망의 기본 구조다. 앞에서 봤던 식 $y = ax + b$는 $y = wx + b$(가중합)으로 변경된다. $w$는 가중치, $b$는 바이어스라고 부른다. 이 가중합을 활성화 함수에 입력하면 1 혹은 0을 판단해서 출력한다. 대표적인 활성화함수가 앞에서 봤던 sigmoid function이다. 여러개의 퍼셉트론을 사용하여 xor연산을 표현할 수 있다. 여러개의 퍼셉트론을 사용한다는 것은 숨겨진 층 = 은닉층을 만드는 것이라고 생각하면된다. 은닉층은 입력되는 좌표평면을 왜곡하는 결과를 내놓는다. 은닉층을 여..

반응형