[고등학교 인공지능 수학, 교과서] 시안-아이디어-모델 (예)
고등학교 인공지능 수학
|
Ⅰ. 인공지능과 행렬 Ⅱ. 인공지능과 미적분 Ⅲ. 인공지능과 확률/통계 |
... AI 교육 전제 구성 ....
...
“행렬식(determinant)”이라는 용어를 처음으로 소개한 사람은 Gauss였지만 현대적 의미에서의 “행렬식”이라는 용어를 사용하기 시작한 사람은 1812년 Cauchy였다. 그는 초기 연구결과들을 다시 증명했고, 계수행렬을 “tableau”라고 불렀으며, 고유값(eigenvalue)을 발견했고, “모든 실계수 대칭행렬은 대각화가능함(diagonalizable)”을 증명했다. 1821년 “tableau”란 이름으로 행렬을 처음 소개한 Cauchy는 1841년 논문에서 두 개의 수직선을 행렬의 양옆에 그려 행렬식을 표기했고, , 그 표기법이 현재 행렬식을 표현하는 표준 기호가 되었다.
즉, 1812년에야 비로소 Cauchy가 행렬을 정의한 후 그 행렬의 행렬식을 정의하는 방식을 처음 적용하였다는 의미이다. 그러나 그 때는 현재 우리가 쓰고 있는 편리한 행렬의 표기법을 쓰지 않았기 때문에 널리 이용되지 않고 있다가 1851년에 가서야 J.J. Sylvester가 제안한 표기법이 보편화되면서 발전하였다.
Ⅰ. 인공지능과 행렬
(by 이상구, 이재화, 고호경)
학습목표
01. ...
10. 행렬을 이용하여 연립방정식의 최적해를 구할 수 있다.
1. ** [12인수04-01]** [12인수04-02]** [12인수04-03]**
2. ** [12인수04-04] [12인수04-05] |
교과서 시안 작업
고호경 : 성취기준과 교육과정 문서, ... 1절 ...
오세준 : 2절 ...
(가) 학습 요소
***
주요 논의 사항
...
1. 행렬과 벡터
2. 행렬과 연립방정식
인공지능 소개 글
인공지능(Artificial Intelligence, AI)은 인간처럼 사고하는 시스템을 말하는 것이다. 사실 인공지능은 우리가 느끼지 못하는 사이에 이미 우리 삶의 거의 모든 곳에서 사용되고 있다. 예를 들어, 우리가 매일 사용하는 스마트폰에는 빅스비(Bixby)나 시리(Siri)와 같은 음성인식 비서가 있고, 사진 속의 얼굴을 인식하는 프로그램이 있으며, 보고 싶은 동영상, 음악을 추천해주는 시스템 등이 있다. 또한 우리는 인공지능 로봇이 앞으로 다양하고 힘든 일을 우리 대신 실제로 해줄 것을 잘 알고 있다. 이미 공장, 도로, 심지어 집에서도 로봇이 우리를 위해 일하고 있으며, 미래에 인공지능 로봇이 직장에서의 우리 업무까지 대신하게 되면, 우리가 출근할 이유가 없어질지도 모른다. 그러나 우리는 인공지능에 대해 무작정 두려워하기보다 인공지능이 도대체 무엇인지 그리고 어떻게 작동되는지 기본 원리를 이해 할 필요가 있다. 우리는 이 책에서 인공지능을 이해하기 위해 필요한 수학적인 기초 지식을 제공하려고 한다.
인공지능 관련 생각거리
인공지능 로봇, 빅데이터, 사물인터넷, 3D 프린팅, 드론, 무인자동차, 스마트시티 등의 분야는 모두 수학과 정보통신기술의 접목을 통하여 일상의 문제를 해결하는 것이라고 할 수 있다. 인공지능은 매직(Magic)이 아니라 사실 수학이다. 실제로 인공지능의 발전은 1990년대 들어서 선형대수학, 확률/통계, 최적화 이론, 이산수학 등을 기반으로 하는 수학적 지식에 기인한 통계적 학습 이론(statistical learning theory), 서포트 벡터 머신(support vector machine), 확률 그래프 모델(probabilistic graphical model) 등의 수학적 모형과 알고리즘의 개발에 힘입어 암흑기를 극복하였다. 특히, SVD, Rank reduction, 경사하강법, 공분산 행렬, PCA, 최적화 이론과 같은 수학적 지식은 머신러닝과 딥러닝을 포함한 인공지능의 발전에 결정적인 기여를 하였다.
순서쌍, 벡터
데이터는 순서쌍으로 표현할 수 있다. 예를 들어, 어떤 사람의 키, 몸무게, 연령, 성별 등은 그 사람에 관한 데이터가 될 수 있고, 이는 다음과 같이 순서쌍으로 나타낼 수 있다. 여기서 키, 몸무게, 연령, 성별 각각은 데이터를 이루는 성분이다.
사람 |
키(㎝) |
몸무게(㎏) |
연령(세) |
성별 (1:남성, 2:여성) |
|
데이터의 표현 |
김×× |
160 |
80 |
19 |
1 |
→ |
|
이×× |
170 |
70 |
27 |
2 |
→ |
|
박×× |
180 |
56 |
30 |
1 |
→ |
|
특히 성분이 2개(3개)로 이루어진 2차원(3차원) 데이터는 좌표평면(좌표공간)상의 한 점을 나타낸다. 마찬가지로 4차원 이상의 데이터는 우리 눈으로 볼 수 있도록 시각화할 수 없지만, 고차원의 공간상에 놓인 점이라고 볼 수 있다. 예를 들어, 아래에서 ,
를 성분으로 하는 데이터
는 좌표평면 상의 한 점
를 나타낸다. 이때 시작점을 원점
, 끝점을
로 하는 화살표로 나타낸 것을 벡터라 하고
로 표기한다. 그리고 벡터를 이루는 각각의 성분은 하나의 숫자로 이루어져 있는데 이를 스칼라라고 한다.
행렬, 텐서
앞서 언급한 사람에 대한 데이터를 하나로 모아 다음과 같이 직사각형 모양으로 배열할 수 있으며 이를 행렬이라 한다. 즉 행렬은 벡터를 여러 개 쌓아서 만든 것으로 이해해도 된다. 이때 가로를 행, 세로를 열이라고 하고, 행의 개수가 , 열의 개수가
인 행렬을 크기가
인 행렬이라고 한다. 따라서 벡터는
행렬(행벡터) 또는
행렬(열벡터)로도 이해할 수 있다.
또한 행렬은 디지털 이미지를 유용하게 나타낼 수 있다. 예를 들어, 디지털 이미지를 확대할 때 나타나는 작은 격자를 픽셀(pixel, 또는 화소)라 하는데, 각 픽셀에는 이미지의 밝은 정도를 나타내는 숫자가 들어 있다고 볼 수 있다. 흑백 이미지는 하나의 행렬로 나타낼 수 있고, 컬러 이미지는 빨강, 녹색, 파랑, 3개의 채널(channel)로 표현되어 세 개의 행렬이 3차원으로 겹쳐진 모양을 갖는다. 이를 텐서(tensor)라 한다.
[흑백이미지] https://nrsyed.com/2018/02/17/kernels-in-image-processing/
[컬러이미지] https://lisaong.github.io/mldds-courseware/01_GettingStarted/numpy-tensor-slicing.slides.html
행렬 연산
행렬에는 다음과 같은 연산이 정의된다.
(1) 실수배: 행렬의 각 성분에 실수 를 곱한다.
임의의 실수 에 대하여
,
(2) 덧셈: 두 행렬의 크기가 같아야 한다. 대응하는 성분끼리 더한다.
,
(3) 곱: 앞의 행렬의 열의 개수와 뒤의 행렬의 행의 개수가 같아야 한다.
그림으로 이해하면, 앞의 행렬에서는 행을 따라서 뒤의 행렬에선 열을 따라서 곱하면 된다.
의
행,
열의 성분은
이러한 연산방법은 마치 한글의 첫 번째 자음인 ㄱ자를 연상하게 한다. 따라서 우리는 이 법칙을 King Sejong의 법칙이라고도 부르기로 하자.
다음 행렬의 덧셈과 실수배, 행렬곱을 계산하여라.
(1)
(2)
(3)
직접 계산한 결과와 코딩 프로그램을 이용하여 계산한 결과를 비교하여라.
| Coding 실습 http://matrix.skku.ac.kr/KOFAC/
에서 실습
행렬 ,
에 대해
를 계산하여라.
직접 계산한 결과와 코딩 프로그램을 이용하여 계산한 결과를 비교하여라.
| Coding 실습 http://matrix.skku.ac.kr/KOFAC/
에서 실습
=
수동이의 하루 평균 수면시간과 운동시간 그리고 칼로리 섭취량이 체중을 조사했던 행렬 가 아래처럼 나타났다.
하루 평균 수면시간 8시간, 운동시간 1시간, 칼로리 섭취량 1500kcal일 때, 행렬 를 이용해 계산한 예측값은 체중 71.9kg, 혈압은 115.83mmHg인데, 실제 값은 체중 72kg, 혈압 116mmHg이었다. 예측값이 정답과 같아지도록 행렬
의 값을 조정해보자.
인공지능에 다가가기
폴리매스 홈페이지의 코딩창에서 문제를 코딩으로 표현해 보세요. 그 다음, 행렬 A에서 소수점 둘째자리의 값들을 아주 조금씩 수정해보고 그 결과값을 정답과 비교해보면서 행렬 A의 값을 조정하면서 인공지능이 하는 역할을 직접 체험해 볼 수 있습니다. 복잡한 문제일수록, 행렬 곱으로 표현되는 연산망이 더욱 복잡하고 깊어집니다. 바로 여기에서 딥러닝이라는 용어가 비롯되었습니다.
|
A = matrix( m, n , [ 원소1, 원소2, … ] ) |
❶ 행의 수가 |
x = vector ([ |
❷ 원소 |
C = A*B |
❸ 두 행렬을 곱해 행렬
|
What’s Next?
행렬 관련하여 11학년, 12학년, 대학에서 배울 내용이나, 관련 AI 에서의 실제 코드. Kaggle: Your Machine Learning and Data Science Community https://www.kaggle.com/
행렬을 이용하여 데이터를 표현할 수 있으며, 앞으로 데이터 분석을 위하여 필요한 행렬 연산(행렬곱, 행렬식, 역행렬, 고윳값, 고유벡터, 대각화 등)을 수행할 수 있다. 관련 내용은 11학년, 12학년, 대학 1, 2 학년에 배운다. (참고 http://matrix.skku.ac.kr/K-MOOC-LA/ 에 이어서 나올 고등학생/K-MOOC-Math4AI/ )
|
이번에 코딩으로 정복해 볼 수학 개념은 ‘1차 연립방정식’입니다. 1차 연립방정식은 미지수가 2개 이상인 1차 방정식의 모임을 뜻해요. 보통 미지수가 하나인 1차 방정식은 등식의 성질을 이용해 쉽게 해를 구할 수 있지만, 연립방정식은 방정식을 서로 더하거나 빼서 미지수를 하나로 만든 뒤 해를 구하는 ‘소거법’으로 해를 구하지요.
소거법으로 미지수가 무척 많은 연립방정식의 해를 구하려면 시간이 오래 걸리기 때문에 보통 ‘행렬’을 이용합니다. 행렬은 수를 행과 열에 맞춰 나열해 놓은 것으로, 특히 행 또는 열 1개로 이뤄진 행렬을 ‘벡터’라고 불러요.
선형연립방정식을 구성하는 식은 모두 같은 미지수를 가졌기 때문에 미지수 앞에 붙어있는 계수와 등호 오른쪽에 있는 상수가 해를 결정합니다. 독일 수학자 가우스는 선형연립방정식의 계수를 모아 ‘계수 행렬’을 만들고 상수를 모아 ‘상수 벡터’로 만든 뒤, 직접 만든 행렬 전용 소거법인 '가우스 소거법'을 이용해 해를 구했습니다. 놀라운 사실은 가우스보다 앞서 동양의 오래된 수학책인 '구장산술'에서 행렬을 이용해 해를 구하는 방법을 소개했다는 건데요. 구장산술에서는 행렬을 '방정'이라고 불렀고, 가우스와 똑같은 방법으로 선형연립방정식의 해를 구했습니다. 지금 '방정식'이라는 용어가 이곳에서 유래한 거지요.
가우스 소거법은 쉽지만 지루한 긴 과정을 거쳐야 하지만, 그 절차를 코드로 담은 코딩 명령어를 이용하면 계수 행렬과 상수 벡터만 입력해서 쉽게 해를 구할 수 있습니다. 자, 그럼 구장산술에 수록된 미지수가 3개인 선형연립방정식을 소거법과 코딩, 두 가지 방법으로 풀어보도록 하죠!
<구장산술 방정 문제>
소 2마리와 양 5마리를 팔아 돼지 13마리를 사면 1000전이 남고(㉠), 소 3마리와 돼지 3마리를 팔아 양 9마리를 사면 돈이 남지 않으며(㉡) 양 6마리와 돼지 8마리를 팔아 소 5마리를 사면 600전이 모자란다(㉢). 소, 양, 돼지는 각각 얼마일까? |
❶선형연립방정식 만들기 소, 양, 돼지의 값을 각각 x, y, z로 놓고 식을 세운다. 2x+5y-13z = 1000 … ㉠ 3x-9y+3z = 0 … ㉡ -5x+6y+8z = -600 … ㉢ |
❷㉡을 x에 대해 정리한 뒤 ㉠에 대입 x=3y-z 2(3y-z)+5y-13z = 1000 → 11y-15z = 1000 |
❸㉡을 x에 대해 정리한 뒤 ㉢에 대입 x=3y-z -5(3y-z)+6y+8z=-600 → -9y+13z=-600 |
❹해 구하기 비슷한 방법으로 ❷, ❸의 식에서 y를 제거하고 해를 구한다. ∴ z=300, y=500, x=1200 |
코딩으로 선형연립방정식 정복하기
선형연립방정식을 푸는 코딩 명령어는 다음과 같다. 코딩 수학 게시물에 있는 Sage 코딩창 또는 sage.skku.edu의 코딩창에 아래 명령어를 입력해 선형연립방정식의 해을 구해보자.
a1x + b1y + c1z = d1 |
⇔ |
A=matrix([[a1, b1, c1], [a2, b2, c2], [a3, b3, c3]]) |
a2x + b2y + c2z = d2 |
B=vector([d1, d2, d3]) |
|
a3x + b3y + c3z = d3 |
A.solve_right(B) |
2x + 5y - 13z = 1000 |
3x – 9y + 3z = 0 |
-5x + 6y + 8z = -600 |
❶ 각 행에 있는 계수로 행렬을 만들고, 상수항은 행 1개로 이뤄진 행렬인 ‘벡터’로 지정하자. 각 수는 [와 ]안에 순서대로 적어야 한다.
1 |
A=matrix([[2, 5, -13], [3, -9, 3], [-5, 6, 8]]) |
2 |
B=vector([1000, 0, -600]) |
Evaluate |
❷ 선형연립방정식을 푸는 코딩 명령어를 입력했으면 Evaluate 버튼을 클릭한다. 구한 결과는 x=1200, y=500, z=300이다.
1 |
A=matrix([[2, 5, -13], [3, -9, 3], [-5, 6, 8]]) |
2 |
B=vector([1000, 0, -600]) |
3 |
A.solve_right(B) # 방정식의 해를 구하는 명령어 |
Evaluate |
(1200, 500, 300) # 답: x=1200, y=500, z=300
http://matrix.skku.ac.kr/KOFAC/
다음 선형연립방정식의 해를 계산하여라.
(1)
(2)
직접 계산한 결과와 코딩 프로그램을 이용하여 계산한 결과를 비교하여라.
| Coding 실습 http://matrix.skku.ac.kr/KOFAC/
에서 실습
[설명]
선형연립방정식의 해집합은 ① 해가 유일한 경우, ② 해가 무수히 많은 경우, ③ 해가 없는 경우, 이렇게 세 가지로 나뉜다. Sage 코딩 명령어 A.solve_right(b) 는 ①의 경우 유일해, ②의 경우는 무수히 많은 해 중 특수한 한 해를 제공해준다. 그러나 ③과 같이 해가 없는 경우는 다음과 같이 오류 메시지를 보여준다.
“ValueError: matrix equation has no solutions”
데이터 분석에서는 측정에서 생기는 오차의 영향을 줄이기 위하여, 대개 미지수의 개수보다 많은 데이터의 개수를 사용하므로, 방정식의 개수가 미지수의 개수보다 많은 (over-determined인) 선형연립방정식이 생긴다. 이런 경우, 일반적으로 선형연립방정식을 만족하는 유일한 해는 물론 단 하나의 해도 없는 경우가 대부분이므로 A.solve_right(b) 로는 해를 기대할 수 없다. 대신 를 만족하는 근사해를 찾는데 이 문제를 최소제곱문제(least squares problem)라 한다. 이때는 위의 활동하기 3에서 사용한 코드 (A.transpose()*A).solve_right(A.transpose()*b) 를 사용하여 근사해를 구하면 된다.
Copyright @ 2020 SKKU Matrix Lab. All rights reserved.
Made by Manager: Prof. Sang-Gu Lee with Dr. Jae Hwa Lee
01 벡터의 정사영
⦁벡터를 정사영시킬 수 있다.
⦁최소제곱직선을 구할 수 있다.
벡터를 어떻게 정사영시킬 수 있을까?
생 각 열 기
도형의 각 점에서 한 평면에 내린 수선의 발이 그리는 도형. 얼핏 보면 평면 위로의 그림자와 매우 유사해 보인다. 실제로 위의 그림에서도 위쪽에 불빛이 있다고 가정하고 생각하면 정사영된 도형은 그림자를 연상하면 된다.
https://j1w2k3.tistory.com/478
http://matrix.skku.ac.kr/LA-Lab/7-5/7-5.htm
http://matrix.skku.ac.kr/LA-Lab/7-6/7-6.htm
좌표공간에서 원점 와 두 점
에 대하여 점
에서 선분
에 내린 수선의 발을
라 하자.
두 벡터 (
)와
에 대하여
벡터 를
위로의
의 정사영이라 하고
=
로 나타낸다.
이때 벡터 를
에 수직인
의 벡터성분이라 한다.
따라서 는 두 벡터의 합
로 나타내진다.
한편 두 벡터 ,
는 서로 평행하므로,
이다.
또, 는
와 수직이므로,
이고,
이다.
따라서 이고,
이다.
이상을 정리하면 다음과 같다.
,
에 대하여
위로의
의 정사영
와
에 수직인
의 벡터성분
를 구하시오.
풀이 이므로
Coding 해보기 |
다음은 위의 예제1을 coding 프로그램을 이용하여 구하는 과정을 나타낸 것이다. |
Coding 과정 : http://matrix.skku.ac.kr/KOFAC/ |
벡터의 정사영을 이용하여 점 와 평면
사이의 거리를 구해보자.
평면 위의 점 에 대하여
라고 하고, 평면
의 법선벡터를
라고 하면,
이다.
이때, 이고,
이므로
점 와 평면
사이의 거리
는
이다.
이상을 정리하면 다음과 같다.
2 점 에서 평면
에 이르는 거리
를 구하시오.
풀이 이므로
이다.
Coding 해보기 |
위의 <예제1>을 코딩을 이용하여 구해보자. |
Coding 과정 http://matrix.skku.ac.kr/2018-album/LA-Sec-1-3-lab.html
Coding 과정 http://matrix.skku.ac.kr/2018-album/LA-Sec-1-3-lab.html |
최소제곱직선을 어떻게 구할 수 있을까?
좌표공간에서 세 점 이 주어졌을 때, 직선과 세 점 사이의 거리를 제곱하여 더한 합이 최소가 되도록 하는 직선을 구하는 문제를 생각할 수 있다. 이와 같이 어떤 데이터들이 주어졌을 때, 데이터와의 오차가 최소가 되도록 하는 직선을 최소제곱직선이라고 한다.
고등학교 성적을 , 대학교 성적을
, 직선
을 최소제곱직선이라 하고, 주어진 데이터를 아래와 같이 행렬로 나타냈을 때,
,
,
의 최솟값을 구하면 되며, 최소가 되도록 하는
의 값을
의 최소제곱해라고 한다.
이제 코딩을 이용하여 최소제곱직선을 구해보자.
Coding 해보기 |
컴퓨터 과학 전공 학생 105명의 고등학교 성적(GPA)과 대학교 성적(GPA)의 데이터에 대하여 sage를 이용하여 최소제곱직선을 구해보자. |
[자료출처] http://onlinestatbook.com/2/regression/intro.html http://onlinestatbook.com/2/case_studies/sat.html
Sage 코드 ( http://matrix.skku.ac.kr/KOFAC/ ) |
위의 결과에서 최소제곱직선은 임을 알 수 있다.
03 |
데이터 유사도
|
⦁사잇각을 활용하여 데이터의 유사도를 구할 수 있다. |
데이터의 유사도를 어떻게 구할 수 있을까?
생 각 열 기
|
|
|
위의 생각열기와 같이 데이터를 분석하는 경우 데이터 사이의 거리를 계산하여 유사도를 측정하게 되면 정확하게 비교하기 힘들다. 즉, 데이터 사이의 거리보다는 데이터 사이의 패턴을 고려하여 유사도를 측정하는 방법이 필요하다.
이제 데이터의 패턴(방향)을 측정하는 방법에 대하여 알아보자.
벡터로 표현된 두 데이터
에 대하여 두 벡터가 이루는 사잇각을
라고 하면,
이다. 위 식에서 두 벡터 와
는 크기가 1인 단위벡터이므로 데이터 사이의 거리는 무시하고 데이터의 패턴만을 고려하게 된다.
이때, 가 작으면 데이터의 유사도가 높고,
가 크면 데이터의 유사도가 낮다고 판단할 수 있으며
로 유사도를 측정한다. 이를 코사인 유사도라고 한다.
이상을 정리하면 다음과 같다.
두 데이터 중에서
와 코사인 유사도가
높은 데이터를 말하시오.
풀이 두 벡터 ,
와
가 이루는 각의 크기를 각각
,
라고 하면,
이므로
이므로
이므로 데이터
가 더 유사도가 높다.
|
|
|
|
어떤 데이터들이 코사인 유사도를 사용하여 분석이 가능할지 생각해보자. |
...
Copyright @ 2020 SKKU Matrix Lab. All rights reserved.
Made by Manager: Prof. Sang-Gu Lee with Dr. Jae Hwa Lee
Ⅱ. 인공지능과 미적분
(by 김영록, ... & 이상구)
1. 미적분과 인공지능
학습목표
01. 수렴의 의미를 알고, 주어진 식의 극한 값을 근사할 수 있다.
02. 미분계수, 접선, 도함수를 구할 수 있다.
03. 변수가 하나인 함수의 미분(상미분)을 할 수 있다.
04. 변수가 두 개인 함수의 전미분을 할 수 있다.
05. 변수가 두 개인 함수의 편미분을 할 수 있다.
06. 주어진 데이터의 극댓값, 극솟값을 찾아 미분계수의 변화를 파악할 수 있다.
07. 함수의 최댓값과 최솟값을 구할 수 있다.
08. 초등함수의 미분공식을 이용하여 미분계수를 구할 수 있다.
09. 합성 함수, 활성화 함수의 미분을 할 수 있다.
10. 미분을 이용한 경사하강법을 이해할 수 있다.
㰊± 미분 [12인수04-01]미분의 의미를 이해한다. [12인수04-02]미분을 이용하여 그래프의 개형을 그릴 수 있다. [12인수04-03]변수가 두 개인 함수에서 편미분과 전미분의 의미를 이해한다.
㰊² 미분과 딥러닝 [12인수04-04]미분과 경사하강법을 이용하여 최적화 문제를 해결할 수 있다. [12인수04-05]딥러닝에서 활성화 함수의 역할을 이해한다. |
(가) 학습 요소
함수의 극한, 평균변화율과 미분계수, 도함수의 정의, 과 상수함수의 도함수, 함수의 실수배, 합, 차의 미분, 함수의 곱의 미분, 접선의 방정식, 함수의 증가와 감소, 극대와 극소, 함수의 그래프와 최대 최소, 무리수 e, 지수함수와 로그함수의 극한, 지수함수와 로그함수의 미분, 활성화 함수, 시그모이드 함수, 몫의 미분법, 합성함수의 미분법, 편미분, 전미분
02 |
적분과 코딩
|
⦁코딩을 이용하여 적분할 수 있다. |
코딩을 이용하여 넓이와 부피를 어떻게 구할 수 있을까?
생 각 열 기
케플러(Johannes Kepler, 1571-1630) 수학자이자 천문학자
|
|
|
위의 생각열기와 같은 방법은 적분의 개념과 동일하며 이를 이용하면 도형의 넓이나 부피를 구할 수 있다.
이제 코딩을 이용하여 도형의 넓이와 부피를 구해보자.
Coding 해보기 1 |
구간 (0, 5)에서 함수 |
Coding 과정 |
Coding 해보기 2 |
구간 (0, 4)에서 함수 |
Coding 과정 |
Coding 해보기 3 |
적분 명령어를 이용하여 (0, 4) 구간에서 |
Coding 과정 |
Coding 해보기 4 |
구간 (0, 4)에서 함수 |
Coding 과정 (http://matrix.skku.ac.kr/KOFAC/) |
Coding 해보기 5 |
앞에서 그린 회전체의 부피를, 적분을 통해 구해보자. |
Coding 과정 (http://matrix.skku.ac.kr/KOFAC/) |
Coding 해보기 6 |
회전체부피와 적분값을 비교하여 보자. |
Coding 과정 |
01 경사하강법
◎ 학습목표 ● 선형 회귀를 이해할 수 있다.
● 미분을 이용한 경사하강법을 이해할 수 있다.
아이스크림의 판매량을 어떻게 예상할 수 있을까?
일반적으로 날씨가 더우면 아이스크림의 판매량은 증가할 것으로 예상할 수 있다. 실제로 다음은 어떤 슈퍼마켓의 온도에 따른 아이스크림 판매량을 조사한 것이다.
온도 |
판매량 |
5 |
7 |
9 |
9 |
11 |
14 |
14 |
16 |
17 |
17 |
한 여름에 30도가 되었을 때, 이 슈퍼마켓의 아이스크림 판매량은 어느 정도로 예상되는가?
만약, 생각열기에서 보았던 산점도를 잘 설명할 수 있는 함수를 찾을 수 있다면 일기예보만 보고도 그날의 아이스크림 판매량을 예측할 수 있을 것이다. 이때, 모델에서 사용하는 함수의 유형에 따라 다양한 예측이 가능하다.
‘선형회귀’란 오른쪽 그림과 같이 일차함수를 이용하여 자료의 경향성을 예측하는 모델로, 입력 자료를 , 출력 자료를
라 할 때 선형회귀 식은 다음과 같이 쓸 수 있다.
계산의 편의를 위해 원점을 지나는 일차함수 꼴의 함수를 이용한 선형 회귀에 대해 알아보자.
|
|
|
위 그림에서 ,
,
중 자료의 경향성을 가장 잘 예측하는
꼴 함수는 무엇이라고 생각되는가? 단순히 그래프만 보아서는 어떤 것이 예측을 잘할 수 있을지 판단하기 어렵다. 따라서 수학적인 과정을 통해 최적의 함수를 찾아야 한다.
자료가 완전한 일차함수를 따르는 것이 아니므로 모든 점을 지나는 직선은 존재하지 않는다. 따라서 모델이 예측하는 값과 실제값 사이의 평균적인 오차를 가장 적게 만드는 함수를 찾아야 한다.
이러한 오차를 그래프에 나타내면 위와 같은데, 결국 빨간 선분들의 길이의 합이 최소가 되는 직선의 기울기 을 찾으면 된다는 것을 알 수 있다. 일차함수
, 자료의 좌표를 차례로
라 하면, 오차의 평균은
로 나타낼 수 있다. 일반적으로 미분을 쉽게 하도록 하기 위하여 절댓값 대신 오차를 제곱하고
을 곱한 식인
로 평균 오차를 계산한다. 이와 같이 모델의 예측값과 실제값 사이의 오차를 나타내는 함수를 손실함수라 한다.
이상을 일반화하여 정리하면, 다음과 같다.
|
|
|
아이스크림 자료에 대하여 일차함수
로 예측했을 때, 오차의 총합을 계산해보시오.
손실함수의 최솟값은 어떻게 찾을 수 있을까?
손실함수의 최솟값을 찾아보자.
일차함수를 라 하면, 아이스크림 자료에 대한 손실함수
는 다음과 같이 계산할 수 있다.
즉, 손실함수는 에 대한 이차함수로 표현되며 그 그래프는 오른쪽 그림과 같다.
완전제곱 또는 미분을 이용하여 계산하면 일 때
가 최소가 된다는 것을 알 수 있다.
이제, 우리가 찾은 모델을 원자료와 함께 그래프에 나타내면 다음과 같다.
우리가 찾은 모델을 이용하면 온도가 25인 날의 아이스크림 예상 판매량은 27.49개라 할 수 있다.
다음 자료를 가장 잘 예측하는
꼴 일차함수 모델을 찾아보시오.
온도 |
판매량 |
5 |
5 |
10 |
9 |
11 |
14 |
13 |
15 |
15 |
20 |
어두운 밤 산에서 내려가기 위한 방법은 무엇일까?
우리가 등산을 갔다가 불행히도 어두운 밤에 험난한 산속에서 조난을 당했다고 상상해보자. 어둡기 때문에 무엇도 제대로 보이지 않는다. 지도는 없지만 다행히 손전등이 있는 상황이다. 하지만 이 손전등은 너무나 작고 성능이 떨어져서 지형 전체를 보기는 커녕 불과 몇 미터 앞도 살피기 어려운 수준이다. (신경망 첫걸음 中)
이런 상황에서 산을 내려오기 위해 우리는 어떻게 행동해야 할까?
...
간단한 단순선형회귀 모델을 이용하여 경사하강법을 이해해보도록 하자.
아이스크림 예제에서 손실 함수는
와 같은 이차함수 형태로 나타났었다. 우리는 이미 이 손실 함수가
일 때 최소가 됨을 수학적으로 구하였지만, 여기서는 경사하강법이라는 반복적인 절차를 통해 동일한 값을 구해보자.
경사하강법은 어떤 값으로부터 시작하여
의 값을 감소시키는 방향으로
값을 조금씩 수정하는 작업을 10000번, 20000번 함으로써
가 최소가 되는
의 값을 찾아가는 것이다.
손실함수를 간단하게 로 가정하고, 경사하강법을 생각해보자.
에서의 미분계수는 음수(-)이며,
의 값을 줄이기 위해서는
의 값을 증가(+)시켜야 한다.
반대로 의 경우 미분계수는 양수(+)이며,
의 값을 줄이기 위해서는
의 값을 감소(-)시켜야 한다.
즉, 각 에서
의 미분계수의 부호의 반대 방향으로
의 값을 조금씩 변화시키면
의 최소 지점을 향해 이동할 수 있는 것이다.
이러한 절차를 수식으로 표현하면 다음과 같다.
위 식에서 는 학습률이라고 하는데
의 값을 한 번에 얼마만큼 수정하는지를 결정하는 값이다.
구체적인 계산을 통해 경사강하법을 확인해보자.
의 도함수는
이다. 학습률
로 두면,
의 값을 수정하는 식은 다음과 같다.
이제 에서부터 시작해보면,
...
조금씩 2에 가까이 가고 있음을 확인할 수 있다.
손실함수
에 대하여 최초의
의 값이
, 학습률
일 때,
의 값을 4번 수정해보자.
에서 학습률을
로 두면 어떤 일이 일어나는지 확인하고 학습률
을 어떻게 정해야할지 생각해보자.
[코딩 프로젝트] 다음은 생각열기에서 보았던 아이스크림 문제의 손실함수
에 대하여 경사하강법으로
의 값을 찾는 파이썬 코드다.
(1) 학습률, 반복횟수를 다양하게 변화시키며 값의 변화를 확인해보자.
(2) 주어진 코드를 변형하여 다음 자료에 대한 꼴 선형회귀모델을 찾아보자.
온도 |
판매량 |
5 |
5 |
10 |
9 |
11 |
14 |
13 |
15 |
15 |
20 |
어떤 함수의 그래프가 다음과 같을 때 점 A와 점 B에서 함수의 기울기를 활용하여 가장 낮은 값을 갖는 지점까지 이동하는 알고리즘을 설명해보자.
1) 점 A의 기울기는 양수인가? 음수인가? 답)
2) 점 B의 기울기는 양수인가? 음수인가? 답)
3) 어떤 점 C가 위 함수의 어딘가에 있을 때 y값이 가장 작은 지점 w로 이동하기 위해 다음과 같은 식을 세우고자 한다. 다음 식의 빈 칸에 들어갈 내용을 채워보자. 단, 함수의 기울기는 △라고 표기하고 lr은 보폭을 작게 줄이는 것에 해당한다.
답) w = w ( ) x lr
4) 3)의 식을 활용하여 함수 위의 어떤 점 C에서 함숫값이 가장 작은 점으로 이동하기 위한 알고리즘을 설명해보자.
단계 1) |
|
단계 2) |
|
단계 3) |
|
단계 4) |
|
위의 알고리즘에서 알 수 있듯이 어떤 지점에서 함수의 기울기를 알 수 있다면 그 함수 값이 가장 작은 점으로 이동할 수 있다.
[코딩 프로젝트] 함수 y = x2의 기울기는 2x라고 하고, 보폭에 해당하는 lr 값은 0.01이라고 가정한다. 이때 함수 위의 점 C에서 함수 값이 가장 작은 점으로 이동하는 과정을 코드로 확인해보자.
[참고사항]
▪ 경사하강법(gradient descent method)은 탐색방향을 로 택하는 경우이다. 앞서 살펴본 바와 같이 음의 그래디언트
방향이 점
에서
가 가장 가파르게 하강하는 방향이므로, 경사하강법 방법의 아이디어가 쉽게 이해된다(스키장에서 가장 빠르게 하강하는 길을 찾는 알고리즘의 아이디어와 일치한다). 다음은 경사하강법의 알고리즘이다.
[경사하강법] ( 의 의미는
같이
이
보다 아주 작다는 의미이다.)
[단계 1] 초기 근사해 와 허용오차(tolerance)
을 준다.
이라 한다.
[단계 2] 를 계산한다. 만일
이면, 알고리즘을 멈춘다.
[단계 3] line search를 수행하여 적절한 step-size 를 구한다.
[단계 4] ,
라 두고 [단계 2]로 이동한다.
▪ 다음은 주어진 함수에 경사하강법을 적용한 예시이다. 허용오차는 으로 주었다.
https://sagecell.sagemath.org/
이 점차 0에 수렴함을 확인할 수 있다.
[경사하강법은 탐색방향을 현재의 위치 의 근방에서 가장 가파르게 하강하는 방향
로 사용한다. 그러나 이 경우 해 근처에서 zigzag 현상이 발생하여 마지막 단계에서 수렴속도가 많이 늦어진다.
Copyright @ 2020 SKKU Matrix Lab. All rights reserved.
Made by Manager: Prof. Sang-Gu Lee with Dr. Jae Hwa Lee
Ⅲ. 인공지능과 확률/통계
(by 유연주, 박정숙, 오세준 & 이상구)
3단원 인공지능과 통계 시안 계획
단원 구조와 성취기준 (가안)
1 빅데이터와 도수분포표 [12인수03-01]도수분포표, 히스토그램, 도수분포다각형을 이용하여 그래프를 그리고 자료를 해석할 수 있다. [12인수03-02]상대도수를 이용하여 텍스트 데이터의 주제를 찾을 수 있다. 2 자료 분석과 최소제곱법 [12인수03-03]상관관계와 상관계수를 이용하여 자료 사이의 관계를 이해할 수 있다. [12인수03-04]최소제곱법을 통해 자료의 결과를 예측할 수 있다.. 3 지도학습과 인공신경망 [12인수03-05]지도학습과 경사하강법의 의미를 안다. [12인수03-06]인공신경망의 수학적 원리를 이해한다. |
교과서 시안 작업
박정숙 : 성취기준과 교육과정 문서, 2장 자료 분석과 최소제곱법
오세준 : 3장 지도학습과 인공신경망
주요 논의 사항
*3장에서 새로운 수학 내용을 구분하기 어려운 점이 있음 (일차결합, 활성화함수, 행렬 표현 , 경사하강법 등이 앞 단원에서 다뤄질 것으로 예상하기 때문). 1,2단원과 연계와 구분 문제 조정 필요
*회귀분석이라는 용어를 피하면서 최소제곱법이란 표현으로 회귀분석 내용을 다룰 예정
*인공지능 내용 요소를 교육과정에서 “학습요소”로 제시할 필요가 있을지 (인공지능 기초 교과에서 정의하는 용어는 피해가는 방법이 있음)
*3단원에서 확률, 확률변수 내용 없음. 확률은 중3에서 다루기 때문에 확률이라는 용어를 쓰기는 하지만 고등학교 확률과 통계 내용에 할애하지 않은 상태임. 3단원 일부 내용이 확률변수의 관점에서 설명될 수 있는 부분이 있지만, 피해갈 수도 있는 상태로 학습내용 부담을 줄이기 위해 현재 확률과의 연결을 최대한 생략한 상태
*상관관계와 상관계수 단원에서 공분산 도입 안한다는 합의를 한 상태. (피어슨)상관계수의 공식을 간단하게 언급하고 상관계수 크기의 해석 위주로만 접근할 예정 (1단원에 공분산행렬 언급이 되어 있어서 논의 필요)
Ⅳ. 인공지능 기초(개념/코드)
03 지도학습과 인공신경망
지도학습의 뜻을 알고, 인공신경망 속의 수학을 이해할 수 있다.
인공 지능 프로그램이 세계 정상 바둑 기사와의 바둑 대결에서
압도적으로 승리해 많은 사람을 놀라게 했다. 바둑에서 나올 수
있는 경우의 수는 계산 방법과 가정에 따라 다르지만 가지,
약 가지가 되어 슈퍼컴퓨터로도 계산이 어렵다.
이 단원에서는 컴퓨터가 스스로 학습하여 인공지능 성능을
향상하는 기술인 머신러닝과 인공신경망인 딥러닝에 관하여 공부한다.
|
∙최소제곱법의 뜻을 알고 있는가? |
1 |
좌표평면에서 두 점 |
|
∙도함수를 구할 수 있는가? |
2 |
다음 함수를 미분하여라. ⑴ |
|
∙행렬의 곱셈을 할 수 있는가? |
3 |
다음을 계산하여라. |
1 |
지도학습과 비지도학습
|
|
학습 목표 ∙ 지도학습과 비지도학습의 뜻과 의미를 안다.
|
||
|
|
|
|
머신러닝 |
|
머신러닝은 명시적으로 프로그래밍하지 않고 학습 할 수 있는 능력을 부여하는 컴퓨터 과학의 한 분야이다.
일반적인 컴퓨터 프로그래밍은 사람이 프로그램(규칙)과 데이터를 컴퓨터에게 입력한다. 컴퓨터는 프로그램(규칙)에 따라 데이터를 처리하여 답을 출력한다. 하지만 머신러닝에서는 프로그램(규칙)을 컴퓨터에게 입력하지 않는다. 사람은 여러 개의 데이터와 답을 컴퓨터에게 입력하면 컴퓨터는 프로그램(규칙)을 추론하여 출력한다.
프로그램(규칙)을 함수
마찬가지로, 여러개의 강아지와 고양이 이미지를 입력하면 컴퓨터는 강아지와 고양이 이미지를 분류하는 프로그램(규칙)을 만든다. 이 프로그램(규칙)을 이용하여 컴퓨터는 강아지와 고양이 이미지를 구분할 수 있는 능력을 갖추게 된다. 그리고 새로운 이미지를 컴퓨터에 입력하면 그 이미지가 강아지와 고양이 중 무엇인지 예측한다.
|
|
▷ 학습
▷ 지도학습과 비지도학습
|
학습이란 입력된 데이터를 가장 잘 설명하는 방법을 찾는 과정이다. 컴퓨터는 입력된 데이터에 맞는 모델을 찾으며 학습한다.
학습은 지도학습과 비지도학습이 있다.
지도학습은 문제와 답이 함께 주어진 데이터를 학습하는 알고리즘이다. 컴퓨터는 주어진 문제에 대한 답을 예측하기 위한 모델을 찾는다. 답의 형태에 따라서 회귀분석과 분류분석으로 나눌 수 있다. 비지도학습은 답이 주어져 있지 않은 문제만 주어진 데이터를 학습하는 알고리즘이다. 컴퓨터는 문제 속에 숨은 규칙성을 스스로 찾는다.
강아지와 고양이 분류 문제를 예를 들면, 강아지와 고양이 이미지에 레이블까지 함께 주어진 데이터를 컴퓨터가 학습하는 것이 지도학습이다. 컴퓨터는 이미지에 대한 레이블을 예측하기 위하여 모델을 만든다. 새로운 고양이 이미지를 입력하면 컴퓨터는 모델을 통해서 레이블이 ‘고양이’임을 예측한다. 한편, 강아지와 고양이 이미지만 주어진 데이터를 컴퓨터가 학습하는 것이 비지도학습이다. 컴퓨터는 이미지를 분류하는 모델(기준)을 스스로 만든다. 새로운 고양이 이미지를 입력하면 컴퓨터는 스스로 만든 분류 모델(기준)을 통해서 ‘고양이’로 분류한다. |
...
*** 코드와 연관하여 보여주기 |
|
최소제곱 오차함수 |
▷ 오차
▷ 오차함수
|
컴퓨터가 학습하는 과정을 알아보자.
책의 쪽수로부터 책의 가격을 예측하는 프로그램(규칙)을 찾기 위하여 아래의 표와 같이 2개의 데이터를 컴퓨터에 입력하였다.
컴퓨터는 책의 쪽수를 함수
설정한 모델
컴퓨터는 실제 책의 가격과 예측 가격의 차이인 오차를 계산한다.
예를 들어 (1) 책 (2) 책 따라서 최소제곱법으로 구한 오차는 이다. 컴퓨터는 오차를 감소하는 방향으로
오차의 값을 줄이기 위해서 책의 가격 예측 모델은 오차는 이때, 이 함수를 오차함수(손실함수. 비용함수)라고 하며, 이것을 기호로 와 같이 나타낸다.
예를 들어 책의 쪽수로부터 책의 가격을 예측하는 모델
이다
인공지능에서 활용되는 오차함수는 최소제곱법 함수(Mean squared error function), 크로스 엔트로피 함수 등이 있다.
** 코드 추가되며 시각적으로 보여줄 수 있으면 좋겠습니다.
|
|||||||||
|
예제 1 다음은 책의 쪽수와 가격을 조사한 표이다.
책의 쪽수 (1)
(2) 최소제곱 오차함수를
(코드)
|
|
경사하강법과 모델검증 |
▷ 경사하강법
▷ 경사하강법의 기하적 의미
|
을 만족하며 점
경사하강법의 기하적 의미에 대해서 알아보자.
곡선 함수 이다. 따라서 경사하강법을 통하여 곡선 위의점
곡선 함수 이다. 따라서 경사하강법을 통하여 곡선 위의점 점 을 만족한다.
함수 극솟값에 가까이 다가갈수록 따라서, 이다. 따라서 경사하강법을 통하여 곡선 위의점 아래쪽으로 천천히 이동한다.
이상을 정리하면 다음과 같다.
*** 코드로 보여주기 |
|||||||||||||||||||||
▷ 학습율
▷ 가중치
▷ 검증
|
예제 2 삼차함수
컴퓨터가 경사하강법으로 오차가 최소인 예를 들어 책의 쪽수로부터 책의 가격을 예측하는 모델
이를 좌표평면에 표현하기 위하여
컴퓨터는 함수 한 점 을 이용하여 첫 번째로 이동할 점의 머신러닝에서
최소제곱 오차를 구하며 두 번째 이동할 점의 이를 반복하여 오차함수가 최소일 때,
입력된 데이터 중 문제를 이처럼 컴퓨터는 처음 설정한 모델에 입력된 가중치를 오차를 이용하여 검증하고 경사하강법을 이용하여 가중치를 조정한다. 이 검증과정을 여러 번 반복하여 입력된 데이터를 가장 잘 표현할 수 있는 모델의 가중치를 구하며, 모델을 스스로 수정해 나간다.
신경망에서는 입력된 데이터에 따라서 여러개의 가중치가 존재한다. 예를 들어 이때, 오차함수는
컴퓨터는 모델을 스스로 검증하며 경사하강법을 이용하여 예제 3 다음은 책의 쪽수와 가격을 조사한 표이다.
책의 쪽수
** 코드로 보여주기
유제 1 다음은 책의 쪽수, 무게와 가격을 조사한 표이다.
책의 쪽수
** 코드로 보여주기 |
|
분류 |
▷ 분류
▷ 분류기준을 위한 모델
▷ 모델 검증 |
컴퓨터가 강아지와 고양이를 분류하는 방법에 대해서 알아보자. 컴퓨터는 ‘모델’을 기준으로 2개의 그룹을 분류한다.
강아지와 고양이의 여러 가지 특징 중 ‘귀’를 기준으로 강아지와 고양이를 분류하는 모델을 만들어 보자.
(2) 좌표평면 위에 가로의 길이를
(3) 강아지와 고양이를 분류하는 임의의 직선을 설정한다. 강아지와 고양이를 분류기준 모델로 직선 먼저 이 경우 모델 강아지와 고양이를 분류하는 적절한 기준이라고 할 수 없다는 것을 그림을 통해서 알 수 있다. 컴퓨터는 기울기를 반복적으로 조금씩 증가시키며 최적의 분류기준 모델을 찾아 나간다.
(4) 모델 검증 및 모델 최적화
모델을 검증할 때는 오차를 활용한다.
강아지 귀의 가로의 길이
예를 들어 가로와 세로의 길이가 모두 이때, 오차를 계산하면
강아지 귀의 가로의 길이
이처럼 컴퓨터는 목표점을 하나씩 수정하며
** 코드 추가되며 시각적으로 보여줄 수 있으면 좋겠습니다. |
|||||||||||||||||||||||||||||||||||||||
|
예제4
다음은 강아지와 고양이의 코의 가로의 길이와 세로의 길이를 조사한 표이다.
가로의 길이
(1) 목표점을
(2) 목표점을
(3) (1),(2)의 두 값을 비교할 때, 더 적절한 분류기준이 무엇인지 말해보자.
(코드) |
창의 융합 프로젝트_분류 모델 업그레이드하기 |
희망 활동 : 구글 인공지능 Teachable Machine을 교과서로 구현하도록 코드 제공! 단, 구글 서비스를 사용하는 것이 아니라 모델의 핵심이 되는 코드는 오픈하여 보여줌. (어려운 부분은 모두 감추기) 학생들이 코드의 숫자 혹은 모델의 식 변경할 수 있도록 학생들이 변경하는 것에 따라서 오차가 줄어들고 예측을 더 잘하는 과정을 보여주기
|
2 |
인공신경망(딥러닝) 속의 수학
|
|
학습 목표 ∙ 인공신경망 속의 수학을 이해하고, 출력값을 구할 수 있다. |
||
|
|
|
|
인공신경세포 |
▷ 신경세포와 인공신경세포
▷ 활성화 함수
▷ 모델 학습 |
인공신경세포에 대하여 알아보자.
사람의 뇌에 있는 신경세포(뉴런)는 혈액 중 아미노산으로부터 신경전달물질을 만든다. 신경의 자극은 한 방향으로 일어나며, 만들어진 신경전달물질을 이용하여 주위의 다른 신경세포들에 신호를 전달한다. 하나의 신경세포는 여러 개의 다른 신경세포들로부터 전달받은 신호에 반응하여 막이 역치 전위에 도달하면 다음 신경세포에도 일정한 크기의 신호를 전달하게 된다. 하나의 신경세포의 동작 방식을 컴퓨터가 모방한 것이 인공신경세포(퍼셉트론)이다. 인공신경세포의 구조를 알아보자. (1) 인공신경세포(퍼셉트론)는 입력 데이터( (2) 인공신경세포는 입력받은 데이터와 가중치를 일차결합하여 (3) (2)에서 구한
예를 들어 3개의 입력데이터(
또한, 인공신경세포는 뉴런과 마찬가지로 일정 역치 이상의 신호에서 활성화하는 구조를 만들기 위하여 활성화 함수
컴퓨터가 인공신경세포 모델을 검증하여 학습해나가는 것은 실제값과 모델을 통해서 예측한 값의 차이인 오차를 줄여나가는 것이다. 인공신경세포의 가중치인
|
|
예제1
다음 그림과 같은 인공신경세포 모델에서 입력데이터 (풀이)
유제1 활성화 함수가 ReLU함수인 인공신경세포에서 위의 그림과 같은 모델에서 입력데이터 |
|
인공신경망(딥러닝)속의 수학 |
|
인공신경망에 대하여 알아보자.
인공신경망은 일반적으로 입력층, 히든층(hidden layer), 출력층으로 이루어 진다.
(1) 입력층에서 히든층 최초 입력값 히든 층 중에서 첫번째 인공신경세포에서는 히든층에 입력된 이고, 이 값을 활성화 함수 이 값이 히든층에서는 값을 출력값으로 출력증에 전달한다. 마찬가지 과정을 거쳐 번째, 두 번째, 세 번째 인공신경세포에서도 이를 행렬로 나타내기 위하여 입력 데이터를 나타내는 행렬을 입력층과 히든층의 관계는 로 표현된다.
(2) 히든층에서 출력층 출력층 중 첫 번째 인공신경세포에서는 히든층에서 출력된 데이터 출력층에 입력되어 가중치 이다. 이 값을 softmax함수
을 마찬가지 과정으로 출력층 중 두 번째 인공신경세포에서도
이를 행렬로 나타내기 위하여 가중치를 나타내는 행렬을 이므로, 히든층과 출력층의 관계는 로 표현된다.
(3) 출력층에 나온 데이터 판정하기 출력층의 2개의 인공신경세포가 내보낸 데이터 행렬 큰 값을 인공신경망의 최종 출력값으로 채택합니다.
|
|
예제2 활성화 함수를 ReLu함수이며, 다음 그림과 같은 인공신경망이 있다. 입력 데이터
|
인공신경망 적용 실제(MNIST)
▷ MNIST
|
MNIST는 숫자 0부터 9까지의 이미지로 구성된 손글씨 데이터 집합입니다. 컴퓨터에 숫자 이미지를 입력하면 머신러닝을 통해서 숫자 이미지가 의미하는 값을 출력하는 프로그램에 대해 알아보자.
1. 손글씨 이미지를 컴퓨터에 입력할 수 있는 데이터로 변환 (1) 이미지를 가로 28픽셀 세로 28픽셀의 크기로 나눈다. (2) 총 784개의 픽셀의 밝기를 조사한다.
(3) 픽셀의 위치와 밝기를 예를 들어 (12,6,82)는 가로 12, 세로 6번째 픽셀의 밝기는 82이라는 의미이다. (4) 컴퓨터에 입력할 수 있도록 데이터의 형식을 변경한다.
2. 인공신경망 구성 및 학습 입력층은 1개로 784개 인공신경세포, 히든 층은 2개 이상으로 여러개의 인공신경세포, 출력층은 1개로 10개의 인공신경세포로 인공신경망을 구성한다. (1) 입력층에는 784개의 데이터를 입력받는다. (2) 히든층에는 입력층으로부터 입력받은 데이터를 가중치와 일차결합하고 그 결과를 활성화 함수에 대입하여 다음층으로 내보낸다. (3) 출력층에는 마지막 히든층에서 받은 데이터를 가중치와 일차결합하고 그 결과를 softmax함수에 대입하여 확률의 형태로 내보낸다. (4) 10개의 인공신경세포에서 내보낸 확률값중 가장 큰 값을 예측값으로 판정한다. |
|
예제3 창의 융합 활동 다음의 코드를 실행해보자.
|
[Sage code] https://sagecell.sagemath.org/ 위의
코드를 여기서 실습해
보세요.
창의 융합 프로젝트_MNIST 모델 업그레이드 하기 |
희망 활동 : teachable machine의 mnist 버전 1. 학생들의 손으로 쓴 숫자를 인식하여 판정하는 프로그램
2. 모델 학습 횟수에 따른 오차의 변화를 그래프로 표현하여 그래프로 보여주기
3. 학생들의 모델의 일부 코드(숫자 및 함수식)를 수정하여 모델의 오차를 줄이며, 정확도를 높일 수 있는 것을 알게 하는 활동
(이 경우 코드를 엄청 낮은 단계부터 작성해주셔야 하며 쉬운함수, 고등학교에서 배운 함수로 변경해서 들어가야 합니다.)
|
[참고자료]
▪ 아래는 https://github.com/freebz/Make-Your-Own-Neural-Network 에 공개된 Python 코드를 일부 수정하여 Sage에서 구현한 것이다. 예를 들어, MNIST 데이터세트로부터 숫자 7의 이미지를 읽어서 보여준다.
[Sage code] https://sagecell.sagemath.org/
▪ 이제 주어진 학습 데이터를 활용하여, 신경망의 적절한 가중치를 얻은 후, 테스트 데이터를 이용하여 신경망의 성능을 판단해보자. 다음은 입력, 은닉, 출력 계층의 신경망으로, MNIST 데이터세트 일부를 학습시켜 테스트용 숫자 이미지를 잘 인식하는지 보여주는 코드이다. 학습 데이터 100개, 테스트 데이터 10개를 아래의 자료로부터 사용하였다.
[출처]
https://github.com/freebz/Make-Your-Own-Neural-Network
[Sage code] https://sagecell.sagemath.org/ 아래 코드를 여기서 실습
▪ 위의 결과로부터 학습 데이터 100개, 테스트 데이터 10개를 사용했을 때, 신경망의 정확도는 70%임을 확인할 수 있다. 학습 데이터의 수를 늘리게 되면, 이보다 더 높은 정확도를 기대할 수 있는데, 실제로 여기 소개된 코드의 신경망을 60,000개의 학습 데이터에 의해 학습시키고, 10,000개의 테스트 데이터에 적용하면, (신경망의 가중치의 초기치가 임의로 주어지므로, 정확도의 수치가 일부 다를 수 있으나) 대략 95%의 정확도를 얻게 된다.
▪ MNIST 데이터 세트의 손 글씨 숫자를 인식한 사례는 신경망을 학습시키기 위한 데이터가 충분히 확보되었기에 가능했다. 이전에는 사용할 수 있는 데이터가 많지 않았으나, 오늘의 세계에서는 매일 (quintillion) 바이트의 데이터가 생성된다고 알려져 있다. 인공지능 시스템이 많은 량의 학습 데이터를 이용하여 특징을 파악하게 되면, 좀 더 나은 결과를 추론할 수 있을 것이다.
▪ MNIST 숫자 인식 사례와 마찬가지로, 음성 또는 신호를 인식하거나 문자를 인식하는 것도 유사한 방법으로 가능하다. 이보다 더 높은 수준의 분석이 요구되는 자연어 처리(Natural Language Processing, NLP)는 우리가 일상생활에서 사용하는 언어를 컴퓨터가 의미를 분석하여 처리하도록 하는 것으로, 단순히 음성 또는 문자를 인식하는 것 이외에 말하는 사람이 의미한 것, 필요한 것들을 추론을 해야 한다. 예를 들어, 사용자가 "피자 먹고 싶다!"라는 문장을 말했을 때, 인공지능 시스템은 음성의 파형으로부터 "피자 먹고 싶다!"라는 문장을 인식하는 것에서 더 나아가 사용자가 실제로 원하는 정보를 추론을 거쳐 파악하고 찾아서 제공해줘야 한다. 피자 예 ("피자 먹고 싶다!")에서 보면, 음식(food)으로 표기된 ‘피자’라는 용어의 사용에 주목하여, 말하는 사람이 피자를 만드는 방법을 알고 싶어 한다는 걸 암시하는 ‘조리법’과 같은 용어가 본문에 없음을 파악하고, 말하는 사람이 피자집을 찾고 있다고 판단할 수 있다. 이 경우 GPS 정보를 가지고 피자를 제공하는 식당을 찾아 근접성, 등급, 가격 순으로 순위를 매긴다. 만약 사용자가 이용한 피자 식당들의 기록이 있다면, 인공지능 시스템은 사용자가 자주 이용하는 식당 중 추천이 많은 가까운 곳을 찾아, 자연어 문장을 생성하여, 우리말로 다음과 같이 추천할 수도 있다.
"여기서 2km 정도 떨어진 곳에 ***라는 피자집이 있습니다."
읽기자료
딥러닝 & AR기반 암세포 감지 현미경
구글이 암세포를 감지해서 알려주는 증강현실(AR) 현미경 프로토타입을 개발했다고 미국 IT매체 엔가젯이 16일(현지시간) 보도했다. 이 기술은 16일 열린 미국 암 연구협회(American Cancer Research) 연례 회의에서 소개된 내용이다. 의사들이 암을 진단할 때 조직 검사를 진행하게 되는데, 이 과정은 복잡하며 많은 시간이 걸리게 마련이다. 구글은 이 과정에서 딥러닝 기술을 광학 현미경에 적용했다.
AR 현미경에 사용되는 AI 기술은 신경망을 통해 사람의 조직 사진에서 암세포를 검출하도록 학습을 거친다. 그 다음 조직세포가 AR 현미경 슬라이드에 놓이면 렌즈를 통해 보이는 이미지가 컴퓨터에 입력된다.
인공지능은 입력된 사진을 분석해 암세포를 감지한 다음 사람이 잘 볼 수 있도록 암 세포 부분에 윤곽선을 표시해 준다. 이 모든 작업이 실시간으로 이루어지기 때문에 현미경 배율을 바꾸거나 슬라이드 위치를 이동시켜도 문제없이 암세포를 검출해 낼 수 있다. 구글은 "이 현미경이 제한된 예산을 가진 소규모 연구실이나 클리닉, 개발도상국에 이익을 가져다 줄 수 있다고 믿는다"며 "전 세계 의료진들의 딥러닝 기술 채택을 가속화하고 대중화 할 수 있을 것"이라고 밝혔다.
...
...
https://ai.googleblog.com/2018/04/an-augmented-reality-microscope.html
https://www01.zdnet.co.kr/view/?no=20180417140831
====================== 참고 =======================
경우의 수를 쉽게 계산하는 ‘순열과 조합’ |
|
|
|
읽는다.
|
이번에 코딩으로 정복해 볼 수학 개념은 ‘순열과 조합’이다. 순열은 쉽게 말해, 순서대로 나열하는 경우의 수입니다. 예를 들어 A, B, C가 쓰인 카드 세장을 순서대로 나열한다면 { (A, B, C), (A, C, B), (B, A, C), (B, C, A), (C, A, B). (C, B, A) } 이렇게 총 6가지 경우가 나온다. 그런데 이렇게 순서대로 나열하는 경우를 일일이 찾아서 세지 않고 ‘팩토리얼(!)’로 쉽게 계산할 수 있다. 자연수 1부터 앞에서 살펴본, 서로 다른 카드 세장을 순서대로 나열하는 경우의 수는 3! = 3×2×1 = 6 이다. 또한, 서로 다른 조합은 순서와 상관없이 선택하는 경우의 수이다. 예를 들어 A, B, C가 쓰인 카드 3장에서 순서와 상관없이 두 장을 뽑는다면, { (A, B), (A, C) (B, C) } 이렇게 총 3가지 경우가 나온다. 서로 다른 |
순열과 조합 |
||
|
||
순열, 분류 |
||
|
(1) 서로 다른 (2) 여기서 |
박스 안에 빨간 공 6개와 파란 공 4개가 들어 있다. 처음 빨간 공을 꺼내고, 두 번째 파란 공을 꺼내 확률은 다음과 같다.
조합, 중복조합 |
||
|
(1) 서로 다른 (2) 서로 다른 |
500개의 전구로부터 5개의 백열전구를 택하는 방법의 개수는 이다.
http://www.polymath.co.kr/mini/1330
|
|
|
|
|
행렬을 이용하면 두 변수가 서로 어떤 관계를 가지는지를 쉽게 표현할 수 있다. 특히, 각 데이터의 분산과 공분산을 이용해 만드는 공분산 행렬이 이에 해당한다. |
|
|
공분산행렬에서 고유벡터와 고윳값 |
||
|
공분산행렬에서 고유벡터와 고윳값을 찾는 것은 데이터의 주성분(principal component)을 찾는 것과 동일하다. 왜냐하면 고유벡터는 행렬이 어떤 방향으로 힘을 가하는지를 표현하는데, 이것은 데이터가 어떤 방향으로의 분산이 가장 큰지를 구하는 것과 같기 때문이다. 고윳값(Eigenvalues)은 각 고유벡터에 해당하는 상관계수이다. 우리가 다루는 행렬이 공분산 행렬일 경우 고윳값은 각 축에 대한 공분산 값이 된다. 그리고 고윳값이 큰 순서대로 고유벡터를 정렬하면, 결과적으로 중요한 순서대로 주성분을 구하는 것이 된다. |
[ End (시안의 모습, 아이디어) ]
Copyright @ 2020 SKKU Matrix Lab. All rights reserved.
Made by Manager: Prof. Sang-Gu Lee with Dr. Jae Hwa Lee