티스토리 뷰

[학습노트]는 학습한 강의 내용을 정리해 둔 글입니다.

해당 글은 K-MOOC [파이썬으로 배우는 기계학습 입문 Plus+] 3주차 강의를 수강하며 정리한 내용입니다.
제 임의로 요약 및 정리를 한 글로 정확한 내용은 아래 링크의 강좌를 수강하시는 것을 추천드립니다.

http://www.kmooc.kr/courses/course-v1:HGUk+HGUP01+2022_T2/about

 

파이썬으로 배우는 기계학습 입문 Plus+

본 강의는 수강생이 기계학습(machine learning)의 원리를 이해하고, 그 원리를 적용하여 문제를 해결함으로 기계 학습 문제들을 해결하는 코딩 능력을 기를 수 있도록 합니다. 또한 4차 산업 혁명의

www.kmooc.kr

- 기계학습과 관련된 기초 지식이 없어도 수강 가능한 강좌라 추천받아 수강한 강좌입니다.
- 잘못된 내용이 존재할 수 있으며 본 포스팅은 작성자가 듣고 이해한 강의에 대한 요약 정도로만 참고 바랍니다.
- 강의에 나온 코드는 최대한 따라서 코딩하였습니다.
- 강의에서는 '뉴론'이라는 명칭을 사용하지만 본 포스팅은 두산 백과에서 기재된 '뉴런'으로 명칭을 변경하여 작성했습니다.

 

이전 포스팅
[2주차 학습노트] 보기

 

[2주차 학습노트 - 넘파이와 뉴론 기초] 파이썬으로 배우는 기계학습 입문+

[학습노트]는 학습한 강의 내용을 정리해 둔 글입니다. 해당 글은 K-MOOC [파이썬으로 배우는 기계학습 입문 Plus+] 2주차 강의를 수강하며 정리한 내용입니다. 제 임의로 요약 및 정리를 한 글로 정

ideaspread.tistory.com

 

3-1. 인공뉴런의 동작원리

[인공 뉴런의 동작 원리]

지난 주차 강의에서 마일 변환 함수(y = 1.61 x)로 인공 뉴런을 모델링하였음

뉴런은 이처럼 간단한 함수와 같이 작동함

- 입력에 대한 곱셈을 합산하고, 임계값과 비교하여 출력

 

단순한 뉴런이 여러 개 모이면 마치 꿈의 함수 제조기처럼 작동함

 

마일 함수와 같은 아래의 간단한 형태의 함수가 있다.

$$y = w_{1} x_{1}$$

- $w_{1}$을 가중치 (weights)

- 수학의 일차 함수와 같은 형식 ( $y= ax$, a -> 기울기)

- 입력 x와 가중치 w의 첨자 1이 붙어있다 -> 앞으로 해당 값들이 하나가 아닌 점점 많아질 것이라는 의미

 

[입력이 2개인 경우]

$$y = \begin{Bmatrix}0 &&& if \;  (w_1x_1 + w_2x_2 \leqslant \theta) 
 \\1 &&& if \;  (w_1x_1 + w_2x_2 >  \theta) 
\end{Bmatrix}$$

순입력(net input) : $w1x1 + w2x2$

임계값(threshold) : θ

활성화(activated) : > θ

 

 

[인공 신경망]

- 인공 신경망에서 가중치는 중요한 역할을 함

- 여러 개의 입력, 가중치, 많은 뉴런이 연결되어 완성됨

- 기계 학습은 최종적으로 각 노드를 연결하는 가중치를 찾아내는 일 ( => 꿈의 함수를 찾아내는 길)

 

출처 : 위키백과 - 인공 신경망

$$y = \begin{Bmatrix}0 &&& if \;  (w_1x_1 + w_2x_2 \leqslant \theta) 
 \\1 &&& if \;  (w_1x_1 + w_2x_2 >  \theta) 
\end{Bmatrix}$$

해당 식의 θ를 넘겨서

$$y = \begin{Bmatrix}0 &&& if \;  (b + w_1x_1 + w_2x_2 \leqslant 0) 
 \\1 &&& if \;  (b + w_1x_1 + w_2x_2 >  0) 
