CS/AI | CV (43) 썸네일형 리스트형 로지스틱 회귀의 벡터화 | Vectorizing Logistic Regression @벡터화를 통해 보다 효율적으로 계산하는 법 m개의 훈련 샘플이 있을 때 처음 샘플을 예측하려면 위를 계산해야 함 z를 계산하고, 활성값, y의 예측값도 계산해야 함 두 번째 훈련 샘플을 예측하려면 위 값을 계산해야 함 … m개의 훈련 샘플이 있다면 이것을 m번 해야 함 @정방향 전파 단계 실행 위해(m개의 훈련 샘플에 대해 이 예측값(a)를 계산하는데) for문 없이 계산하는 법 X는 훈련 입력을 열로 쌓은 행렬 @z^(1), z^(2), z^(3) 등을 한 단계 혹은 한 줄의 코드로 계산하는 법 행 백터이기도 한 (1, m) 행렬 만들기 여기에 z^(1), z^(2), …, z^(m)까지 동시에 계산할 것 이것은 w^T*X와 b로 이루어진 벡터의 합으로 표현될 수 있음 b로 이루어진 것은 (1, m).. 벡터화 예제 | Vectorization Examples @신경망이나 로지스틱 회귀를 프로그래밍할 때 기억해야 할 것 -컴퓨터의 계산 효율성을 위해 가능한 한 for문을 쓰지 않는 것 for문을 쓰지 않는 게 항상 가능한 건 아니지만 필요한 값을 계산할 때 내장 함수나 다른 방법을 쓸 수 있다면 for문을 쓰는 것 보다 대부분 빠를 것 벡터 v가 메모리 상에 미리 있다고 가정, 이 벡터 v의 모든 원소에 지수 연산을 하고 싶다고 할 때 왼쪽은 벡터화되지 않은 구현, 오른쪽은 벡터화된 구현 벡터화되지 않은 구현에서는 먼저 u를 0인 벡터로 초기화하고 그 후에는 원소를 하나씩 계산하는 for문이 있음 하지만 파이썬 Numpy에는 이 벡터들을 하나의 호출로 계산해주는 내장 함수가 많음 벡터화된 구현에서는 간단히 u를 np.exp(v)로 지정해주면 됨 입력 벡터인 v.. 벡터화 | Vectorization @벡터화(Vectorization) -쉽게 말해, 코드에서 for문을 없애는 일종의 예술 실제 딥러닝을 할 때 큰 데이터 세트를 학습시킬 때가 많음 따라서 코드가 빠르게 실행되는 게 중요함 그렇지 않으면 큰 데이터 세트를 학습시킬 때 코드 실행 시간이 길어지고, 결과를 내기까지 오래 기다려야 함 딥러닝 시대에서 벡터화할 수 있는 능력은 중요한 기술이 되었음 벡터화 되지 않은 구현일 때에는 w^T*x를 계산하기 위해 위와 같이 구현해야 했음 ->느림 그에 반해, 벡터화된 구현은 w^T*x를 직접 계산함 파이썬이나 Numpy에서 사용하는 명령어는 np.dot(w,x) 위 방법(벡터화된 구현)이 훨씬 빠름 실습코드) import numpy as np import time # Time how long the o.. m개 샘플의 경사하강법 | Gradient Descent on m Examples w, b에 대한 비용 함수(Cost Function)는 평균값 1/m i=1부터 m까지 샘플 y에 대한 출력값 a^(i)의 손실의 합을 곱한 것 비용 함수는 각 손실의 평균이라 할 수 있음 a^(i)는 i번째 샘플의 예측값을 나타내고 sigma(z^(i))와 같음 이는 다시 sigma(w^T*x^(i)+b)와 같음 w_1에 대한 전체 비용 함수의 도함수도 w_1에 대한 각 손실 항 도함수의 평균 단일 훈련 샘플의 도함수를 구해 그 평균을 구하면 경사하강법에 사용할 전체적인 경사 구할 수 있음 @경사하강법을 사용한 로지스틱 회귀 구현 방법 초기화 해줌 각 훈련 샘플에 대한 도함수 계산하고 이를 더함 특성이 두 개(n=2)라고 가정한 것 평균을 계산하는 것이기 때문에 m으로 나눠야 함 dw_1, dw_2, .. 로지스틱 회귀 경사하강법 | Logistic Regression Gradient Descent L(a, y) 에서의 a는 로지스틱 회귀의 출력값, y는 참 값 레이블 @로지스틱 회귀의 목적 -매개변수 w와 b를 변경해 이 손실을 줄이는 것 @수식 참고) https://youtu.be/z_xiwjEdAC4 계산 그래프 | Computation Graph @J(a, b, c) = 3(a+bc)의 계산 그래프 만드는 과정 1. u = bc 2. v = a+u 3. J = 3v -계산 그래프는 J같은 특정한 출력값 변수를 최적화(Optimize)하고 싶을 때 유용함 -로지스틱 회귀의 경우 J는 당연히 최적화할 비용함수 @미분의 연쇄법칙(Chain rule) -합성함수의 도함수에 대한 공식 -합성함수의 도함수는 합성함수를 구성하는 함수의 미분을 곱함으로써 구할 수 있음 -입력변수 a를 통해 출력변수 J까지 도달 하기 위해 a -> v -> J의 프로세스로 진행됨 (만약 a가 v에 영향 미치고 그것이 J에 영향 미친다면 a를 밀었을 때 J의 변화량은 a를 밀었을 때 v의 변화량과 v를 밀었을 때 J의 변화량의 곱) 변수 a만 보게 되면, J = J(u(a))라는.. 경사하강법 | Gradient Descent 매개변수 w와 b에 대한 함수는 평균으로 정의할 수 있으므로 1/m에 손실 함수의 합 곱함 손실 함수는 각 훈련 샘플의 y의 예측값이 얼마나 좋은지를 각 훈련 샘플에 대한 참값 y hat^(i)와 비교해 측정 비용 함수는 매개변수 w와 b가 훈련 세트를 잘 예측하는지 측정 매개변수 w와 b를 알아내기 위해서는 비용 함수 J(w, b)를 가장 작게 만드는 w와 b를 찾아야 함 위 그래프에서 두 가로축은 매개변수 w와 b의 공간 나타냄 (w와 b가 각각 하나의 실수라고 가정) 비용함수 J(w, b)는 가로축 w, b 위의 곡면이고, 곡면의 높이는 그 점의 J(w, b)값 나타냄 위 특정 비용 함수 J는 활처럼 볼록한(convex) 함수 볼록하지 않은 함수는 지역 최적값이 여러 개 비용 함수는 볼록한 형태여야.. 로지스틱 회귀 비용함수 | Logistic Regression Cost Function 목표는 실제값(y)에 가까운 예측값(y hat) 구하는 것 @손실 함수(Loss Fuction) -출력된 y의 예측값과 참값 y 사이에 오차가 얼마나 큰지 측정 -제곱 오차는 로지스틱 회귀에서는 경사 하강법을 적용하지 못하게 하기 때문에 제곱 오차와 비슷한 역할을 하지만 최적화 문제가 볼록해지는 다른 손실 함수 정의 -> 최적화 용이 -손실 함수는 훈련 샘플 하나에 관해 정의되기 때문에 그 하나가 얼마나 잘 예측되었는지 측정해줌 -같은 모델을 대상으로 하더라도 중요하게 생각하는 데이터의 특성에 따라 변형됨 ->모델의 성능 올리기 위해 손실 함수 임의 변경 가능 @로지스틱 회귀에서 사용하는 손실 함수 @비용 함수(Cost Fuction) -훈련 세트 전체에 대해 얼마나 잘 추측되었는지 측정해주는 함수 -모.. PREV 1 2 3 4 5 6 NEXT