딥러닝

    Convolution Neural Network(CNN, 합성곱 신경망) 개념

    1. Convolution Neural Network (CNN) 필터링 기법을 인공신경망에 적용(Convolution 작업)하여 이미지를 효과적으로 처리 할 수 있는 기법 행렬로 표현된 필터의 각 요소가 데이터 처리에 적합하도록 자동으로 학습되는 과정을 통해 이미지를 분류하는 기법 2. 심층신경망(DNN), 합성곱신경망(CNN)의 차이 심층 신경망 (DNN) 1차원의 데이터로 학습 다차원일 경우 flatten 작업을 통해 1차원으로 변경, 이미지의 경우 공간적/지역적 정보가 손실 추상화 과정 없이 바로 연산 과정으로 넘어가기 때문에 학습 시간과 효율성이 저하 합성곱 신경망 (CNN) 그대로의 데이터로 학습 공간적/지역적 정보 유지 이미지 전체보다는 부분을 보는 것, 이미지의 한 픽셀과 주변 픽셀들의 연관..

    Tensorflow - Overfitting, Underfitting 개념

    1. Generalization (일반화) 모델이 처음 보는 데이터에 대해 정확하게 예측 할 수 있으면, 이를 train 세트에서 test 세트로 일반화 되었다고 한다. 2. Overfitting (과대적합) 과대적합(overfitting)이란 머신러닝 모델을 학습할 때 train 데이터셋에 지나치게 최적화하여 발생하는 문제이다. 즉, 모델을 지나치게 복잡하게 학습하여 학습 데이터셋에서는 모델 성능이 높게 나타나지만 정작 새로운 데이터가 주어졌을 때 정확한 예측/분류를 수행하지 못한다. 3. Underfitting (과소적합) 과소적합(underfitting)이란 과대적합의 반대 개념으로서, 머신러닝 모델이 충분히 복잡하지 않아(최적화가 제대로 수행되지 않아) train 데이터의 구조/패턴을 정확히 반영..

    Tensorflow - Learning rate(학습률)을 설정하는 방법

    1. Learning rate(학습률) 딥러닝을 할 때 학습률은 적당한 값을 넣어주는 것이 가장 중요, 학습률에 따라 인공지능 성능 좌우 일반적으로 Learning Rate의 값을 0.01로 설정, 필요에 따라 조금씩 조정 학습률 값을 너무 크게 설정 할 경우 지그재그의 방향으로 이상하게 학습하는 오버슈팅(Overshooting) 문제 발생 학습률 값을 너무 적게 설정 할 경우 학습 단계가 너무 많이 필요, 하이퍼 파라미터를 찾는 과정에서 국소 최저치(Local Minima) 현상 발생 국소 최저치(Local Minima) 경사 하강법(gradient descent)을 시도할 때 최적의 해인 전역 최저치(global minima)가 아닌 학습 데이터의 특성으로 인해 국소적으로 낮은 값이 부분적 해(par..

    Tensorflow - regression(수치예측) 문제의 인공신경망(ANN)

    import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns df = pd.read_csv('Car_Purchasing_Data.csv', encoding='ISO-8859-1') 0. 데이터 확인 df.info() df.describe() 1. nan이 있는지 확인 df.isna().sum() 2. 학습데이터 X와 정답데이터 y로 분리 X = df.loc[:, 'Gender':'Net Worth'] y = df['Car Purchase Amount'] 3. X, y 모두 숫자 데이터이므로 인코딩 할 필요 없다. 4. feature scaling from sklearn.preprocessing imp..

    Tensorflow - Grid Search 를 이용한, 최적의 하이퍼 파라미터 찾기

    from keras.wrappers.scikit_learn import KerasClassifier from sklearn.model_selection import GridSearchCV from keras.models import Sequential from keras.layers import Dense 텐서플로우로 딥러닝 그리드 서치 하는 방법 1. 모델링 하는 함수를 만든다. 함수의 파라미터로 옵티마이저를 받는다. def build_model(optimizer): model = Sequential() model.add(Dense( units= 6, activation= 'relu', input_shape= (11, ) )) model.add(Dense( units= 8, activation= 're..

    Tensorflow에서 학습시 batch size, step, epoch 란?

    1. Batch size 연산 한 번에 들어가는 데이터의 크기를 말한다. 배치 사이즈가 너무 큰 경우 한 번에 처리해야 할 데이터의 양이 많아지므로, 학습 속도가 느려지고, 메모리 부족 문제가 발생할 위험이 있다. 반대로, 배치 사이즈가 너무 작은 경우 적은 데이터를 대상으로 가중치를 업데이트 하고, 이 업데이트가 자주 발생하므로 훈련이 불안정해진다. 2. Step iteration 이라고도 한다. 1-epoch를 마치는데 필요한 미니배치의 갯수 다른 말로, 1-epoch를 마치는데 필요한 파라미터(가중치) 업데이트 횟수 3. Epoch 전체 학습 데이터 셋이 모델을 통과한 횟수 epoch가 1이라면 전체 학습 데이터셋이 순전파와 역전파를 통해 신경망을 한번 통과했다는 의미 epoch가 10이라면 전체 ..

    Tensorflow - 이진 분류 문제의 인공신경망(ANN)

    위 데이터를 사용해 금융상품 갱신 여부를 예측하는 ANN을 만들어보자. import numpy as np import matplotlib.pyplot as plt import pandas as pd import seaborn as sns df = pd.read_csv('Churn_Modelling.csv') 1. nan이 있는지 확인 df.isna().sum() 2. 학습데이터 X와 정답데이터 y로 분리 X = df.loc[: , 'CreditScore':'EstimatedSalary'] y = df['Exited'] 3. 범주형 문자열 데이터를 숫자로 바꿔준다. X['Gender'].unique() X['Geography'].unique() from sklearn.preprocessing import ..

    Back propagation(오차 역전파)

    Back propagation 출력층에서 제시한 값이 실제 원하는 값에 가까워지도록 학습하기 위해 사용하는 기법 동일 입력층에 대해 원하는 값이 출력되도록 개개의 가중치를 조정하는 방법으로 사용 출력층에서 입력층까지 오차를 전달하여 가중치를 수정해나가는 알고리즘 오차를 구하여 오차가 최소가 될 때까지 가중치의 값을 변경 오차 : 데이터에 존재하는 목표 값 - 심층 신경망이 계산한 값