\



안녕하세요. 다시 오신 것을 환영합니다. 이번 주에는 신경망 프로그래밍의 기초에 대해 알아보도록 하겠습니다. 신경망을 구현할 때에는 매우 중요한 몇 가지 기술이 있습니다. 예를 들어, m개의 학습 표본을 가진 학습 세트가 있으면, m개의 학습 표본에 대해서 for문을 돌리면서 하나씩 학습 세트를 처리 해 왔을 것입니다. 하지만 신경망을 구현할 때는 전체 학습 세트를 돌리는데 for문을 사용하지 않고 처리하고자 합니다. 따라서, 이를 어떻게 하는지 강의를 통해 알아보도록 합시다. 또다른 아이디어에는, 신경망으로 계산을 할 때 보통 순방향경로 혹은 순전파, 그 다음엔 역방향경로 혹은 역전파 계산법을 사용합니다. 따라서, 이번 주 강의에서 신경망을 학습시킬 때 왜 순전파와 역전파를 이용하여 계산을 하는지 소개하도록 하겠습니다. 이 강의에서 저는 이해를 돕고자 로지스틱 회귀를 통해 아이디어를 전달하려 합니다. 하지만 예전에 로지스틱 회귀에 대해서 들어보셨을지라도, 이 강의에서 얻을 수 있는 새롭고 흥미로운 아이디어가 있을 것이라 생각합니다. 그럼 시작해보도록 합시다. 로지스틱 회귀는 이진 분류를 위한 알고리즘입니다. 문제를 통해 이야기해 보도록 합시다. 여기 예로 이진 분류 문제가 하나 있습니다. 여기와 같이 입력 이미지가 있습니다. 이미지를 인식하기 위해서 고양이일 때에는 1로, 고양이가 아닐 때는 0으로 레이블을 출력하려 합니다. 그리고 출력 레이블을 나타내기 위해 y를 사용하도록 하겠습니다. 이미지는 컴퓨터에서 어떻게 표현되는지 살펴보도록 하겠습니다. 이미지를 저장하기 위해서 컴퓨터는 각각 빨간색, 녹색, 파란색 채널에 대응하는 세 개로 분리된 행렬을 사용합니다. 그래서 입력 이미지가 64x64 픽셀이라면 빨간색, 녹색, 파란색 픽셀의 채도에 해당하는 값을 가진 3개의 64x64 행렬을 있을 것입니다. 좁은 슬라이드에 표현하다 보니깐 최대한 작게 그렸는데, 여기에는 64x64 대신에 5x4 행렬이 사용 되었습니다. 이 픽셀들의 채도값을 특징벡터로 바꾸기 위해 여기 픽셀값 모두를 하나의 입력 특징벡터 x에 펼쳐 보았습니다. 모든 픽셀 채도값을 특징벡터에 나열하기 위해서 이미지에 해당하는 특징벡터를 다음과 같이 정의해 봅시다. 255, 231, ... 255, 231, ... 이런식으로 빨간색 픽셀값 모두를 나열합시다. 다음엔 255, 134, ... 255, 134, ... 여기 이미지에 있는 빨간색, 녹색, 파란색 픽셀 채도를 모두 여기 기다란 특징벡터에 나열해봅시다. 그래서 이미지가 64x64 이미지라면, 이 특징벡터 x의 전체 차원은 64x64x3이 될 것입니다. 이는 여기 세 개의 행렬 안에 있는 모든 값들의 수이기 때문입니다. 이 경우에는 12,288이 되겠고 여기 모든 숫자를 곱하면 얻을 수가 있습니다. 그래서 입력 특징 x의 차원을 nx = 12,288로 표현하겠습니다. 가끔 간결하게, 입력 특징벡터의 차원을 소문자 n으로 쓰겠습니다. 따라서 이진 분류에서, 우리의 목표는 입력 벡터 x로 표현된 이미지를 입력으로 주어 분류자를 학습시키고, 출력 레이블 y가 1인지 0인지 예측하려 합니다. 즉, 고양이인지 고양이가 아닌지 예측합니다. 앞으로 이 강의에서 사용하게 될 몇 가지 표기법을 정리하도록 하겠습니다. 하나의 학습 표본은 순서쌍 (x,y)로 표기됩니다. 여기서 x는 x차원을 가진 특징벡터이고, y는 0 혹은 1중에 하나의 값을 가지는 레이블입니다. 학습 세트는 m개의 학습 표본으로 구성되어 있습니다. 그리고 학습 세트는 첫번째 학습 표본의 입력값과 출력값 (x(1),y(1)), 두번째 학습 표본 (x(2),y(2))에서 마지막 학습 표본 (x(m), y(m))으로 적을 수가 있습니다. 그래서 이것들이 모두 합쳐진 것이 전체 학습 세트입니다. 학습 표본의 수를 나타내기 위해 소문자 m을 사용하도록 하겠습니다. 그리고 가끔 학습 표본의 수라는 것을 강조하기 위해 이것을 m=m_train으로 적도록 하겠습니다. 그리고 테스트 세트를 말할 때는, m_test로 테스트 표본의 수를 나타내겠습니다. 그래서 이것은 테스트 표본의 수입니다. 마지막으로 모든 학습 표본을 더욱 간결하게 표현하기 위해서 대문자 X로 행렬을 정의하겠습니다. 이 행렬은 학습 세트 입력값들 x(1), x(2), ... 을 가져와서 세로줄로 입력값들을 쌓은 것입니다. 그래서 x(1)을 가져와서 여기 행렬의 첫번째 열에 놓고 x(2)는 두번째 열, 이런식으로 x(m)까지 놓겠습니다. 그러면서 행렬 X가 만들어지겠습니다. 따라서 이 행렬은 학습 표본의 수인 m개의 세로줄 행렬의 높이인 nx개의 가로줄을 가지게 됩니다. 주의할 것이 있는데, 다른 강의에서 가로줄로 학습 표본을 쌓아서 행렬 X를 표현하는 것을 보셨을 겁니다. x(1) 전치시키고, 아래로 가서 x(m)까지 전치시키고 이런식으로요. 하지만 신경망을 구현할 때 왼쪽에 제가 쓴 표기법이 훨씬 더 쉽다는 것이 알려졌습니다. 그래서 요약하면, X는 nx x m차원을 가진 행렬이고, 파이썬을 코딩할 때 나오는 X.shape()는 행렬의 형태를 알기 위한 명령어이고 (nx, m)을 출력합니다. 따라서 그것은 단순히 nx x m차원의 행렬을 의미합니다. 여기까지 학습 표본의 입력 x를 어떻게 행렬에 묶는지 알아보았습니다. 그렇다면 출력 레이블 Y는 어떻게 할까요? 신경망을 좀 더 쉽게 구현할려면 출력 레이블 Y도 세로줄로 해서 쌓는 것이 더 편리합니다. 따라서 대분자 Y를 이런식으로 y(1), y(2), ... y(m)와 같아지도록 정의하겠습니다. 그러면 여기 있는 Y는 1 x m 다이멘션얼 매트릭스가 되겠죠. 그리고 다시 Y 모양없이 표기하면, Y는 1, m이 되겠죠. 즉, 이것은 1 x m 매트릭스가 됩니다. 여러분이 차차 새로운 네트워크, mtrain discourse에 영향을 주면서, 다른 트레이닝 example과 연관된 데이터를 적용시키는 것이 

