(210714) 딥러닝 - 퍼셉트론, 신경망
다층 퍼셉트론 분류기 ( MLPClassifier ) - LBFGS 또는 확률적 경사하강법을 사용하여 로그 손실 함수를 최적화 함
* 희귀식은 출력값이 1개이지만 분류는 분류 기법에 따라 출력 값의 개수가 달라질 수 있다.
ex)이진의 경우 출력값은 2개
* 가중치 매개변수 = weight
분류일 경우
- 확률의 합은 1 그중에 높은 확률로 예측을 할 수 있고 정답을 비교하면 됨
- SoftMax를 많이 사용 함.
pd.get_dummies() : 결측치를 제외하고 0과 1로 구성된 더비값을 만든다.
- 한개의 컬럼이 두개의 컬럼으로 만들어진다
ex) gender -> male, female
오버핏을 줄이는 방법 : 데이터 늘리기,regularization L1,L2
활성화 함수
- 들어온 값을 return해서 활성화 시키는 함수
- 비선형적이어야 함 이유는 은닉층에서 공간을 왜곡하기 때문이다.
- 임계값을 경계로 출력이 바뀌는데 이런 함수를 계단 함수 라고한다.
연립 일차 방정식
내적을 할 땐 첫번째 행렬의 뒤에있는 숫자와 뒤에있는 숫자의 앞자리가 같아야함
2*3 ! 3*2 = 2*2 행렬이 만들어짐
2*3 2*3
x1*w1 + x2*w4 = y1
x1*w2 + x2*w5 = y1
x1*w3 + x2*w6 = y1
SoftMax
- 값이 x자로 공급 -> 나(?)/지수연산(전체)
- 마지막출력층 안에서 자기한테 도착한 값을 뉴런에도 보내게 되는 효과를 갖고있다.
파라미터
머신러닝 = 학습대상
선형회귀 = 기울기와 절편
뉴런 = 가중치와 바이어스
X <- 담겨져있는 데이터 샘플
batch_size를 10으로 하면 위에 있는 X.shape을 해서 나온 데이터 샘플들을 10으로 나눈다 --> 470/10 = 47
epoch가 100번 돌면 너무 오래걸리니까가 아니라 470 * 100개의 원본 데이터를 그대로 보내는 것보다 중간중간 값을 수정해서 더 정확한 결과를 뽑아내기 위해(?) batch_size를 설정해서 47개의 데이터씩 100번 보내는 것이 더 정확하고
해서 총 100 * 47 = 470번을 돌게 되는 것 같다.
= 470개의 데이터 샘플 중 10번을 랜덤으로 쪼갠 것을 epochs 만큼 (100) 연산 하는 것
분류일 때
교차 엔트로피 오차(cross entropy error)
- 엔트로피란 불확실성을 나타내는 지표로, 엔트로피가 높다는 것은 정보가 많고 확률이 낮다는 것을 의미한다.
가중치 매개변수의 손실함수의 미분
- 기울기가 양수면 가중치와 편향을 점점 줄여나가야하고
- 기울기가 음수면 점점 양의 방향으로 양수로 올려야 함.