본문 바로가기
ETC

[머신러닝 앤드류응] (Week2) 5. 매트랩 튜토리얼 (6) Vectorization

by bigpicture 2021. 5. 1.
반응형

앤드류 응 교수님의 코세라 머신러닝 강의를 요약하는 글입니다. Week2 의 상세 목차는 아래와 같습니다.

Week2 목차

1. Environment Setup Instructions (환경 설정)
2. Multivariate Linear Regression (다변량 선형 회귀)
3. Computing Parameters Analytically (해석적으로 파라미터 구하기)
4. Submitting Programming Assignments (프로그래밍 숙제)
5. Octave/Matlab Tutorial (옥타브/매트랩 튜토리얼)


이번 글은 Week2의 5강인 Octave/Matlab Tutorial (옥타브/매트랩 튜토리얼) 요약입니다.


5. Octave/Matlab Tutorial (옥타브/매트랩 튜토리얼)

(1) Basic Operations
(2) Moving Data Around
(3) Computing on Data
(4) Plotting Data
(5) Control Statements: for, while, if statement
(6) Vectorization

 

(6) Vectorization

 

예제는 아래와 같습니다. 

 

$h_{\theta}(x)=\sum_{j=0}^{n} \theta_{j} x_{j}$

 

위 식을 벡터화 시킬 수 있습니다. 벡터들의 곱으로 나타낼 수 있다는 것입니다. 아래와 같습니다 .

 

$h_{\theta}(x)=\sum_{j=0}^{n} \theta_{j} x_{j}=\theta^{T}x$

 

벡터 $\theta$와 벡터 $x$는 아래와 같습니다. 

 

$\theta=\begin{bmatrix}
\theta_{0} \\ 
\theta_{1} \\ 
... \\ 
\theta_{n}
\end{bmatrix}$

 

$x=\begin{bmatrix}
x{0} \\ 
x{1} \\ 
... \\ 
x_{n}
\end{bmatrix}$

 

벡터화의 장점이 무엇인지 알아보기 위해 벡터화하지 않은 경우의 코드와, 벡터화한 경우의 코드를 비교해봅시다.

 

<벡터화 하지 않은 코드>

 

prediction = 0.0;

for j = 1:n+1,

  prediction = prediction + theta(j) * x(j)

end;

 

 

<벡터화한 코드>

prediction = theta' * x;

 

 

<벡터화 하지 않은 C++ 코드>

 

double prediction = 0.0;

for (int j=0; j<=n; j++)

   prediction += theta[j] * x[j]

 

<벡터화한 C++ 코드>

 

double prediction

 = theta.transpose() * x;

 


gradient decent 는 아래와 같이 updqte 됩니다.

 

 

벡터화한 연산을 적용해봅시다. 

 

 

 

반응형

댓글