목록코딩로그/Andrew Ng's ML class (5)
코딩로그
얼마나 깊은 신경망을 사용해야 하는지 미리 정확하게 예측하기는 어렵습니다. 표기법 L : 네트워크 층의 수 n[l] : l층에 있는 유닛 개수 a[l] : l층에서의 활성값 a[0] : 입력 특징 (X) a[L] : 예측된 출력값 ( y^ ) l 번째 층에서 정방향 전파는 이전 층의 활성화 값인 a[l−1]을 입력으로 받고, 다음 층으로 a[l] 값을 출력으로 나오게 합니다. 이때 선형결합된 값인 z[l] 와 변수 W[l],b[l] 값도 캐시로 저장해둡니다. l 번째 층에서 역방향 전파는 da[l] 을 입력으로 받고, da[l] 를 출력합니다. 이때 업데이트를 위한 dW[l] 와 db[l] 도 함께 출력합니다. 이들을 계산하기 ..
입력 특성들의 층을 입력층이라하며 a[0] 으로 표기합니다. 은닉층이랑 입력층과 출력층 사이에 있는 모든 층을 의미합니다. l번째 은닉층의 n번째 유닛은 an[l] 으로 표기합니다. 예를 들어 첫 번째 은닉층은 a[1] 로 표현하며 첫 번째 은닉층에 있는 첫 번째 유닛은 a1[1] , 첫 번째 은닉층에 있는 두 번째 유닛은 a2[l] 로 표현할 수 있습니다. 출력 특성들의 층을 출력층이라 합니다. 신경망 층의 개수를 셀 때는 입력 층은 제외합니다. 예를 들어 아래의 그림은 은닉층 1개, 출력층 1개 이기에 2층 신경망이라합니다. 입력값이 노드를 통과할 때, 두가지 과정을 거치게 됩니다. z=wT+b a=σ(z) 표기법은 아래와 같습니다. ai[l] l : 몇 ..
벡터화 벡터화란 코드를 작성하는 데 있어 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 = ..
이진 분류 - 신경망에서 학습하는 방법 : 정방향 전파, 역전파 -> 로지스틱 분류와 비교할 것 - 이진분류 : 그렇다/아니다 2개로 분류하는 것이다. 아래 사진에서는 만약 고양이가 맞다면 1로 분류하고, 고양이가 아니면 0이라고 분류한다. - 이미지의 특성벡터로의 변환 : 특성벡터로 변환하기 위해 벡터를 쭉 펼친다. 64x64 이미지가 있을 때 RGB의 세 채널이 있으므로 64x64x3인 12288짜리 사이즈의 특성벡터로 만든다. - x라는 특성벡터를 이용하여 y라는 결과를 도출해 내는 것이 로지스틱 회귀의 목적이다. - 훈련횟수를 M이라고 하자. 그때 X와 Y를 행렬로 나타내면 다음과 같다. 로지스틱 회귀 - 로지스틱 회귀란 답이 0 또는 1로 정해져있는 이진 분류 문제에 사용되는 알고리즘입니다. -..
보호되어 있는 글입니다.