코세라 앤드류 응 AI 강의 리뷰

[인공지능 강의 리뷰] 9 - 벡터화(Vectorization)

파요요요 2022. 5. 16. 22:05
벡터화(Vectorization)

​이번 시간에는

프로그래밍할 때, 알고리즘 성능을 저하시키는 for 구문을 대체하는

벡터화(Vectorization)에 대해 알아봅시다.

그림을 참고해 주세요!

벡터화는 무엇일까? , 벡터화를 사용해야 되는 이유는?

만약 벡터화(Vectorizing)를 사용하지 않고, 프로그래밍해야 한다면

(파이썬 기준) for 반복문을 통해서, 총합을 구해야 합니다

하지만, 벡터화(Vectorizing)를 통해서,   마치 벡터의 형태로 연산한다면,

for 구문을 쓰지 않고도 총합을 계산할 수 있습니다.

--> ( for 구문은 불필요한 연산과정이 많이 들어가기에 , 알고리즘의 성능을 저하시킵니다.)

여기서 np.dot은 numpy라는 파이썬 라이브러리를 통한 내장 함수로써,   w , x를 벡터화 해주는 역할을 수행합니다.

이렇게 벡터의 형태로 계산하게 되면,   병렬적 연산을 하게 되는데,

이러한 과정은 cpu보다 gpu가 훨씬 잘합니다.

--> cpu보다 그래픽카드가 인공지능 연산에 훨씬 유리함


벡터화를 이용하는 여러 예시

for loop 반복문이 아닌, 벡터화를 이용해야 하는  ​다른 예시도 알아보겠습니다.

 

for loop 반복문이 아닌 , np.dot()을 이용하여 연산해야되는 이유

행렬 A벡터 V의 곱으로, 벡터 U를 계산하려 합니다.

--> 앞으로 [ 벡터 = 행렬 = 배열 ] 거의 대부분의 상황에서 세 단어가 같은 뜻이라고 이해하시면 됩니다!

for 구문을 사용하면, 행렬과 벡터의 곱을

U[i] = A [i][j] +v [j] 이러한 덧셈의 형태로 바꾸어야 표현할 수 있습니다.

--> np.zeros( ( n, 1 ) )은 0으로 이루어진 n * 1 행렬을 생성한다는 뜻입니다

하지만,

np.dot()을 사용하여 연산한다면 저런 복잡한 연산과정 없이 간단하게 표현할 수 있는 것이죠


함수를 벡터화 , 행렬화 하기

자료를 참고해 주세요!

for 구문을 사용하고, math.exp()라는 파이썬 함수를 이용하여

V.1 자연로그 e ^ V.1으로 바꾸어 주었습니다.

하지만, numpy의 내장 함수 np.exp()를 사용한다면 for 구문을 사용하지 않아도 됩니다.

* 로지스틱 회귀 모델을 프로그래밍할 때 , 필요한 여러 numpy 내장 함수(코드)를 알아둡시다.

np.log (v)는 괄호 값을 지수 로그로 만들어 주고고,

np.abs(v)는 괄호 안의 값을 절댓값으로 만들어 주며 ,

np.square(v)는 괄호 안의 값을 제곱 수로 만들어줍니다.

np.maximum (v,0)은 0과 비교하여, 0보다 크다면 최댓값을 반환하고 , 작다면 0을 반환합니다.

반응형

로지스틱 회귀에서의 벡터화

이제 로지스틱 회귀(Logistic Regression)벡터화(Vectorizing) 해봅시다.

로지스틱 회귀 벡터화
로지스틱 회귀 벡터화

마찬가지로, 경사 하강법(Gradient descent)에도 벡터화(Vetorizing) 해봅시다.

경사하사강법에도 벡터화 적용

위의 자료와 프로그래밍 과제의 내용과 겹쳐서,

이후의 글에서 , 프로그래밍 과제를 해석하며 자세히 다루겠습니다.

프로그래밍 과제를 수행하기 전 반드시 알아야 할 개념이 있습니다.

파이썬에서 배열(행렬)을 산술 연산할 때, 서로 다른 모양의 배열(행렬)을 처리하는 방식인

"브로드 캐스팅 (Broadcasting)"입니다.

 

다음 글에서는 브로드 캐스팅(Broadcasting)에 대해 다뤄보고,

다음 글이 끝나면, 드디어 실제 파이썬 코딩을 통해 로지스틱 회귀 모델을 만들어 봅시다!


이 내용들은 모두 coursera에서 앤드루 응 교수님의 강의를 요약정리 및 쉽게 재 풀이하여 적은 글이며,

내용에는 생략되거나 변형된 부분이 많으니 직접 강의를 들어보시는 걸 추천드립니다!

이 글은 상업적 목적이 아닌, 한국에서 인공지능을 배우고 싶은 분들을 위해 적은 교육적 목적에서 작성하였습니다.

반응형