본문 바로가기

머신러닝 읽어주는 남자

(31)
[오직 컨셉] Word Embedding One hot representation기본 개념 하나의 사물(단어)를 하나 element만 1 나마지는 0인 벡터로 표현하는 방식 예시전세계의 과일이 3개 밖에 없다고 했을 때 사과, 배, 바나나벡터 길이 = 3사과 = [1, 0, 0]배 = [0,1,0]바나나 = [0,0,1] 단점사물이 늘어날 수록 벡터 길이도 같이 늘어나서 용량을 많이 먹는다벡터에 아무런 의미가 들어가 있지 않다. Distributed Representaion기본개념one hot은 하나의 element 만으로 표시 되었다면,이것은 벡터내의 여러 element의 조합으로 나타내는 것 예시첫번때 element = 평균 당도두번째 elemet = 둥글기사과 = [0.6, 0.9]배 = [0.7, 0.9]바나나 = [0.9, 0.1] 장..
[오직 컨셉]RNN, LSTM, GRU, Seq2Seq RNN 기본 용어hidden state = 출력, 매시간 마다 출력되는 값 기본개념연속적인 시간으로 고려하기 위해 만든 모델현재의 hidden state( = output)를 출력하기 전에 현재의 입력만 보는게 아니라 직전(t-1)의 hidden state도 고려함.직전의 hidden state와 현재의 입력값을 잘 버무려서 hidden state로 넘겨줌.그 잘 버무려주는 웨이트를 학습하면 된다. 쉬운 수식(현재 입력) * w1+ (직전 hidden) * w2+ bias ==> activation func ==> 현재 hidden state 특이점웨이트는 기본적으로 타임 step 별로 달라지는게 아니라 늘 동일하다. 타임 step별로 weight를 따로 학습을 할 경우 순서에 빈감해질수도 있다. 시작점..
[오직 컨셉]Neural network training 성능 향상 기법 1. initailize파라미터 학습도 중요하지만 초기화도 생각보다 중요하다.초기화를 잘못하면 학습이 시작조차 되지 않는다. 특히 deep할때는 이게 중요하다.하다보면 cost가 nan으로 별이유 없이 가버릴때 아래 방법을 쓰면 효과적이다. (1) Xavier initialization (Glorot) 의미: 뉴런에 들어오는 입력이 많아지면 자연스레 출력도 커지게 된다. 이런식으로 계속 커지다간 발산 크리를 먹을 수 있으니 입력 숫자 만큼 작게 초기화를 해보자 초기화 식유니폼: [-√(6/(fan_in+fan_out )),√(6/(fan_in+fan_out ))]가우시안: N(0,√(1/(fan_in ))) (2) HE initialization의미: Xavier와 같은 의미지만 Relu..
[오직 컨셉]CNN(convolutional neural network) 기본 FFNN(feed forward neural network)특정 위치에 assign된 뉴런이 고정됨. 데이터의 위치, 색, 포즈 등에 민감. idea!--> 일정사이즈의 윈도우를 데이터 모든 곳이 찾아보면 해결되지 않을까?--> 만약에 윈도우에 딱 안 들어 왔을 경우에 여러 윈도우를 봐야하지 않을까?(여러 layer를 쌓아서 Receptive field를 높임--> 윈도우로 모든 곳을 찾을 때 웨이트를 변환하지 말고 특정 feature를 뽑는 고정웨이트를 써보자(kernel)--> 위와 같은 특정 feature를 찾는 웨이트들(kernel)을 기존에 사람이 지정해야하는데 알아서 학습하면 안되나?? CNN 탄생1. Convolution layerwindow를 stride시켜주면서 kernel를 통과시..
[Tensorflow 101 - 2] 기본 Neural Network Classifier(Feed Forward NN) 텐서플로우로 아주 간단한 classifier를 만들어봅시다. 흔한 예제인 스팸필터를 만든다고 생각해봅니다. 광고라는 단어가 있으면 1 없으면 0 상관 없는 단어인 김치라는 단어가 있으면 1, 없으면0 전화번호가 저장되어 있으면 1, 없으면 0이라고 해봅시다. [1,1, 1]은 광고라는 단어도 있고, 김치라는 단어도 있고, 전화번호도 저장되어 있는 경우입니다. 상식적으론 데이터 [1,0,0], [1,1,0] => 스팸 [1,0]나머지 데이터 => no 스팸 [0,1] 일겁니다. 이걸 구별하는 코드를 만들어 봅시다. (트레이닝 데이터와 테스트 데이터와 동일하므로 좋은 예는 아니겠지만) import tensorflow as tf import numpy as np #트레이닝 데이터 만들기 x_data = np...
[Tensorflow 101 - 1] Linear regression Linear regression은 hypothesis 함수를 이용하여 데이터에 맞는 함수의 파라미터를 학습하는 알고리즘입니다. (1,3) (2,5) (3,7) 라는 데이터를 데이터를 제일 잘 표현하는 y = ax+b라는 hypothesis(가설) 함수의 variable a&b를 학습하게 된다. Hypothesis라고 부르는 이유는 이러한 1차원 함수가 저 데이터를 나타낼 수 있다고 가정하기 때문입니다. improt tensorflow as tf # 트레이닝 데이터 정의 x_data = [1,2,3] y_data = [3,5,7] # 트레이닝 데이터를 넣을 placeholder를 정의, placeholder는 사이즈를 지정할 필요 없다. x = tf.placeholder(tf.float32, name = ..
[Tensorflow 101 - 인트로] 텐서플로우 시작을 위한 기초 및 기본상식 이번 글은 이미 머신러닝은 안다는 기준에서 텐서플로우(Tensorflow)만을 설명하려고 합니다. 이번에는 텐서프로우를 할려면 꼭 알아야 하는 개념과 용어를 설명하려고 합니다. 1. 텐서 (Tensor) 스칼라, 벡터, 메트릭스 모든 것을 포괄하는 모든 정보를 의미합니다. 텐서는 중요한 개념인 Rank와 shape 있습니다. Rank는 바로 텐서의 Dimension이라고 생각하면 됩니다. Rank = 0 이면 스칼라 7 (shape: []) Rank = 1 이면 벡터 [5, 7, 8] (shape: [3]) Rank = 2이면 행렬 [ [1,2,3], [4,5,6], [7,8,9]] (shape: [3,3]) Rank > 2이면 그냥 다차원 텐서입니다. ex) [ [ [1,2,3],[4,5,6] ], [..

반응형