유용하다고 느끼실 것입니다. 여기서 데이터는 x 또는 y또는 나중에 다룰 데이터의 양입니다. 다른 트레이닝 example과 연관된 데이터를 적용시켜서 마찬가지로 x와 y에서 했던 것처럼 다른 줄에 쌓는 방식으로 

진행합니다. 이것은 회귀를 가르키는데 쓰는 표기방식이구요, 다름 코스에서 다룰 신경망에 대한 표기법입니다. 여러분이 만약 표기문자가 뜻하는 것을 까먹는 경우,

예를 들어, M이 무엇인지 N이 무엇인지, 다른 어떤 표기 방법은 또 무엇인지, 

이런 내용을 코스 웹사이트 notation guide로 포스팅했기 때문에 여러분이 빠르게 궁금해하는

표기를 확인할 수 있습니다. 자 그럼, 다음 비디오로 넘어가겠습니다. 다음 비디오에서는 이 표기를 사용하여 

선형회귀를 도출하는 법을 다루겠습니다.




In this video, we'll go over logistic regression. 이 러닝 알고리즘은 지도학습 문제에서 결과값 레이블 Y의 값이 0 이거나 1인 경우 사용되는 학습 알고리즘입니다 즉 이진 분류 문제의 경우이죠. 입력 특성 벡터 X가 고양이이거나 고양이가 아닌 사진을 분류하는 이미지에 해당하는 경우 결과값을 예측하는 알고리즘이 필요할 것입니다. 이것을 ŷ (y hat) 이라고 하겠습니다. 이것은 Y의 평균값이죠. 공식적으로는, ŷ 의 값이 Y가 주어진 입력 특성 X가 되는 확률로 만드는게 좋습니다. 다시 말해서, X 가 사진이면, 저번 비디오에서 본 것처럼 말이죠, ŷ 은 이 사진이 고양이일 확률은 얼마나 되는가? 를 말해주는 것이 좋습니다. 그러므로, 저번 비디오에서 본 것과 같이 X는 X 다이멘션얼 벡터입니다. 로지스틱 회귀분석법의 매개변수가 W이고, W가 동시에 X 다이멘션얼 벡터이며, 실수인 b도  x 다이멘션얼 벡터인 경우 말이죠. 그러므로, 입력값 X와, 매개변수가 W와 b인 경우, ŷ 결과값은 어떻게 생성할까요? 시도할 수 있는 방법은, 물론 안되겠지만, ŷ 이 w transpose값 곱하기 X + b입니다. 입력값 X의 일차함수인 것처럼 말이죠. 사실 말한 것 그대로, 이것을 선형회귀에 씁니다. 그렇지만 이항분류문제로는 그닥 좋지 않은 알고리즘인데요, ŷ 이 Y가 1일 확률이 되도록 만드는 것이 좋기 때문입니다. 결과적으로 ŷ 이0에서 1사이에 있어야 하는데, 이렇게 만들기가 쉽지 않죠, W transpose 곱하기 X 플러스 B값이 1보다 훨씬 더 크고 마이너스일 수도 있기 때문입니다. 확률적인 측면으로 비추어보았을때, 말이 안되죠. 이것이 0에서 1사이에 있도록 하는 것이요. 로지스틱 회귀분석법에서는 결과값이 ŷ = 이 만큼의 양이 적용된 시그모이드 함수가 될 것입니다. 

 시그모이드 함수는 이렇게 생겼습니다. 가로축에 Z를 넣으면, Z의 시그모이드 함수는 이렇게 생깁니다. 부드럽게 0에서 1로 가죠. 축을 이렇게 넣겠습니다. 이 값은 0이고 세로축을 0.5에서 교차합니다. Z의 시그모이드 함수는 이렇게 생겼구요, 이 W transpose 곱하기 X 더하기 B에 대한 양을 나타내기 위해 Z를 쓰겠습니다. 여기 시그모이드 함수에 대한 공식입니다. Z의 시그모이드에서 Z는 실수, 1 나누기 1+E의 의 마이어스 Z승입니다. 2가지 알만한 사항이 있는데요. 만약 Z의 값이 매우 크면 E의 -Z승은 0에 가까울 것입니다. Z의 시그모이드는 대략 1 나누기 1 플러스 0에 가까운 값일 것입니다. 그 이유는 E의 아주 큰 숫자의 승은 0에 가깝디 때문이죠. 그러므로 이 값은 1에 가깝죠. 그럼 보시다시피, 왼쪽을 보시면 Z의 값이 매우 큰 경우, Z의 시그모이드는 1과 매우 가깝운 값이 됩니다. 반대로 Z의 값이 작으면, 또는 아주 큰 음수인 경우, Z의 시그모이드는 1 나누기 1+E의 -Z승이 됩니다. 이 값은 아주 큰 값이 되겠죠. 그러면 이 것은, 1 나누기 1 더하기 아주 큰값이라고 생각해보십시요. 0에 가까운 값이 되겠죠. 그러면 Z의 값이 매우 큰 음수의 값이 되면서, Z의 시그모이드는 0과 가까운 값이 됩니다. 그러므로 로지스틱 회귀분석을 도입하는 경우에는, 여러분의 임무는 parameter W와 B를 배워서 ŷ 이 Y=1이 되는 확률을 잘 추정한 수치가 나올 수 있도록 하는 것입니다. 넘어가기에 앞서, 표기에 관한 내용을 이야기하겠습니다. 신경망을 프로그래밍할때, W와 B 매개변수를 따로 다룰텐데요, 여기서 B는 인터-스펙트럼의 끝을 나타냅니다. 다른 코스에서 이 표기방법을 다르게 하는 경우를 보셨을 수도 있는데요, 간혹, x0이라는 특성을 정의해서 이 값을 1로 만들어주는데요, 이 경우 x는 R의 nx+1승에 속하는데요, 그 다음에 ŷ 은 theta transpose x 곱하기 시그마가 되도록 합니다. 다른 방법의 표기방식에서는, 벡터 parameters 인 쎄타가 있는데요 쎄타0, 쎄타1, 쎄타2, 쎄타 NX까지 말이죠, 쎄타0은 쎄타 B줄이구요 이것은 단순 줄을 나타내는 것입니다. 쎄타1에서 쎄타 nx까지는 W줄가지 속합니다. 여러분이 신경망 네트워크를 도입하는 경우, B와 W 매개변수를 따로 취급하는 것이 훨씬 더 쉽습니다. 이번 수업에서는 여기 빨간색으로 적은 표기법은 쓰지 않도록 하겠습니다. 이전에 다른 코스에서 이런 표기법을 본 적이 없으시면, 신경 쓰실 필요 없습니다. 이미 이 표기방식을 접한 분들을 위해서 단순히 직접적으로 언급해서 이러한 표기법을 해당 코스에서느 쓰지 않는 것을

