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 으로 이름을 바꿈.

  • 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 도 바꿀 수 있다.
  • 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

+ Recent posts