반응형

빅데이터 | 머신러닝 | 딥러닝/딥러닝 11

[딥러닝 기초] recurrent neural network (using LSTM, keras)

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.] Recurrent Neural Network(RNN) 필요한 클래스 임포트 - sequence : 이 예제에서는 imdb라는 영화 리뷰 데이터를 활용한다. 리뷰에 나온 단어들을 확인할 때 리뷰마다 글자 수는 다를 수밖에 없다. sequence는 단어들이 들어가 있는 데이터의 길이를 통일하게 만들어준다. - Embedding : 원-핫 인코딩으로 전처리된 데이터를 쓰게 되면 입력 데이터 크기와 사용할 수 있는 단어의 수가 제한된다는 문제가 있다. 또 원-핫 인코딩은 단어 사이에 관련이 없다고 가정할 때 사용한다. 즉, 단어를 고정된 길이의 실수 벡터로 만드는 임베딩 방식을 통해 벡터 사이의 거리(값의 차이)로 단어..

[딥러닝 기초] Convolution Neuron Network for keras

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.] Convolution Neuron Network(CNN) 필요한 클래스 임포트 - tensorflow.keras.layers에 있는 Conv2D, MaxPooling2D, Flatten, Dense를 import해준다. 합성곱층 쌓기 - Conv2D 클래스의 첫 번째 매개변수는 합성곱 커널의 개수. - 두 번째 매개변수는 합성곱 커널의 크기(높이와 너비)를 "튜플"형태로 전달. - 세 번째는 활성화 함수. - 네 번째, 다섯 번째는 각각 패딩, 입력 값 shape이다. 풀링층 쌓기 - 첫 번째 매개변수는 풀링의 높이오 너비를 나타내는 "튜플" - 두 번째 매개변수는 스트라이드, 기본 값은 풀링의 크기 - 세 번째..

[딥러닝 기초] Convolution Neuron Network 의류분류기 만들어보기

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.] Convolution Neuron Network(CNN) 합성곱 연산이란 ? 원본 배열과 특정배열(reversed)을 자릿수마다 곱하고 더한 결과가 새로운 배열의 하나의 원소 값으로 만드는 연산 * 합성곱에서는 교차상관을 사용한다 why? -> 우리는 가중치를 초기화할 때 가중치 값을 랜덤 하게 주기 때문에 reverse는 무의미하다. 패딩과 스트라이드 패딩 Valid - 원본 배열의 원소가 합성곱 연산에 참여하는 정도가 다름(원본 배열 0번째 원소가 합성곱 연산에 참여하는 횟수는 1회) full - 원본 배열의 원소가 모두 합성곱 연산에 골고루 참여하기 위해 배열 양 끝에 빈 원소를 적절히 추가한다. same ..

[딥러닝 기초] 다층 신경망을 통해 의류분류기 만들어보기(2) (using keras)

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.] 모델 이해하기 Sequential - 케라스는 인공신경망 모델을 만들기 위한 Sequential 클래스를 제공함. Dense - 모델에 포함된 완전 연결층 Sequential 모델에 층 추가하기 - model = Sequential([Dense(...)..]) - model.add(dense) input_shape=(???,) - 가중치의 shape을 결정한다. X값의 열의 개수가 784(벡터)이므로 예제에서는 784로 맞혀준다. Densse 클래스 매개변수 unit - 뉴런 개수를 매개변수로 지정. activation - 시그모이드, 소프트맥스 같은 경우는 activation='sigmoid or softmax..

[딥러닝 기초] 다층 신경망을 통해 의류분류기 만들어보기

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.] bincount : 배열에 있는 정수값의 등장 횟수를 세어 정수값에 해당하는 인덱스 위치에 저장 reshape : 사진의 정보는 2차원으로 되어있기 때문에 (-1, "차원을 합친 길이")로 변환 to_categorical : 클래스의 구별을 위해 정수값으로 되있는 값들을 원-핫 인코딩 방식으로 변환 In [1]: class MultiClassNetwork: def __init__(self, units=10, batch_size=32, learning_rate =0.1, l1=0,l2=0): self.units = units #은닉층의 뉴런개수 self.batch_size = batch_size self.w1 = ..

