머신러닝 코드를 분석하면서 의미를 따져보고자 한다. ( 이해하면서 외우기 편하게끔 만들기 위함 )
먼저 정규화 메소드를 정의하여 각 값이 0~1사이에 있게끔 만들어 준다.

이는 이상값의 존재를 없애줄 뿐만 아니라 오버슈팅 등을 막아주는 역할을 하기도 한다.
머신러닝 코드 분석------
1) 변수 정의

먼저 각 데이터를 뽑아, x_data 에 독립변수를 넣고 y_data 에 종속 변수를 저장해준다.
placeholder를 통해, 각 데이터를 넣을 공간을 정립 ( 실제 training 을 돌릴때는 이 변수 안에 있는 데이터 값을 분석한다.)
임의의 W, B 값을 정의해준다. ( random normal 로 하는 이유는 트레이닝을 시킬 경우, 알아서 찾아 들어가기 때문에 굳이 정해주지 않은 것 같다. // 하지만 대학원생이 말하길, 실제로는 아무 값이나 넣으면 안된다고 한다. 학습량을 줄이기 위해서인듯 하다... 하지만 아직 그부분까진 공부하지 않았다.)
2) 식정의

가장 중요한 부분이다.
먼저, hypothesis 에 우리가 구하고자 하는 식을 정의한다.
그리고 cost를 정의한다. , cost는 함수와 특정 데이터와의 거리값을 구하는 것이기 며, 음수가 나와선 안되기 때문에 square 함수를 써준다. cost는 알고리즘이 실행되기 위해서는 가장 근본적으로 존재해야 하는 정의식중 하나이다.
+reduce mean 은 줄여서 평균을 구한다, 즉 스퀘어 값들을 모두 더하고 나눠 평균을 구한다는 뜻이다.
마지막으로 learning rate 를 설정한 이후 train 을 진행하여 준다.
하지만 짚고 넘어갈 것이 있다. 그것은 Optimizer 를 어떻게 정의하는가 이다.
Optimizer 뒤에 minimize(cost) 매서드를 붙이는 순간, 이는 단지 gradientDescentOptimizer를 뜻하는 것이 아닌 학습을 시키기 위한 training method 가 된다.

이렇게 말이다.
이 두 매소드간의 차이는 Session 에서 발생한다.
3) Session

이는 첫번째 ( minimize(cost) 가 Optimizer에서 실행되지 않은 메서드 ) 코드이다.
먼저 세션 안에서 각 변수를 초기화 시켜 준 후, 100번의 학습을 진행한다.
100번의 학습은 다음과 같다.
cost_val, hypo_val 에 Session 에서 가지는 cost, hypothesis 의 값을 제공해 주며, _ 에 train 이 제공해 주는 값을 넣는다.
앞에서 설명했 던 것들을 종합하여 보면, train 에서 정의했던 minimize(cost)를 실행한다는 것이다.
즉, 중심 학습 코드는 train 이 진행하였다는 것을 알 수 있다.
하지만, 두번째 코드는 약간 다르다.

물론 이 코드는 linear Regression을 위한 코드가 아닌 mnist 를 위한 코드, 즉 텍스트를 읽기 위한 코드이지만, 머신러닝 특성상 일맥상통하다.
27번째 코드를 보면, optimizer가 저곳에 있는 것을 볼 수 있다.
여기서의 optimizer 는 minimize(cost)를 실행한 코드로, 해당 학습률로 minimize(cost)를 진행한다는 뜻이다.
4) 정리
이 두가지를 비교해 보면 간단한 머신러닝 플로우를 예측할 수있다.
1. 데이터 받기
2.데이터가 들어갈 슬롯 (빈칸) 정의
3. WX + B 식 정의
4. cost 함수 정의 ( Hypothesis - WX+B 이용 )
5. tensorflow.train.GradientDecentOptimizer(학습률)
6. minimize(cost)
7. Session()
이다.
ps /// 추가 알아놓으면 좋을 코드, 개념들
axis = 축 ex) rank 4 를 가진 array 는 axis를 0,1,2,3 까지 표시할 수 있다.
ndim = rank 크기
shape = 해당 matrix 의 모습 / 4행 3열의 matrix 이면 (4,3) return
session.run 을 통해 실행시킬 수도 있지만, 개별 코드를 실행시키고자 할 때, .eval() 을 붙여준다.
constant([ ... ]) << 행렬 상수 생성
'AI' 카테고리의 다른 글
딥러닝 -02 CNN 학습 (0) | 2020.03.31 |
---|---|
딥러닝 01 - 기초 정리 XOR 문제 해결 과정 (3) | 2020.03.22 |
머신러닝 스터디 -03 Softmax Classification (0) | 2020.03.15 |
머신러닝 스터디 -02 Multi-Variable linear regression (1) | 2020.03.14 |
머신러닝 스터디 -01 Linear Regression (1) | 2020.03.14 |
댓글