Coursera의 Deep Learning Specialization - Week 1의 강의를 수강하면서 필기한 내용을 바탕으로 정리한 글입니다.
Binary Classification (이진 분류)
입력 X에 대하여 고양이인지(Y=1), 아닌지(Y=0)를 분류하는 아주 기초적인 분류기입니다.
큰 내용은 없고, 하나의 입력을 벡터로 길게 폈을 때의 크기를 nx라고 하여 차원으로 구분합니다.
그리고 x(1), x(2), .. 등 모든 training example들을 column으로 합하여 대문자 X로 표현합니다. X의 차원은 (nx x m)입니다.
Label 또한 column으로 합하여 대문자 Y로 표현합니다. Y의 차원은 (1 x m)입니다.

Logical Regression (논리 회귀)
입력 X에 대하여, Y=1일 확률 Y-hat을 계산하는 알고리즘입니다.
Y-hat을 계산하는 파라미터로는 가중치(Weight) - W, 바이어스(Bias) - b가 있습니다.
W의 Transpose와 입력 X의 내적에 b를 더한 값을 z라고 정의합니다.
그리고 z값에 따라 0부터 1 사이의 선형적인 값을 부여하기 위해 sigmoid 활성 함수를 이용합니다.
매 학습마다 두 파라미터인 W와 b를 학습하여 가장 좋은 추정치 Y-hat을 계산하도록 합니다.

Lost Function (손실 함수) & Cost Function (비용 함수)
Training이 진행되었을 때, 실시간으로 얼마나 잘 이루어졌는지 성능을 평가하기 위한 함수가 필요합니다.
Loss Function은 단일 training example에 대한 성능을 평가합니다. 클수록 안 좋다는 것을 의미합니다.
log를 이용한 L(y,y-hat)을 정의합니다.
- y=1일 때 -log(y-hat)이 되어 이 값이 작아지려면 y-hat이 커지도록 유도되어야 합니다.
- y=0일 때 -log(1-y-hat)이 되어 이 값이 작아지려면 y-hat이 작아지도록 유도되어야 합니다.
Cost Function은 전체 training set에 대한 성능을 평가하는 지표로, Loss Function의 평균값에 해당합니다.
J(w,b)를 정의하게 되고, 모든 training set에 대해 L을 모두 더한 뒤 m으로 나눈 값입니다.

Gradient Descent Algorithm (기울기 강하 알고리즘)
Cost Function을 최소화하는 파라미터 w,b를 학습시키고자 Gradient Descent Algorithm을 이용합니다.
매 학습 이후, 기울기가 강하(감소)하는 방향으로 w와 b를 갱신합니다.
갱신하는 데에는 알파 값으로 학습률(Learning Rate)과 파라미터에 대한 도함수의 곱을 빼서 계산합니다.

Computation Graph (계산 그래프)
Forward Propagation이 이루어진 후, Backward Propagation을 계산하는데, 그 작업을 이루기 위해 도함수 개념을 도입합니다다.
이 수업에서 "특정 변수(var)에 대한 최종 출력 변수(output)의 도함수"를 "dvar"로 표현하는데,
아래의 경우 output은 cost function인 J입니다. 따라서 dw는 dJ / dw를 의미합니다.

Vectorization (벡터화)
각 training example에 대해 적용되는 동일한 반복 계산을 피하기 위해, 벡터화를 적용합니다.
모든 training set을 하나의 배열에 합쳐 W, X로 표현합니다.
그리고 numpy 연산을 이용하여 W.t*X를 계산합니다. 곱하는 연산을 m회 반복하는 것보다 훨씬 빠른 효과가 있습니다.

벡터화를 이용하여 아래와 같이 연산 시간, 코드 길이를 단축할 수 있습니다.

Etc.
np.array를 생성할 때 하나의 매개변수값을 주지 말 것.
a.shape == (5,) 처럼 생성되는 array를 "Rank 1 Array"라고 하는데, 절대 사용하지 않습니다.
대신 (5,1) or (1,5) 처럼 row vector나 column vector로 생성해서 사용합니다.
assert 함수를 이용하여 Rank 1 Array 함수를 체크하고, reshape하여 vector로 변환하는 코드를 활용하면 좋습니다.

'Deep Learning Specialization' 카테고리의 다른 글
Tuning Process [Deep Learning Specialization #6] (0) | 2022.07.18 |
---|---|
Optimization [Deep Learning Specialization #5] (0) | 2022.07.14 |
Improving Deep Neural Network [Deep Learning Specialization #4] (0) | 2022.07.14 |
Deep Neural Network [Deep Learning Specialization #3] (0) | 2022.07.13 |
Shallow Neural Network [Deep Learning Specialization #2] (0) | 2022.07.13 |
댓글