\end{Bmatrix}$$

으로 변경할 경우

b를 편향(bisas)이라 부름

위 그림처럼 편향을 입력의 한 부분이라 간주하고 계산할 수 있다

- 즉 편향은 인공 뉴런에서 항상 켜져 있는 노드라고 볼 수 있음

- 입력값과는 다르게 항상 편향 b를 곱해서 더하게 됨

 

[예제 문제]

- 문제 1

w = (w1, w2) = (0.6, 0.3)

θ = 0.5

(x1, x2) = (0,1)

위의 경우 해당 뉴런이 활성화되는가?

 

(풀이)

net input = w1x1 + w2x2 = 0.5 * 0 + 0.3 * 1 = 0.3 < θ

즉 뉴런이 활성화되지 않는다.

 

[AND 게이트 뉴런 구현하기]

$$y = \begin{Bmatrix}0 &&& if \;  (b + w_1x_1 + w_2x_2 \leqslant 0) 
 \\1 &&& if \;  (b + w_1x_1 + w_2x_2 >  0) 
\end{Bmatrix}$$

 

입력 x1, x2를 받아 진리표와 같이 y를 출력하게 만들면 된다

 

이를 만족하는 w1, w1, b가 너무 많다

따라서 여러 예시중

 

(1) (w1, w2) = (0.5, 0.5), b = -0.7 이 해당한다.

 

이를 가지고 AND 게이트 뉴런을 만들어 본다.

- 인공뉴런의 가중치 w1, w2는 입력이 결과에 얼마나 영향을 주게 할지 조절하는 매개변수에 해당

- 편향은 뉴런이 얼마나 쉽게 활성화되는지 조정

 

$$y = \begin{Bmatrix}0 &&& if \;  (-0.7 + 0.5x_1 + 0.5x_2 \leqslant 0) 
 \\1 &&& if \;  (-0.7 + 0.5x_1 + 0.5x_2 >  0) 
\end{Bmatrix}$$

->

y = ax + b (x1을 독립변수, x2는 종속변수)

->

 

$-0.7 + 0.5x_1 + 0.5x_2 = 0$

                                       $x_2 = -0.5/0.5x_1 + 0.7/0.5$

                                       $x_2 =-x_1 + 1.4$

 

이처럼 신경망의 가중치와 편향을 구하는 방법을 기계학습의 분류(Classification)라고 한다.

 

3-2. 미분

 

해당 파트는 미분을 배우지 않았거나, 까먹은 사람을 위한 부분

(별도로 정리할 내용은 없어서 본 포스팅에서는 패스했습니다.)

 

3-3. 활성화 함수

[체온 변환기]

섭씨를 화시로 변환하는 수식 (1)

섭씨 C를 화시 F라 변환 (F = 9/5C + 32)

 

if C >= 0 일 경우만 정확히 작동한다고 전재

영하에서는 항상 32도로 고정되어 출력

영상일 경우에만 활성화됨

 