[딥러닝 기초] 다층 신경망 (MLPClassifier)

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.] 배치 경사 하강법 - 확률적 경사 하강법보다 많은 양을 가지고 손실함수의 최솟값을 찾기 때문에 찾는 과정이 더욱 안정적이다. - 대신 가중치를 1번 업데이터할 때사용되는 데이터 개수가 많으므로 계산 비용이 많이든다. 점 곱(dot product, 스칼라 곱) : 두 벡터를 곱하여 합을 구하는 계산. 다층 신경망 - 뉴런이 2개 이상 있는 신경망으로 은닉층을 통과한 값들은 다시 출력층으로 모임. - 활성화 함수는 층마다 다를 수 있지만 한 층에서는 같아야 한다. - 모든 뉴런이 연결되어 있으면 완전 연결 신경망이라고 한다. (add. 순환 신경망, 합성곱 신경망) Sklearn의 MLP모델 사용하여 구현하기 hid..

[딥러닝 기초] k-fold 교차 검증(cross validation)

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.] 목표 - 교차 검증을 이해한다. 교차 검증이란? 전체 데이트 세트를 8:2로 나눈 다음 8에 해당되는 훈련 세트를 다시 5개의 작은 덩어리로 나눠 1개씩 검증 세트를 만들어 훈련시키는 방법이다. 교차 검증 과정 훈련 세트를 k개의 폴드로 나눔. 첫 번째 폴드를 검증 세트로 사용하고 나머지 폴드(k-1)를 훈련세트로 사용함. 모델을 훈련한 뒤 검증 세트로 평가. 차례대로 다음 폴드를 검증 세트로 사용하여 반복. 최종 성능을 계산. 교차 검증에서 훈련 데이터의 표준화 전처리를 폴드를 나눈 후에 하는 이유? - 훈련을 하기 전에 데이터 전처리를 하고 폴드로 나눈 다면 검증 폴드의 정보를 누설하게 되어 성능개선이 안될 ..

[딥러닝 기초] Neural Network (L1, L2 규제)

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.] 목표 - 과대적합, 과소적합을 이해하고 L1규제와 L2규제에 대해 이해한다. [배운 점] 과대적합 - 모델이 훈련 세트에서는 좋은 성능을 내지만 검증 세트에서는 낮은 성능을 내는 경우. - 정확도/Epochs 그래프를 그려보면 측정한 성능의 간격이 크다. 이를 '분산이 크다'라고도 말한다. - 훈련세트의 다양성이 없어서 나오는 경우, 훈련 세트를 더 모으지 못한다면, 모델이 훈련세트에 집착하지 않도록 가중치 제한을 둘 수 있다. 이를 '모델의 복잡도를 낮춘다'라고 말한다. 과소적합 - 모델이 훈련세트와 검증세트에서 많은 성능차이를 보이진 않지만 둘 다 성능이 저조한 경우. - 정확도/Epochs 그래프에서 성능 ..

[딥러닝 기초] Neural Network (훈련 노하우)

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.] 목표 - 주어진 데이터 셋으로 어떻게 훈련했을 때 가장 효율이 좋은지 알아본다. [배운 점] 모듈 - sklean.linear_model 모듈을 통해 모델을 임포트 할 수 있다. (ex. SGDClassifier) - model의 하이퍼파라미터로 loss함수를 지정해줄 수 있다. (ex. hinge, log) 훈련데이터 세트 - 테스트 세트로 모델을 튜닝하면 테스트 세트에 대해서만 좋은 성능을 낼 수 있으므로 실전에서 좋은 성능을 기대하기 어렵다.(실전 투입 마지막 한 번만 사용하는 게 좋다.) - 훈련세트를 훈련세트와 검증세트로 나눠서 활용한다. (비율은 80 20 20) 스케일(Scale) - 우리는 잘 가공..

[딥러닝 기초] Neural Network (use cancer dataset/classfication)

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.] 목표 - 유방암 데이터 셋으로부터 모델을 만들고 테스트 후 정확도를 확인한다. sklearn(Scikit-learn이란? - 파이썬에 있는 머신러닝 라이브러리 중 하나로, 분류(classification), 회귀(regression), 군집화(clustering), 의사결정 트리(decision tree) 등의 다양한 알고리즘을 적용할 수 있는 다양한 함수들을 제공하는 라이브러리 [공부 중 궁금했던 것과 사용한 함수들을 정리] 1. from sklearn.dataset import load_breast_cancer - 사이킷런에서 유방암 데이터를 로드 2. plt.boxplot(cancer.data) - canc..

반응형