알려드리고 싶었습니다. 본 적이 없으시면 중요하지 않기 때문에 걱정하지 않으셔도 됩니다. 이제 여러분은 로지스틱 회귀분석 모델이 어떻게 생겼는지 보셨는데요, 다음은, W와 B 매개변수를 바꾸기 위해서는 비용함수를 정의해야 합니다. 다음 비디오에서 해보도록 하죠.





*loss function에서 손실은 작으면 작을수록 좋으므로 -logy에서 logy는 크면 클수록 좋다.





이번 비디오에서는, 로지스틱 회귀분석법을 보았는데요, 회귀분석 모델에서 W와 B 파라미터를 트레이닝 시키기 위해서는 먼저 비용함수를 정의해야 합니다. 로지스틱 회귀 분석에 사용할 수 있는 비용 함수에 대해 살펴보도록 하죠. 복습하자면, 이전 슬라이드에서 찾았던 내용인데요. 결과값 ŷ은 w의 시그모이드 transpose x 더하기 b 이고, Z의 시그모이드는 이렇게 정의됩니다. 모델에 대한 파라미터를 학습하기 위해 m개의 트레이닝 example로 이루어진 트레이닝 세트가 주어지고, 트레이닝세트에서 매개 변수 W와 B를 찾는 것이 자연스러운 것 같습니다. 여러분의 트레이닝세트에 대한 예상치는 ŷ (i) 이라고 표기하는데요 트레이닝세트에서 나온 ground truth label y_i값과 비슷할 것입니다. 위에 있는 공식에대해 조금더 상세히 알려드리자면, 앞서 ŷ은 위처럼 정의된다고 했었죠, x 트레이닝샘플에 대해서 말이죠. 그리고 각각의 크레이닝 샘플에 대해서요. 밑에 이 아래첨자에 괄호를 사용해서 인덱싱하고 example들을 차별화하시켰습니다. 트레이닝 샘플 (i)의 예상치는 ŷ(i)이며, 기 값은 시그모이드 함수를 W transpose X값에 적용하여, (i) 트레이닝 example 입력값 더하기 V를 통해 Z(i)도 정의할 수 있습니다. Z(i)는 W transpose x (i) 플러스 b입니다. 이번 코스를 통해 우린 규칙화된 표기법을 쓸 것인데요, 위 첨자의 괄호 i는 데이터를 뜻합니다. X 또는 Y 또는 Z 또는 i번째 트레이닝 example과 연관된 i번째 example인거죠. 이것이 위 첨자 i가 의미하는 것입니다. 자 그럼 이제 알고리즘이 얼마나 잘 작동하고 있는지를 알아내기 위해 사용할 수 있는 loss 함수 또는 오류함수를 보도록 하겠습니다. 한가지 방법은 loss를 알고리즘의 결과값이 ŷ이고 true label인 Y가 제곱 오류 또는 0.5제곱 오류가 되게하는 것입니다. 


