목록𝐂𝐎𝐌𝐏𝐔𝐓𝐄𝐑 𝐒𝐂𝐈𝐄𝐍𝐂𝐄/𝐃𝐄𝐄𝐏 𝐋𝐄𝐀𝐑𝐍𝐈𝐍𝐆 (12)
도순씨의 코딩일지
순환 신경망(RNN)은 여러 개의 데이터가 순서대로 입력되었을 때 앞서 입력받은 데이터를 잠시 기억해 놓는 방법이다. 그리고 기억된 데이터가 얼마나 중요한지를 판단하여 별도의 가중치를 줘서 다음 데이터로 넘어간다. 모든 입력값에 대해 이러한 작업을 하기 때문에 계속 순환하는 것처럼 보인다. 따라서 순환 신경망이라고 부른다. 하지만 RNN의 특성상 일반 신경망보다 기울기 소실 문제가 더 많이 발생한다. 이를 해결하기 위해서 만들어진 방법이 LSTM(Long Short Term Memory)이다. 반복되기 직전에 다음 층으로 기억된 값을 넘겨야하는지 결정하는 단계를 추가한다. LSTM을 이용하여 로이터 뉴스 카테고리를 분류해보도록 하자. 케라스를 통해 로이터 뉴스의 데이터를 가져올 수 있다. 1 from k..
지금까지 예로 들었던 데이터들은 참(1) 또는 거짓(0)을 맞히는 문제, 아니면 여러 개의 보기 중 맞는 하나를 예측하는 문제였다. 이번에는 정답을 맞히는 것이 아닌 수치를 예측하는 모델을 만들어보도록 하자. @ 데이터는 https://github.com/gilbutITbook/006958 여기서 다운로드 받으실 수 있습니다. 1. 데이터 확인하기 먼저 데이터를 확인해보자. @ 코드 1 2 3 4 import pandas as pd df = pd.read_csv("/Users/hansubin/Downloads/006958-master/deeplearning/dataset/housing.csv", delim_whitespace = True, header = None) print(df.info()) Colo..

이번 실습은 와인의 종류를 예측해보는 것이다. 1. 데이터의 확인과 실행 1 2 3 4 5 6 import pandas as pd df_pre = pd.read_csv("/Users/Downloads/006958-master/deeplearning/dataset/wine.csv", header = None) df = df_pre.sample(frac = 1) print(df.head(5)) Colored by Color Scripter cs csv 파일을 읽어오고 sample() 함수를 사용하여 원본 데이터의 몇 %를 사용할 것인지 표기해준다. frac = 1은 원본 데이터의 100%을 의미한다. 그리고 head 함수를 사용하여 처음 다섯 줄만 출력하면 다음과 같은 결과가 나온다. 1 2 3 4 5 6 ..
1988년 존스홉킨스대학교의 세즈노프스키(Sejnowski)교수는 오차 역전파 알고리즘을 사용한 신경망이 과연 얼마나 광석과 돌을 구분하는 데 효과적인지 알아보려 했다. 그때나 지금이나 어렵게 해결하는 과적합(overfitting) 문제는 어떻게 해결해야 좋을까? 모델이 과적합되면 훈련 데이터에 대한 정확도는 높을 수 있지만 검증 데이터에 대한 정확도는 낮아진다. 따라서 과적합을 막을 필요성이 있다. @ 데이터는 https://github.com/gilbutITbook/006958 여기서 다운로드 받으실 수 있습니다. 1. 데이터 확인과 실행 sonar.csv 파일을 사용하여 확인해보도록 하자. @ 코드 1 2 3 4 import pandas as pd df = pd.read_csv("/Users/Dow..

다중 분류 문제 여러 꽃들의 이미지가 있다. 딥러닝을 이용하여 이 꽃들이 어떤 종류인지 분류할 수 있을까? 위 csv 파일이 담고 있는 정보는 다음과 같다 샘플 수 : 150 속성 수 : 4(A, B, C, D) - 정보 1(A) : 꽃받침 길이 - 정보 2(B) : 꽃받침 넓이 - 정보 3(C) : 꽃잎 길이 - 정보 4(D) : 꽃잎 넓이 클래스(E) : Iris-setosa, Iris-versicolor, Iris-virginica 지금까지 우리가 살펴보았던 것들은 클래스가 2개였다. 하지만 이번에는 클래스가 3개이다. 즉 참(1)과 거짓(0)으로 구분하는 것이 아닌, 다른 방법으로 접근해야 할 필요가 있다. 이렇게 여러 개의 답 중에서 하나를 고르는 분류 문제를 다중 분류(multi classif..

데이터 가공하기 데이터를 정확하게 파악하기 위해서는 한 번 더 데이터 가공 과정을 거칠 필요가 있다. 우리의 목표는 '당뇨병 발병을 예측하는 것' 이라는 것을 잊지 말아야 한다. 만약 임신 횟수와 당뇨병 발병 확률이 궁금하다면 다음과 같이 계산하면 된다. 1 print(df[['pregnant', 'class']].groupby(['pregnant'], as_index = False).mean().sort_values(by = 'pregnant', ascending = True)) cs 여기서는 모두 4가지 함수를 사용했다 첫 번째, groupby 함수를 하용하여 'pregnant' 정보를 기준으로 하는 새 그룹을 만들었다. 두 번째, as_index = False는 pregnant 정보 옆에 새로운 i..
@ 아래 링크에 있는 코드를 사용합니다. https://dosundosun.tistory.com/10 딥러닝 :: 폐암 수술 환자의 생존률 예측하기 폐암 수술 환자의 생존율을 예측하는 모델을 간단하게 실행해보도록 하자. @ 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 # 필요한 keras 함수 impo.. dosundosun.tistory.com 모델 설계하기 딥러닝의 모델을 설정하고 구동하는 부분은 모두 model이라는 함수를 선언하며 시작된다. 1 model = Sequential() cs 이 부분은 딥러닝이 구조를 짜고 층을 설정하는 부분이다. model.compile() ..

오차 역전파 오차 역전파는 다층 퍼센트론에서의 최적화 과정이다. 경사 하강법의 확장 개념이라고도 할 수 있다. 앞에서 살펴본 방법을 사용하여 가중치를 구하는 방법을 간단하게 살펴보자면 '임의의 가중치를 선언하고 최소 제곱법을 이용해 오차를 구한 뒤 이 오차가 최소인 지점으로 계속해서 조금씩 이동시킨다. 이 오차가 최소가 되는 점(미분했을 때 기울기가 0이 되는 지점)을 찾으면 된다'. 하지만 경사 하강법은 입력과 출력이 하나 씩일 때 (=단일 퍼셉트론)일 경우이다. 하지만 숨어 있는 층이 하나 더 생겼다면 어떻게 될까? 결괏값의 오차를 구해 이를 토대로 앞선 가중치를 차례로 거슬러 올라가며 조정하면 된다. 최적화의 계산 방향이 출력층에서 시작해 앞으로 진행되므로 오차 역전파(back propagation..