achine Learning Basic - (theory)
모두를 위한 딥러닝 - 인프런 강의 를 보면서 공부한 내용을 정리합니다.
머신러닝이란?
- explicit programming --> spam filter - ? so many rule(경우의 수가 많음)
- 아서 사무엘 - 일일이 개발자가 지정하는 것이 아니라 학습을 통해 자동으로 결정
텐서플로우
data - flow graph
data = tensor : 3 dimension data
hello tensorflow
-
그래프를 빌드
-
세션 run -- tensorflow 2.0부터는 안만들어줘도 가능 -
tensorflow - session
placeholder
임시 공간 - fedd_dict로 해당 값을 입력
현재 2.0부터는 placeholder를 사용하지 않고 함수로 지정을 해서 간결하게 처리 가능
@tf.function
def adder(a,b):
return a+b
A = tf.constant(1)
B = tf.constant(2)
print(adder(A,B))
print(tf.add(A,B))
텐서 -rank shape - type
-
Rank
-
Shape
각 차원 별로 몇 개의 데이터로 구성이 되어있는지를 표현
예를 들어서 3-D의 [2,3,3]의 shape을 가지는 자료는 다음과 같은 형태를 가지게 된다.
[
[[1,1,1],[2,2,2],[3,3,3]],
[[1,1,1],[2,2,2],[3,3,3]]
]
- Datatype
constant를 만들때 dtype도 지정을 해줄 수 있다. 별도 지정이 없다면 implicit하게 tensorflow가 자동 지정
종류
- regression : predicting final exam score => 75 score
- binary classfication : pass/non-pass - > P/F
- multi-label classification : Letter grade (A,B,C,D, F) -> A/B/C/D/F
Linear Regression
train data_set
으로 학습(training
)을 진행
추세선을 학습을 통해 그리는 과정
가설을 설정하는 것이 필요!
H(x) = Wx + b
그러면 여러가지 선 중에서 가장 적합한 선은 무엇일까
Cost function - Loss function
설정한 가설과 실제 데이터와의 차이를 측정
diff = (H(x)-y)^2
- regression line과 실제 데이터의 차이는 양수 음수 둘다 나오는 것을 고려
- 제곱된 값이라 차이가 크면 클수록 cost는 더 크게 됌
이 비용함수를 최소화하는 모델이 가장 좋은 모델!
min cost(W,b)
이 최소화되는 지점을 어떻게 찾을까?
gradient descent algorithm 경사하강법
- 어떤 점에서나 시작해도 됌
- 계속 W를 바꿔서 가장 최소화되는 지점을 찾음
- 미분을 통해서 해당 cost function의 극한값을 찾으면 됌
미분을 하면 2가 계수로 내려와서 간단하게 만들어주기 위해 1/2m로 만들어줌.
주의점
cost function을 3차원으로 그려보면 다음과 같은 경우가 나올 수 있음
시작점에 따라서 비용함수를 최소화하는 지점이 달라지게 된다.
비용함수를 사용하기 전에 해당함수가 시작점에 상관없이 최종적으로 같은 지점을 향하는지를 확인할 필요가 있음
이때의 비용함수를 convex function
이라고 한다. ( 밥그릇 형태의 모양)
Multi-variable linear regression
1차 regression 함수에서 확장
비용함수도 확장
이게 3차이상으로 가다보면 Matrix
를 적용하는 것이 가시성이 좋음
이론상으로는 1차이지만 현실에서는 많은 변수가 작용하는 경우가 있기 때문에 행렬을 적용
Logistic Classification
분류에서 linear regresion이 부적합한 이유
y = 0.5x +b 라 했을 때
기준점 5 기준으로 합/불합격이 나뉜다고 데이터가 나옴
공부 시간이 100 시간인 사람이 있다고 가정
이 경우에는 출력값이 50이 되어서 1보다 엄청 크게 나온다 -> 기울기가 낮아진다.
합격인데도 불합격으로 인식
이 문제를 해결해야 함 -> logistic function 등장
Logistic
- sigmoid
Logistic Cost Function
기존에 비용함수에 logistic 함수를 넣게 되면 구불구불한 함수가 나오게 됨 -> global minimum이 여러 군데 발생 -> gradient algoorythm 적용 불가
logistic -> e 상수 사용 -> 이걸 log를 시켜준다.
cost : 실제 데이터 - 예측치 간의 차이 ->
제대로 예측했다면 cost가 0에 가까워야 한다. / 예측을 잘못하면 cost가 무한대로 가게 된다.
프로그래밍을 할 때 편하게 하기 위해서 하나의 식으로
C(H(x),y) = - ylog(H(x)) - (1-y)log(1-H(x))
- y = 1 ==> c = -log(H(x))
- y = 0 ==> c = -log(1- H(x))
이제 경사하강법으로 cost minimize 값을 찾을 수 있음.
multinomial Logistic Regression
여러개의 클래스
binarty -> combine
A or not
B or not
C or not
행렬로 표현 가능
softmax classification
각 그룹에 대한 확률로 표현이 가능 -> 어느 그룹에 속할 확률이 높을지 알 수 있음
one hot encoding -> max값을 1로 선택
Cost function
cross entropy
Y = L = 실제값
Y^ = 예측값 - 두가지 경우
예를 들어 실제값이 B인데
B로 예측을 하면 비용이 0으로 맞는 예측
A로 예측을 하면 비용이 무한대가 되어서 틀린 예측
Application
Learning rate
overshooting
한 점에서 이동하는 step - 간격
만일 step이 너무 크다면 global minimum을 찾을 수 없을수 있다.
- 0.01로 시작하고 발산이 되면 조금 작게 시도
Data preprocessing
데이터간의 차이가 큰 경우 학습이 제대로 안이루어질수도 있다.
이때는 정규화를 해주면 데이터가 응집되게 된다.
-> 성능 향상이 될 수 있다.
Overfiting
학습데이터에 너무 잘맞는 모델을 만들게 되어 학습데이터는 잘 설명하지만 새로운 데이터를 이용하는 경우 예측을 잘 못하는 경우가 발생한다.
solution
- training data 늘리기
- feature (변수) 줄이기
- Regularization : 특정 feature에 가중치를 많이 부여하지 말자
regularization strength
1 -> 완전 고려
0 -> 고려 x
Training/ Testing Data
- traing data - 학습에 사용
- validation data - learning rate , regularization strength 조정하는 데 사용
- testing data - 검증에 사용
online learning
100만개 데이터가 있다면 10만개씩 나눠서 학습.
다음 학습때 기존 학습한 결과를 포함
Author And Source
이 문제에 관하여(achine Learning Basic - (theory)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@nellholic108/Machine-Learning-Basic-theory저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)