(이렇게 할 수 있는데요, 로지스틱 회귀분석법에서는 사람들이 이렇게 잘 하지 않습니다. 파라미터를 배우면서 알게되면, 최적한 문제에서 나중에 배우겠지만 비볼록하게 됩니다. 결과적으로 복수 국부 최적의 optimization 문제를 갖게 됩니다. 그렇게해서 gradient descent가 전역 최적값을 못 찾을 수 있습니다. 방금 이야기한 것들이 잘 이해가 안 가셨다고 하면 너무 걱정하지 마십시요. 추후 강의에서 더 자세히 다루도록 하겠습니다. 지금 이해햐셔야할 직관적인 부분은 L이라는 loss 함수는 true label y를 갖는 경우, 얼마나 정확히 ŷ 결과값을 산출하는지 정의할 때 사용합니다. 제곱 오류 값이 오히려 더 합리적인 방법이라고 생각할 수 있지만 gradient descent가 잘 안나온다는 단점이 있습니다. 그러므로 로지스틱 회귀분석법에서는, 여러가지 제곱 오류와 비슷한 역할을하는 loss함수를 정의해서 볼록한 최적화 문제를 주도록 할 것입니다. 그렇게되면 나중에 비디오 강의를 통해 보시겠지만, 최적화를 하기가 훨씬 더 쉬워집니다. )


