Skip to content

Commit 1f52d59

Browse files
committed
Dabin_cs231n_4
1 parent b20c55a commit 1f52d59

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

CNN/lecture 4.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
## Backpropagation
2+
3+
> Q. Gradient를 어떻게 조절할 것인가?
4+
>
5+
> ​ A. Backpropagation을 이용해서!
6+
7+
지난 시간, Loss function을 최소화 시키기 위한 Weight를 조정하기 위해 Gradient descent를 이용한다는 사실을 배웠다.
8+
9+
Gradient는 loss를 줄이기 위해 weight 벡터를 조정할 때 어떤 방향으로 움직여야할 지를 알려주는 지표이다. Gradient가 0이 되는 global minimum을 찾아 loss function을 최소로 만드는 Weight을 찾는 것이 목적이다.
10+
11+
![img](https://i.imgur.com/1OJghYx.png)
12+
13+
14+
15+
매우 복잡한 수식을 다룬다면 gradient 계산은 매우 어려워지는데, Backpropagation은 **복잡한 수식을 쪼갠 다음 chain rule을 이용해 엮어서** 간단하게 gradient를 계산하는 방법이다.
16+
17+
*chain rule
18+
$$
19+
\dfrac{\partial{f}}{\partial{x}} = \sum_{i}\dfrac{\partial{f}}{\partial{p_i}} *\dfrac{\partial{p_i}}{\partial{x}}
20+
$$
21+
22+
23+
아래 그림에서 볼 수 있듯이 매우 복잡한 수식을 간단한 연산으로 나누고 각 연산을 노드로 정의하고 나면 복잡한 수식은 간단한 노드들이 엮인 모양이 된다.
24+
25+
각 노드가 최종 결과값에 미치는 영향을 알아낸 후 (각 노드의 gradient) 이를 엮으면(chain rule) 변수와 weight에 따른 최종값의 변화를 알 수 있다. 각 노드의 *Gradient***그 노드가 최종값에 영향을 미치는 민감도**를 나타낸다.![img](https://i.imgur.com/pWPpDiI.png)
26+
27+
각각의 노드에서 이루어지는 연산은 다음과 같다. 각 노드의 입력값이 결과값에 얼마나 영향을 주는 지 local gradient를 통해 확인한다.
28+
29+
![img](https://i.imgur.com/pEBaEGc.png)
30+
31+
32+
33+
예시)
34+
35+
![img](https://i.imgur.com/0e2V3Rd.png)
36+
37+
Q. 숫자가 아니라 행렬,벡터로 주어진다면?![img](https://i.imgur.com/kiKKjwK.png)
38+
39+
40+
41+
Q. Jacobian matrix?
42+
43+
44+
45+
## Neural Networks
46+
47+
**여러 층의 layer**을 사용해 , 중간중간에 **Non linear function을 이용**해서 필터링을 해 주는 형태이다.
48+
49+
Non linear function은 여기서 나온 것처럼 0이하의 값을 다 0으로 바꾸어 버리는 function일 수도 있고, ReLu, ELU, sigmoid등 다양한 함수를 사용할 수 있다.
50+
51+
Q. 여러 층의 layer을 사용하는 이유는?
52+
53+
input을 계층적으로 분석가능하기 때문이다. 여기서 계층적이라는 말의 의미는 다음과 같다. 예를 들면 페르시안 고양이, 스핑크스 고양이, 삼색 고양이를 각각 분류하고나면 이들을 고양이라는 카테고리로 묶을 수 있고, 고양이는 또한 동물이라는 큰 카테고리 안에 있다. 따라서 삼색 고양이 사진을 넣는다면 '삼색 고양이는 고양이의 일종이고 고양이는 동물의 한 종류이다'라는 흐름을 거쳐서 '삼색 고양이는 동물이다'라는 결론을 낼 수 있다는 것을 의미한다.
54+
55+
![img](https://i.imgur.com/NjrbmG9.jpg)
56+
57+
가령 input으로 동물사진들이 주어지고, 동물들을 분류하는 것이 목적이라고 생각해보자.
58+
59+
1번째 layer에서는 1차적으로 들어온 사진들을 그대로 분석하기 때문에 말의 오른쪽 얼굴, 왼쪽 얼굴을 각각 다른 클래스로 분류해 트레이닝 한다. 따라서 만약 정면을 보고 있는 말 사진을 넣는다면 말의 오른쪽 얼굴, 왼쪽 얼굴에 해당하는 클래스의 스코어가 50,50으로 비슷하게 나올 것이라고 생각해볼 수 있다.
60+
61+
여기서 2번째 layer을 넣는다면 1차적으로 계산된 스코어를 다시 엮어서 2차 weight를 구할 수 있다. 말의 오른쪽, 왼쪽 얼굴에 해당하는 score들을 엮어 2차 연산 후에는 '말'이라는 카테고리가 가장 점수가 높도록 할 수 있다는 점이다.
62+
63+
64+
65+
Q. Non linear function이 왜 중요할까?
66+
67+
어떤 것이 유의미하고 아닌지 한번 필터링 해주는 역할이 있다. 무의미한 값들은 score을 0으로 만들어버리거나 아주 작게 만들어버리고, 유의미한 값들은 score를 높게 만들면 유의미한 값들만 2차 layer에서 계산할 수 있다는 장점이 있다.
68+
69+
![img](https://i.imgur.com/DuLj3Sm.png)
70+
71+
72+
73+
74+
75+
76+

0 commit comments

Comments
 (0)