F = { 9/5C + 32  if C >= 0

       { 32.             otherwise

 

 

뉴런의 수식(2)

z = w0x0 + w1x1

단, x0 = 1, w0 = b

y = h(z) : y = h of z라고 부름. (활성화 함수 : activation function)

 

뉴런의 활성화 함수가 영상에서만 작동한다는 조건을 담당하는 역할을 함.

체온 변환기의 임계값 : 섭씨 0도, 화시 32도

 

체온 변환기 수식(3)

z = 32 + 9/5x1

y = h(z) { 32 if z < 32).

              { z if z >= 32).

 

[체온 변환기 C2F 뉴런 구현]

h(z)는 활성화 함수

출력하기 직전에 acrivate 함수를 출력

2개의 파이썬 함수로 인공뉴런 1개를 구현한 것

 

작동하는지 테스트 셋으로 확인

 

시각화 코드

[활성화 함수]

[시그모이드(sigmoid) 함수]

출처 : 위키백과 시그모이드 함수

e : 자연 상수, 2.7182...

단순한 함수

 

S(0) = 1/2

S(x -> 무한)  = 1

S(x -> 음의 무한) = 0

 

0에서 1 범위 내에서 출력됨

시그모이드 함수 시각화

S모양 곡선이라 이러한 곡선을 시그모이드 곡선이라고 함

- 입력 값을 0보다 크고 1보다 작은 미분 가능한 수로 변환

- 로지스틱 분류(나중에 공부하는 부분), 비용함수에 사용

- 출력값이 0과 1 사이 (확률로 해석하기 좋음)

시그모이드 함수 미분 공식

 

이미지 출처 :&nbsp;https://tobeagoodmom.tistory.com/2185

시그모이드 함수와 도함수

미분계수(오렌지색) - 최댓값 0.25

이미지 출처 :&nbsp;https://xangmin.tistory.com/135

소멸하는 기울기라는 문제가 발생 - 지금은 해결됨

 

[계단 함수]

- 가장 간단한 활성화 함수

 

단극성, 양극성 계단 함수가 있음

입력값이 임계값보다 작을 때 0이나 -1이 출력, 입계값 θ에 도달하면 출력은 1로 급등

발사(fire) : 입력이 임계값에 도달해서, 뉴런이 신호를 전달하기 시작한 것

 

step function : 그래프가 계단처럼 생겨서

 

[단극성 및 양극성 계단 함수]

$$z = w_{0}x_{0} + w_{1}x_{1} + w_{2}x_{2} + ...\\
y = h(z)$$ 

 

단극성 : $$ h(x) = \begin{Bmatrix}
1  &&&    if \;\;\; z \geqslant 0
\\ 0&&&otherwise
\end{Bmatrix} $$

 

양극성 : $$ h(x) = \begin{Bmatrix}
1  &&&    if \;\;\; z \geqslant 0
\\ -1&&&otherwise
\end{Bmatrix} $$

 

단극성 계단 함수 구현
배열로 보낼시 에러 발생

[넘파이 불린 인덱싱 이용]

- 배열의 로직

- 방법 1

- 방법 2

[완성된 코드]

- 방법 1

- 방법 2

[쌍곡탄젠트 (tanh)]

$$tanh(x) = \frac{1 - \varrho ^ {-x}}{1 + \varrho ^ {-x}}
= \frac{2}{1 + \varrho ^ {-2x}} - 1 \\
tanh(x) = 2sigmoid(2x)-1$$

- 시그모이드와 유사

시그모이드는 출력범위(0,1)이지만 쌍곡탄젠트는 출력범위 (-1,1)

시그모이드와 비교하면 쌍곡탄젠트는 빠르게 수렴하는 특성이 있어 학습이 빠름

 

[쌍곡탄젠트 미분]

$$\frac{d}{dx}tanh(x) = 1 - tanh^{2}(x)$$

그래프 비교

쌍곡탄젠트 함수 역시 시그모이드 함수처럼 소명하는 기울기 문제 발생

- 입력 값을 1보다 작도록 변형하는 영역에서, 그 값을 변형하지 않고 그대로 유지하도록 하는 것

(강의 내용이 무슨 말인지 이해를 못 했는데, 별도로 이해한 것으로는

시그모이드와 쌍곡탄젠트의 출력이 1에 가까워질 수 록 기울기가 완만해지다 결국 0에 다다르게 되어, 학습이 점점 느려진다는 의미로 받아들였습니다.)

 

- 이 문제를 해결하기 위한 방법 발견

[렐루(Relu) 함수] 

$$h(x) = \begin{Bmatrix} x &&&if\; x>=0
 \\0 &&& otherwise
\end{Bmatrix}$$

특성

- '소멸하는 기울기' 문제가 없음

- 선형함수 - 간단한 미분

- 구현이 간단하며 계산도 빠름

 


다음 강의 : 퍼셉트론 학습 및 구현

이전 강의 보기 :

https://ideaspread.tistory.com/6

 

[2주차 학습노트 - 넘파이와 뉴론 기초] 파이썬으로 배우는 기계학습 입문+

[학습노트]는 학습한 강의 내용을 정리해 둔 글입니다. 해당 글은 K-MOOC [파이썬으로 배우는 기계학습 입문 Plus+] 2주차 강의를 수강하며 정리한 내용입니다. 제 임의로 요약 및 정리를 한 글로 정

ideaspread.tistory.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함