로지스틱 회귀분석법에서 사용하는 것은 여기 위에 있는 loss함수입니다. 여기서는 마이너스 y 로그 ŷ 더하기 1, 이 선은 y log 이 선은 ŷ 입니다. 직관적으로 이 loss 함수가 왜 말이 되는지 설명해드리겠습니다. 아셔야 할 것은, 제곱오류를 사용하는 경우, 이 값이 최대한 작아야 좋습니다. regression loss함수를 이용하면, 이 것 또한 작은 값일 수록 좋죠. 

 이 것이 왜 말이 되는지, 2가지의 케이스를 통해서 보도록 하겠습니다. 

 첫번째 경우에는 Y가 1, 그리소 loss 함수 ŷ 컴마 y는 이 마이너스 부호를 쓸 수 있도록 해주죠. 그러므로 마이너스 로그 ŷ 만약 y가 1인 경우 말이죠. 그 이유는 y가 1이면, 두번째 항인 1-Y 는 0이 됩니다. 그럼 y가 1이면, 마이너스 로그 ŷ은 큰 값이되게 하는게 좋습니다. (log ŷ가 커질수록 -log ŷ는 극소화되고 이는 곧 loss의 극소화를 의미하기 때문)그 뜻은 즉 log ŷ을 큰 값으로 만드는게 좋은것 인데요 최대한 크게 만드는 것이 좋기 때문에 ŷ이 큰 값을 갖게 하는 것이 좋겠죠. 그렇지만 ŷ은 아시다시피, 시그모이드 함수이기 때문에 1보다 큰 값을 가질 수 없습니다. 즉, y가 1인 경우 ŷ 값이 최대한 큰 값을 갖도록 하는 것이 좋다는 것을 알게 됩니다. 그렇지만 이 값은 절대로 1보다 큰 값이 될 수 없기 때문에, ŷ을 1과 최대한 가깝게 하는 것이 목표라고 해석할 수도 있습니다. 

 2번째 경우는 y가 0인 경우인데요, 만약 y가 0인 경우, loss 함수의 첫번째 항이 0이 됩니다. y 가 0, 그러면 2번째 항이 loss함수를 정의하게 되죠. 이렇게 되면 loss는 마이너스 로그 1 마이너스 ŷ이 됩니다. 여러분의 러닝 단계에서 loss 함수를 작게 만들려고 한다면, 로그 1 마이너스 ŷ이 최대한 값을 갖길 원한다는 뜻입니다. 그리고 여기가 마이너스 부호이기 때문에 이 작은 이유 하나로 해당 loss 함수가 ŷ의 값을 최대한 작은 값으로 하려고 하는 것을 알 수 있습니다. 또, ŷ이 0에서 1사이 값을 가져야 하기 때문에 만약 y가 0이라면 loss 함수는 파라미터가 일을해서 ŷ이 최대한 0에 가까운 값이되도록 할 것입니다.   ㅍ  

 

 Rafidah's effect가 작용하는 여러가지 함수가 있는데요, 만약 y가 1인 경우, ŷ을 최대한 크게하고, Y가 0인 경우 ŷ을 작게하는 것입니다. 여기 초록색으로 된 부분을 아주 편안하게 비용함수에 대해 정의했는데요, 이 부분은 선택적인 비디오 강의 시청을 통해 조금 더 공식적인 배경을 설명하겠습니다. 왜 로지스틱 회귀분석법에서 이런 형식의 loss 함수를 사용하는지 말이죠. 


 마지막으로, loss 함수는 single training example을 바탕으로 정의되었었는데요, single training example에서 얼마나 잘 작동하는지 여부를 측정합니다. 비용함수를 정의해볼텐데요, 이것은 전체적인 트레이닝세트에서 얼마나 잘 작동하는지 여부를 측정해 줄 것입니다. 비용함수 J는 W 파라미터에 적용될텐데요, B 파라미터는 각각의 트레이닝 샘플에 

