RECORD AI
Vectorization Logistic Regression 본문
반응형
Vectorization Logistic Regression
로지스틱 회귀를 vectorization하여 경사 하강법의 반복문에서 for 구문을 하나도 쓰지 않고 구현
Forward propagation
한 스텝씩 알아보자.
1. Training샘플 예측하기
- 트래이닝샘플 예측방법
- z값 계산
- a 활성값 계산
위의 공식은 m개의 트래이닝샘플이 있을경우 첫번째,두번째,세번째 샘플을 예측하고,
m개의 트래이닝샘플이 있다면 이것을 m번까지 해야한다.
2.for 문 없이 계산하는 방법
정방향 전파(forward propagation)는 m개의 훈련 샘플에 대해 예측 값을 계산하지만
이제 for 문 없이 계산하는 방법을 사용 할 것이다.
2-1 첫번째단계
싱글 트레이닝 데이터를 수평로 쌓은 X행렬
- X가 (nx, m)차원 행렬이라는 것을 보여준다
- (nx,m)차원은 이유는 nx차원의 싱글트래이닝데이터가 m개 있기 때문이다
2-2 두번째단계
$z^{(1)}, z^{(2)}, ...,z^{(m)}을 한줄의 코드로 계산한다$
- $z^{(1)}, z^{(2)},.., z^{(m)}$ 까지 한번에 계산
- $z^{(1)}, z^{(2)},..., z^{(m)}$의 (1,m)행렬을 $w^TX$와 b로 이루어진 벡터의 합으로 표현 할 수 있다.
- b로 이루어진 것은 (1,m)벡터 또는 (1,m)행렬이며 m차원 행 벡터이다
- b로 이루어진 행 벡터를 더하면 각 요소에 b를 더하게 되어, (1,m)벡터를 얻게 된다
- $w^T$와 전체트래이닝X와의 dot연산이다
- $w^Tx^{(1)}, w^Tx^{(2)}, w^Tx^{(m)}$ m까지의 행벡터이다
- $z^{(1)}, z^{(2)}$ 각각의 정의에 일치한다
- 싱글 트레이닝 데이터 z들을 가로로 쌓은 것을 전체 트레이닝데이터 Z 라고 정의하고,
np.dot는 Numpy함수이다.
- b는 단일의 실수
브로드캐스팅
\begin{pmatrix}
b &b & \cdots & b\
\end{pmatrix}
- 이 벡터와 이 실수를 더한다면 파이썬은 실수 b를 자동으로 (1,m)행 벡터로 바꾼다
세번째단계
a(예측 값) 구하는 방법
$A = \begin{pmatrix} a^{(1)} &a^{(2)} & \cdots & a^{(m)}\ \end{pmatrix} = σ({z^{(2)}})$
- 싱글데이터 x와 z를 가로로 쌓아서 전체 데이터를 얻은 방식과 동일 하게
A또한 $a^{(1)}, a^{(2)}, a^{(m)}$를 가로로 쌓아 동시에 계산한다 - A는 각각의 싱글트래닝데이터의 로지스틱회귀 예측값을 가지는 벡터
요약
싱글트래닝데이터의 $z$와 $a$를 계산하기 위해 $m$개의 훈련 샘플을 순환하는 대신
대문자 $Z$ 의 한줄 코드로 모든 $z$를 동시에 계산하고,
적절한 $σ$(시그모이드함수)의 구현으로 한줄의 코드로 모든 $a$를 동시에 계산 할 수 있다.
($m$개의 훈련샘플을 동시에 정방향 전파하는 벡터화를 구현 할 수 있다.)
참조 1
반응형
'Deep Learning > basic Neural Networks' 카테고리의 다른 글
Neural Network Representation (0) | 2022.12.26 |
---|---|
Neural Network Overview (0) | 2022.12.26 |
Logistic Regression Gradient descent (0) | 2022.12.22 |
more examples of Vectorization (0) | 2022.12.22 |
Vectorization (벡터화) (0) | 2022.12.22 |
Comments