티스토리 뷰
[학습노트]는 학습한 강의 내용을 정리해 둔 글입니다.
해당 글은 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)는 활성화 함수
2개의 파이썬 함수로 인공뉴런 1개를 구현한 것
작동하는지 테스트 셋으로 확인
[활성화 함수]
[시그모이드(sigmoid) 함수]
e : 자연 상수, 2.7182...
단순한 함수
S(0) = 1/2
S(x -> 무한) = 1
S(x -> 음의 무한) = 0
0에서 1 범위 내에서 출력됨
S모양 곡선이라 이러한 곡선을 시그모이드 곡선이라고 함
- 입력 값을 0보다 크고 1보다 작은 미분 가능한 수로 변환
- 로지스틱 분류(나중에 공부하는 부분), 비용함수에 사용
- 출력값이 0과 1 사이 (확률로 해석하기 좋음)
시그모이드 함수와 도함수
미분계수(오렌지색) - 최댓값 0.25
소멸하는 기울기라는 문제가 발생 - 지금은 해결됨
[계단 함수]
- 가장 간단한 활성화 함수
단극성, 양극성 계단 함수가 있음
입력값이 임계값보다 작을 때 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
'학습노트 > 인공지능' 카테고리의 다른 글
[2주차 학습노트 - 넘파이와 뉴론 기초] 파이썬으로 배우는 기계학습 입문+ (0) | 2023.02.11 |
---|---|
[1주차 학습노트 - 기계학습과 개발환경] 파이썬으로 배우는 기계학습 입문+ (0) | 2023.02.10 |
- Total
- Today
- Yesterday
- vrchat creator companion
- 머신러닝
- KMOOC
- 언리얼
- 언리얼엔진5
- 맵 제작
- 주피터 노트북
- 브이알쳇
- VRchat
- 인공지능
- latex
- unity
- 세팅
- UE4
- 파이썬
- 유니티
- UE5
- VRChat경로설정
- 기계학습
- 정보와 지식
- 학습노트
- 아나콘다
- 수식
- 언리얼 배우기
- VCC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |