이번 시간에는 신경망(Neural Networks)을 구현하기에 앞서서,
신경망(Neural Networks)의 전체적인 개요부터 알아보겠습니다.
저번 주의 내용과 많이 겹쳐서, 겹치는 부분은 간략하게 하고 넘어가겠습니다!
학습 데이터가 입력되는 층인 "입력층(Input Layer)"
결과(예측치)의 값이 산출되는 "출력층(Output Layer)"
입력층과 출력층 사이의 층을 의미하는 "은닉층(Hidden Layer)"
신경망(Neural Network)은 위의 3가지의 층으로 구성됩니다.
위의 자료에서는, X1 , X2 , X3는 입력층 , Y-hat은 출력층을 의미합니다.
수학적으로 표현할 할 때,
입력 측을 [0]으로, 2번째 층부터 [1]로 표현합니다.
각 층에 해당하는 변수들을 표현할 때에도,
변수들 위에 [ ]를 붙여서, 각 층에 해당하는 변수들(z, w, b, a)을나타내 줍니다.
이와 반대로,
역전파 과정을 통해서 구한 도함수 값들은 끝에서부터 시작하여 나타냅니다. ex) dz [1] , dz [2]
이어서, 더 많은 신경망 표현 방법들을 알아보겠습니다.
위의 하얀 동그라미를 퍼셉트론(Perceptron) 또는 뉴런(Neuron)이라고 부르겠습니다.
--> 저는 퍼셉트론(perceptron)으로 통일하겠습니다!
a [0]는 입력값 X를 나타내고,
a [1]는 1번째 층의 결괏값 ( 시그 로이드 함수의 값)을 나타내고,
a [2]는 Y-hat (예측치)를 나타냅니다.
각각의 층의 맨 위 퍼셉트론부터 ~ 맨 아래의 퍼셉트론까지,
순서대로a [1]1 , a [1]2 , a [1]3 , a [1]4라고 표현하겠습니다.
즉, (4 * 1 행렬) a [1] = ( a [1]1 , a [1]2 , a [1]3 , a [1]4 ) 이런 식으로 구성되는 것이죠.
신경망의 결과가 산출되는 과정을 보면서, 위의 표현들이 어떻게 쓰이는지 봅시다.
--> 위의 과정을 좀 더 구체화해보겠습니다.
위와 같이, 퍼셉트론 하나하나 계산해 주는 과정을 거쳐서 결과를 산출해냅니다.
이 과정을 벡터화 과정(Vectorizing)을 통해서, 아래의 자료의 형태로 표현할 수 있습니다.
i 번째 층이라고 가정하면,Z [i] = W [i]. T * X [i] + b [i]로 표현할 수 있습니다.
또한, 각각의 행렬의 차원 수를 알아보면,
W [1]의 차원 수는 4( 1층의 퍼셉트론의 수)* 3( 훈련 데이터 x의 수)
b의 차원 수는 4(1층의 퍼셉트론의 수) * 1 ( 편향 b는 퍼셉트론 하나당 1개이므로)로 표현됩니다.
마찬가지로, 다른 변수들의 차원 수도 살펴보겠습니다.
---> 행렬의 곱에서, 차원 수가 브로드캐스팅(BroadCasting)을 통해서 변한다는 걸 명심해 주시길 바랍니다.
벡터화 구현에 대해 잠깐 알아보겠습니다.
참고*
--> 벡터화(Vectorizing)를 하는 이유는, 프로그래밍 과정에서 비 효율적인 계산을 하는 for 구문을 안 써서 알고리즘 성능을 향상하기 위해서라고 지난주에 배웠습니다.
위 그림을 보면서 , W [1] * X 행렬을 나타낸 부분을 살펴봅시다.
행렬의 열은 입력 데이터 x의 갯 수를 나타내고 ,
행렬의 행은 입력데이터 x의 차원 수 m을 나타냅니다. -->x는 m * 1 벡터(=행렬) 입니다.
다시 여기에 , b [1]만 더해주면 z[1] 벡터(=행렬)이 만들어 지는 것이죠.
대략적으로 벡터화가 어떤 식으로 쓰이고 활용되는지 알아봤으니 ,
다음 시간에는 , 활성화 함수에 대해 조금 구체적으로 알아보겠습니다.
이 내용들은 모두 coursera에서 앤드루 응 교수님의 강의를 요약정리 및 쉽게 재 풀이하여 적은 글이며,
내용에는 생략되거나 변형된 부분이 많으니 직접 강의를 들어보시는 걸 추천드립니다!
이 글은 상업적 목적이 아닌, 한국에서 인공지능을 배우고 싶은 분들을 위해 적은 교육적 목적에서 작성하였습니다.
'코세라 앤드류 응 AI 강의 리뷰' 카테고리의 다른 글
[인공지능 강의 리뷰] 18 - 하나의 숨겨진 레이어를 사용한 평면 데이터 분류. 프로그래밍 과제 (2) | 2022.05.17 |
---|---|
[인공지능 강의 리뷰] 17 - 총정리 퀴즈. 얕은 신경망(Shallow Neural Network) (0) | 2022.05.17 |
[인공지능 강의 리뷰] 16 - 왜 활성화 함수에 비선형 함수를 써야할까? (0) | 2022.05.17 |
[인공지능 강의 리뷰] 14 - 프로그래밍 과제 . 신경망 사고방식을 이용한 로지스틱 회귀 모델 만들기3 (고양이 사진 분류기) (0) | 2022.05.16 |
[인공지능 강의 리뷰] 13 - 프로그래밍 과제 . 신경망 사고방식을 이용한 로지스틱 회귀 모델 만들기2 (고양이 사진 분류기) (0) | 2022.05.16 |
[인공지능 강의 리뷰] 12 - 프로그래밍 과제 . 신경망 사고방식을 이용한 로지스틱 회귀 모델 만들기 (고양이 사진 분류기) (0) | 2022.05.16 |
[인공지능 강의 리뷰] 11 - 신경망 기초 테스트 (Neural Network Basic Quiz) (0) | 2022.05.16 |