TensorFlow - 딥러닝의 기본 개념
- 우리 대신 복잡한 문제를 풀수 있는 기계를 만들자.
- 뇌에 대한 공부
- 뇌가 매우 복잡하게 연결되어 있다.
- 뉴런(유닛)이 단순하게 동작된다.
- input 을 전해주는 길이 (w) 에 따라 바이어스 라는 값을 더한 값이 어떤 값이상이 되면 활성화된다.
- Activation Function
- 뉴런을 본따 만든 모델
- 신호 x, 어떤 값w 을 곱한뒤 더 다한다음, bios 라는 값을 더하는데 이 값이 어떤 값(?)보다 크면 1, 적으면 0
- Logistic regresion 모델과 동일함.
- False Promises (Dr. Frank)
- "It expects will be able to walk, talk, see, write, reproduce itself."
- AND / OR 에 대해서도 y 를 예측 할 수 있다.
- XOR 에 대해서는 y 를 예측하기 어렵다는 문제가 존재.
- Marvin Minsky 가 XOR 에 대해서는 할수 없다는 것을 수학적으로 증명해냄.
- 대신 MLP 라는 것이 필요하다. (이 모델을 여러개를 합치면 가능하다)
- 근데 각 모델의 w, b 에 대한 학습을 시킬 수가 없다.
- "No one on earth had found a viable way to train."
- Backpropagation ( 1974, 1982 by Paul, 1985 by Hinton )
- 알고리즘
- w, b 의 값을 forward 에서 찾지 말고 backward 에서 찾으면 되겠다.
- 더 복잡한 것의 예측이 가능해짐
- Convolutional Neural Networks (Lecun 1980 - 라쿤)
- 그림의 형태에 따라 활성화되는 뉴런이 다르다는 것을 발견해냄.
- 그림 일부 일부를 담당하는 신경망이 있고 이게 나중에 조합된다.
- 그림을 한번에 학습시키는 것이 아닌, 레이어로 나눠서 부분부분을 보낸 다음 나중에 합치는 네트워크
- 알파고도 이것을 사용하고 있다.
- 84년 ~ 94년 자동주행 차량 개발.
- 문제점
- 단순 레이어에서는 동작하는데, 복잡한 레이어에서는 (10여개 이상) 학습이 힘듬.
- 오류를 뒤로 보내어 w,b 를 구하는 알고리즘인데 이것이 복잡한 레이어에서는 뒤로 갈 수록 의미가 희미해져 w, b 에 대한 신빙성이 떨어짐.
- 그림의 형태에 따라 활성화되는 뉴런이 다르다는 것을 발견해냄.
- CIFAR
- 캐나다에서 만든 단체. 비영리 단체.
- 2006, 2007년도까지 어려운 시기였음
- Breakthrough (2006, 2007 by Hinton and Bengio)
- input 을 잘 준다면 잘 학습할 수 있다. (2006)
- w가 똑똑한 방법으로 초기화가 된다면, 많은 레이어가 있어도 훌륭하게 학습이 가능하다.
- 작은 수단보다 복잡한 문제를 해결하는데 있어서 효율적.
- 뉴런 네트워크를 Deep Nets, Deep Learning 으로 이름을 바꿈.
- input 을 잘 준다면 잘 학습할 수 있다. (2006)
- ImageNet
- 이미지를 주고 컴퓨터가 맞출 수 있는지?
- 2010 년 : 26% -> 2012 년 : 15% 로 오류 발생률이 떨어짐.
- 2015 년 : 4% (스탠포드 학생 5%)
- 한걸음 더 나아가서 그림에 대한 설명도 가능하게 됨
- Deep API Learning
- 말만 하면 어떤 API 를 사용해야 하는지에 대해 알려줌. (65 % 의 정확도)
- 왜 이전에 잘 안됬던 걸까.
- 활용
- 유투브 자막
- 페이스북 피드
- 구글 검색 엔진 - 클릭할만한.
- NetFlex - 추천시스템
- 각종 예측
TensorFlow 사용법
- 메트릭스 곱은 shape 의 앞부분이 동일해야함.
- Shape 2,
2 와 2,1 의 메트릭스 곱의 결과 shape은 2,1 임. - axis : 축
- Broadcating
- 기존 메트릭스 합은 shape 이 동일해야함.
- 그런데 shape 이 다를경우?
- Broadcating 을 이용하여 계산을 할 수 있도록 함.
- Rank을 맞춘다.
- 3. 일 경우 [3., 3.] 으로 맞춰줘서 계산함.
- Reduce_mean
- 평균을 구한다.
- axis 는 축으로 이해.
- Argmax
- 가장 큰놈의 "위치"를 찾는것, reduce_min 과 인자값은 동일하다.
- Reshape @@@@
- shape 를 변경하고 싶다.
- -1 이란 알아서...
- rank 도 바꿀 수 있다.
- shape 를 변경하고 싶다.
- Reshape (squeeze, expand)
- squeeze, expand_dims 의 함수를 통해 shape 를 변경할 수 있다.
- One hot
- 자동으로 reshape 도 되는데, reshape 가 싫다면 reshape 로 shape 원상복귀 시킨다
- Casting
- 변수 casting
- Stack
- Ones and Zeros like
- shape 내의 값을 1 혹은 0로 모두 바꾼다.
- Zip
- 반복문과 같이 사용.
- 복수의 변수를 지정할 때 사용.
'TensorFlow' 카테고리의 다른 글
TensorFlow - ReLU (0) | 2018.04.20 |
---|---|
TensorFlow - XOR 문제 딥 러닝으로 풀기. (0) | 2018.03.26 |
TensorFlow - Softmax regression (0) | 2018.03.25 |
TensorFlow - Logistic regression (0) | 2018.03.25 |
TensorFlow - Hypothesis, CostFunction (0) | 2018.03.25 |