본문 바로가기

전체 글346

Python : module, package, library, framework module vs package 예시 - keras __init__.py (./keras) from __future__ import absolute_import from . import utils from . import activations from . import applications from . import backend from . import datasets from . import engine from . import layers from . import preprocessing from . import wrappers from . import callbacks from . import constraints from . import initializers from . import metric.. 2020. 3. 11.
자연어처리 : RNN의 언어 모델 (RNNLM) NN 언어 모델(Recurrent Neural Network Language Model, RNNLM) 2020/03/05 - [machine_learning/natural language] - 자연어처리 : 언어모델 : N-gram 자연어처리 : 언어모델 : N-gram 정의 SLM의 일종이지만, 단어 고려를 모든 단어를 고려하는 것이 아닌, n개로 정한 갯수만 고려한다. 1. corpus에서 카운트하지 못하는 경우의 확률 감소 SLM의 한계는 훈련 코퍼스에 확률을 계산하고 싶은 문장이.. mambo-coding-note.tistory.com gram은 N개의 단어들만 생각을 하게되고, 문맥을 파악하지 못한다는 단점이 존재한다. 하지만 RNN은 sequence를 다루기 쉽고, time step이라는 시점.. 2020. 3. 11.
DL : RNN : GRU (Gated Recurrent Unit) 1. GRU(Gated Recurrent Unit) LSTM에서는 출력, 입력, 삭제 게이트라는 3개의 게이트가 존재했습니다. 반면, GRU에서는 업데이트 게이트와 리셋 게이트 두 가지 게이트만이 존재합니다. GRU는 LSTM보다 학습 속도가 빠르다고 알려져있지만 여러 평가에서 GRU는 LSTM과 비슷한 성능을 보인다고 알려져 있습니다. 반드시 LSTM 대신 GRU를 사용하는 것이 좋지는 않습니다. GRU와 LSTM 중 어떤 것이 모델의 성능면에서 더 낫다라고 단정지어 말할 수 없으며, 기존에 LSTM을 사용하면서 최적의 하이퍼파라미터를 찾아낸 상황이라면 굳이 GRU로 바꿔서 사용할 필요는 없습니다. 사실 아직까지는 GRU보다 LSTM이 좀 더 많이 사용되는 편이고, 또한 일부 논문에서는 여전히 LSTM.. 2020. 3. 10.
DL : RNN : LSTM (Long-Short-Term Memory) 1. Vanilla RNN의 한계점 앞 챕터에서 바닐라 RNN은 출력 결과가 이전의 계산 결과에 의존한다는 것을 언급한 바 있습니다. 하지만 바닐라 RNN은 비교적 짧은 시퀀스(sequence)에 대해서만 효과를 보이는 단점이 있습니다. 바닐라 RNN의 시점(time step)이 길어질 수록 앞의 정보가 뒤로 충분히 전달되지 못하는 현상이 발생합니다. 뒤로갈수록 정보량의 크기가 적어지는 현상이 벌어집니다. (Sigmoid의 Gradient Vanishing과 같은 현상) 이를 장기 의존성 문제(the problem of Long-Term Dependencies)라고 합니다. 2. Vanilla RNN 내부 ht = tanh(Wx xt+Wh ht−1+b) yt = Wy ht 바닐라 RNN은 xt와 ht−1.. 2020. 3. 10.
DL : RNN (Recurrent Neural Network) 1. RNN 등장 배경 피드 포워드 신경망은 입력의 길이가 고정되어 있어 자연어 처리를 위한 신경망으로는 한계가 있었습니다. 결국 다양한 길이의 입력 시퀀스를 처리할 수 있는 인공 신경망이 필요 (RNN의 재귀함수 같은 동작때문, time_step...)하게 되었는데, 자연어 처리에 대표적으로 사용되는 인공 신경망인 RNN, LSTM 이 생긴다. 2. RNN 정의 다양한 길이의 입력 시퀀스를 처리할 수 있는 인공 신경망이다. 또한 은닉층의 노드에서 활성화함수를 통해 나온 결과값을 출력층 방향으로 내보내면서, 다시 은닉층의 노드의 다음 계산의 입력을 보내지는 특징을 가진다. RNN cell, Memory cell 은닉층에서 활성화함수를 통해 결과를 내보내는 역할을 하는 노드를 cell이라 한다. Hidde.. 2020. 3. 10.
DL : Keras : 20개 뉴스 판별하기 project 20개 뉴스 그룹 data에 대한 이해¶ In [16]: import pandas as pd from sklearn.datasets import fetch_20newsgroups # %matplotlib inline : ipython에서 함수 결과값을 inline 웹브라우저상 안에서 보여주는 code import matplotlib.pyplot as plt from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.utils import to_categorical news = fetch_20newsgroups(subset='train') # train을 기재하면 훈련데이터만 리턴 Downloading 20news data.. 2020. 3. 10.
DL : Keras : Sequential vs Functional API Keras의 함수형 (Keras Functional API)¶ 1. sequential API로 만든 model¶ In [ ]: # 이 코드는 소프트맥스 회귀 챕터에서 가져온 코드임. from tensorflow.keras.models import Semquential from tensorflow.keras.layers import Dense model=Sequential() model.add(Dense(3, input_dim=4, activation='softmax')) 직관적이고 편리하지만, 단순히 층을 쌓는 것만으로는 구현할 수 없는 복잡한 인공신경망을 구현할 수 없다. 2. functional API로 만든 model¶ 1) 전결합 피드 포워드 신경망 (Fully-connected FFNN)¶ I.. 2020. 3. 10.
DL : Keras texts_to_matrix 이해하기 texts_to_matrix()는 입력된 텍스트 데이터로부터 행렬(matrix)를 만드는 도구입니다. texts_to_matrx()는 총 4개의 모드를 지원하는데 각 모드는 'binary', 'count', 'freq', 'tfidf'로 총 4개입니다. 우선 'count' 모드를 사용해봅시다. word_index를 기준으로 texts들을 matrix로 바꾼다. import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer texts = ['먹고 싶은 사과', '먹고 싶은 바나나', '길고 노란 바나나 바나나', '저는 과일이 좋아요'] t = Tokenizer() t.fit_on_texts(texts) print(t.word_in.. 2020. 3. 10.
DL : Keres 기초 Keras 훑어보기¶ 1. 전처리¶ In [1]: from tensorflow.keras.preprocessing.text import Tokenizer t = Tokenizer() fit_text = "The earth is an awesome place live" t.fit_on_texts([fit_text]) test_text = "The earth is an great place live" sequences = t.texts_to_sequences([test_text])[0] print("sequences : ",sequences) # great는 단어 집합(vocabulary)에 없으므로 출력되지 않는다. print("word_index : ",t.word_index) # 단어 집합(vocabu.. 2020. 3. 10.
ML & DL : 오류 정리 딥러닝에서 흔히 일어나는 오류들을 정리 1. Learning Rate large learning rate : overshooting = rate가 너무 크면 step이 너무커서 발산해버릴 수도 있다. small learning rate : 너무 오래걸리고 이게 최소점이 아닌데도 멈춘다. learning rate는 최소한 0.01에서 시작해야한다. 그리고 cost 함수를 출력해보고 줄일지 말지 결정한다. 2. Data 간의 Gap 만약 weight가 2개면, x1, x2의 datd 간에 gap이 크지 않을 경우, 다음과 같이 그래프를 나타내며 가운데로 향해서 z축의 값인 cost함수의 최솟값을 찾을 수 있다. 만약 x1, x2간의 gap이 큰 경우에는 x1에 영향을 주는 w1은 큰 폭으로 변하게 되고, x.. 2020. 3. 8.
ML & DL : 오류를 막는 방법 2019/10/24 - [machine_learning] - Machine-Learning & Deep-Learning 오류 Machine-Learning & Deep-Learning 오류 딥러닝에서 흔히 일어나는 오류들을 정리 1. Learning Rate 조정 !! large learning rate : overshooting = rate가 너무 크면 step이 너무커서 발산해버릴 수도 있다. small learning rate : 너무 오래걸리고 이게.. mambo-coding-note.tistory.com 위 글에서 ML & DL의 오류에 대해서 공부했다. 여기서는 이를 어떻게하면 해결할 수 있는지에 대해 적을 예정이다. 1. training set을 많이 가져야 한다. -> overfitting.. 2020. 3. 8.
DL : Deep Learning : 개요 : 학습 방법 1-1. Forward Propagation 일반적으로 입력층, 은닉층, 출력층을 순서대로 지나는 순서를 순전파라고 한다. 1-2. Backpropagation https://wikidocs.net/37406 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net 2. Loss Function 오차가 클 수록 손실 함수의 값은 크고 오차가 작을 수록 손실 함수의 값은 작아집니다. 회귀에서는 평균 제곱 오차, 분류 문제에서는 크로스 엔트로피를 주로 손실 함수로 사용합니다. 손실 함수의 값을 최소화하는 두 개의 매개변수인 가중치 W와 편향 b를 찾아가는 것이 딥 러닝의 학습 과정이므로 손실 함수의 선정은 매우 중요합니다. 1) MSE(Mean Squared Error, MSE) 오차 제곱 .. 2020. 3. 8.