Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

코딩로그

신경망과 딥러닝 - 파이썬과 벡터화 본문

코딩로그/Andrew Ng's ML class

신경망과 딥러닝 - 파이썬과 벡터화

hyeonnny 2019. 12. 24. 01:45
  • 벡터화
    • 벡터화란 코드를 작성하는 데 있어 for 문을 없애는 것입니다.
    • z = wt+b라는 식이 있을때 벡터화에서는 z = np.dot(w,t)+b 로 표현합니다.
    • SIMD(Single Instruction Multiple Data)는 병렬 프로세서의 한 종류로, 하나의 명령어로 여러 개의 값을 동시에 계산하는 방식입니다. 이는 벡터화 연산을 가능하게 합니다. 따라서 for문으로 하나의 값을 연산하는 것 보다 벡터로 만들어서 한번에 연산하는 것이 더 효율적입니다
  • 로지스틱 회귀의 벡터화
    • 아래의 식은 for문을 이용해 i의 값을 변화시키며 계산해야 합니다.
      • z(i)=WTx(i)+b
      • a(i) = sig(z(i))
    • 하지만 계산의 효율정을 증가시키기 위해 벡터를 이용하면 다음과 같이 계산할 수 있습니다.
      • Z = np.dot(np.transpose(W),X)+b
    • 위의 코드에서 (1,m)크리의 행렬과 상수 b를 더하기에 오류가 날 것 같지만, 파이썬이 자동적으로 상수를 (1,m)크기의 행렬로 브로드캐스팅 해주기에 오류가 발생하지 않습니다.
    • 브로드 캐스팅은 곧 배울 예정이니 아직 모르시는 분도 걱정하지 않으셔도 괜찮습니다.

 

 

  • 로지스틱 회귀의 경사 계산을 벡터화 히기
    • Logistic Regression Gradient Descent  강의에서  dz(i)=a(i)y(i)  를 통해 계산할 수 있음을 배웠습니다.
    • for문을 사용한다면 아래와 같이 계산해야 합니다.

 

계산 속도의 향상을 위해 벡터를 사용한다면 아래와 같이 계산할 수 있습니다.

 

 

 

  • 로지스틱 회귀의 비용함수 설명
  • 앞서 로지스틱 회귀에서 배운 손실함수를 상기해봅시다.
    • y값이 1 이 될 확률 :  P(y=1x)=y^ 
    • y값이 0 이 된 확률 :  P(y=0x)=1y^ 
  • 위 두가지 경우를 하나의 수식으로 나타내면 아래와 같습니다.
    •  P(yx)=y^y(1y^)(1y) 
    • 만약에 y = 1 일 경우,  P(yx)=y^1(1y^)0=y^ 
    • 만약에 y = 0 일 경우,  P(yx)=y^0(1y^)1=1y^ 
  • 또한, 로그함수의 단조적인 성격 때문에 위 식은 아래와 동일 합니다.
    •  logP(yx)=log(y^y(1y^)(1y))=ylogy^+(1y)log(1y^) 
  • 우리의 목적은 확률( logP(yx) )을 최대화 시키는 것이기 때문에 이와 등치인 -1 을 곱한 확률 ( logP(yx)  )를 최소화를 목적으로 손실함수를 정의 합니다.
  • 따라서, 훈련 샘플 하나의 손실함수는 아래와 같이 정의 됩니다. 
    •  L(y^,y)=logP(yx)=(y^y(1y^)(1y)) 
  • 비용함수는 m개 훈련 세트 중, 각 샘플 ( x(i) )이 주어졌을 때,  샘플에 해당하는 라벨( y(i) )값이 1 혹은 0 이 될 확률의 곱으로 구할 수 있습니다.
    •  P(labels in training set)=i=1mP(y(i)x(i)) 
  • 양변에 로그를 취하고, 손실함수 부분을 치환 해주면, 위의 식은 아래와 같습니다.
    •  logP(labels in training set)=logi=1mP(y(i)x(i)) =i=1mL(y^(i),y(i)) 
  • 따라서 비용함수는 손실함수들의 평균을 최소화 하는 것으로 정의하고 아래와 같습니다.
    •   J(w,b)=logP(labels in training set)=m1i=1mL(y^(i),y(i))