목록강의정리 (56)
코딩공작소
보호되어 있는 글입니다.
RNN ( Recurrent Neural Network ) - Neural net중에 가장 활용도가 높다 Sequence data ? : 기존의 데이터를 알고 있어야 전체적인 정보를 알 수 있다. 기존의 NN/CNN은 입력 X가 있을때 출력 Y를 알아내는것. 이전의 결과가 현재의 결과에도 영향을 미쳐야 한다. hidden layer는 전 단계의 값들에 영향을 받는다.
CNN ( Convolutional Neural Networks ) Start with an image ( 넓이 x 높이 x 깊이 )1 ) 작은 이미지의 일부분에 집중한다. (filter) --> One number를 뽑아낸다.2 ) 같은 filter(w) 값을 가진 다른 부분지역들을 보면서 one number를 가져온다 --> How many numbers can we get ? 1. 그림이 급격하게 작아짐을 방지2. 모서리부분을 어떤 형태로는 네트워크에 알려주기 위함 padding 을 이용해서 입력과 같은 사이즈의 out이 나오게함. (7x7 --> 7x7) ** Max pooling and the others Pooling layer --> sampling ! 사이즈를 작게 만드는것
Fast forward하나의 네트워크를 뽑아서 2단 앞으로 연결해준다. Split & merge Recurrent network 네트워크들을 알아서 조합해서 좋은 모델을 만들어 내는것.네고처럼 넷트웍 모듈을 마음껏 사용하는것. 한단과 간단한 단으로 했을때.초기화를 해주었을 때깊어질수록 overfitting --> DropoutAdam 최적화 방법도 있음.Batch 초기화방법 Optimizers
** 초기값을 잘 정해주어야한다. RBM을 통해서 초기화를 시켜준다. 두개씩의 네트워크를 이용해 초기화값을 잘 정해준다. (RBM) 더 간단한 초기화방법이 있다. 그 이후, fan in 과 fan out의 수에 따라서 초기값을 정해준다. (Xavier , MSRA, LSUV ...) Overfitting : 특정한 training set에만 적용되는 딥러닝 (응용력이 없음 실전에 사용불가) : More training date . : Regularization NN에서는 다른 하나가 더있다. Drouput : 뉴럴 네크워트에서 Overfitting을 예방하기 위한 방법.랜덤하게 어떤 Neurons들을 제거하는 것. 한단을 더 만들어서 하나의 레이어를 만들고 랜덤하게 dropout시킨다.학습할때만 drop..
주의해야 할점은 W의 크기를 잘 정해줘야함 2단으로 바뀐 코드. TensorBoard : 값들의 그림을 바로 그려줄수가 있다. (그래프)
Sigmoid함수 . ( S ) 3개의 네트워크를 통해서 XOR를 해결할 수 있다. 하나의 NN 다른 조합의 W,b의 값이 존재 할까 ? How can we learn W1, W2 b1, b2 from training data !? Backpropagation w,x,b가 f에 미치는 영향을 알아야 한다. w,x,b의 각각의 미분값이 f에 영향을 미친다. ** Back propagation ( chain rule ) a가 f에 미치는 영향 ( f = a + b ) 궁극적으로 구하고 싶은 값은 x가 g에 미치는 영향을 알아야한다.g = x * y --> tensorflow에서는 각각의 연산과 과정들을 그래프로 만든다 : 각각을 미분(back propagation)을 위해
** shape 구하는법 처음의 ' [ '의 갯수를 센다 -> ' [ '의 갯수만큼의 ( ? , ? ) 이다. 원소의 개수를 센다 -> ( ? , 개수 )가장안의 []가 몇개인지를 센다 -> ( 개수 , ㅇㅇ ) ex) matirx1 = [[1,2] , [3,4]] --> [[가 2개 이므로 ( ? , ? ) 꼴이고 2개의 원소이므로 ( ? , 2 ) 이며 2개 있으므로 (2,2) matrix2 = [[1],[2]] --> [[2개 , 원소 1개, 총개수 2개 --> (2,1) ==> 매트릭스 곱을 하려면 ( a , b ) X ( c , d ) --> b와 c가 같아야 한다. 결과는 ( a , d ) matmul 와 * 의 결과는 다르다. axis는 가장 밖이 0 안으로갈수록 수가 높아지며 가장 안쪽 a..
** 성능 평가 : training set --> 학습 : training set을 통해 결과를 예측.==> 이런 경우에는 아주 나쁜 방법이다. ( 100%의 정확도가 나올수 있다 ) 좋은 방법이란 ? : date를 training과 test set으로 나누어서 훈련시키고 결과를 예측한다. training set -> trainValidation set -> Learning rate, lamda(regularaztion) Training set으로 모델을 학습시킨다. 그리고 모델에게 test를 해준다. * Non normalized input --> 결과값이 제대로 나오지 않을 수 도 있다. : 정규화를 시켜주면 된다. ( MinMaxScaler () )를 통해 scale을 해준다. : 데이타가 굉장히 ..
* Large learning rate - overshooting : step이 너무 큰경우에는 제대로 된 학습이 이루어지고 cost를 찾을수 없게 된다. * Small learning rate : step이 너무 작으면 너무 오래걸리거나 local minimum이 될 수도 있다. --> Try several learning rates !! * Data (X) preprocessing for gradient descent : learning rate를 잘했음에도 cost를 제대로 처리하지 못하는 경우 * Overfitting : 학습데이터에만 맞춰져있는 모델일 수 있다. 실제로 적용하기는 어렵다.model이 더욱 일반적인 상황이다.model2는 너무 특정한 training set에만 학습된 결과일 수 있..