적용된 m개의 loss 함수의 합과 함께 평균치가 될 것입니다. 그리고 여기 ŷ은 당연히, 로지스텍 회귀분석법 알고리즘에 의거한 결과값의 예상치입니다, W와 B 파라미터세트를 사용해서 나온 값 말이죠. 부가 설명을 드리자면, 이 것은 1 나누기 m이 비용함수가 1에서 m까지의 합인 경우입니다. 그러므로 이값은 y (i) Log ŷ (i) 더하기 1 선을 적용하면 y (i) log one 선을 적용하여 ŷ (i)가 됩니다.. 여기에 대괄호를 기입할 수도 있겠죠. 여기 마이너스 부호는 밖에 위치시킵니다. 여기서는 이런 표현를 쓸텐데요. loss 함수가 single training example에 적용되었다고 말이죠. 비용함수는 파라미터의 비용을 나타낸 것이구요, 그러므로 로지스틱 회귀분석법 모델을 트레이닝 시키는데 있어, W와 B라는 파라미터를 찾고 밑에 있는 전체적인 기계의 비용 J를 줄일 것입니다. 이제까지 로지스틱 회귀분석법 알고리즘의 세팅, 트레이닝 example의 비용함수, 그리고 알고리즘의 전체 비용함수의 파라미터 알고보니 로지스틱 회귀분석법은 아주 아주 작은 신경망 네트워크로 볼 수 있겠습니다. 다음 비디오에서는 이 내용에 대해 다룰텐데요 신경망의 직관적인 부분은 미리 생각해 놓으실 수 있습니다. 자 그럼 다름 비디오로 넘어가서 어떻게 로지스틱 회귀분석법을 아주 작은 신경망으로 볼 수 있는지 알아보겠습니다.

+ Recent posts