* 첫 째 주에 이어 다시 고난의 행군
SSAC x Fast Campus 패스트 캠퍼스 비즈니스 빅데이터 분석가 과정 에도 수학 이론 강의가 있었지만, 단 <데이터 분석을 위한 기초 수학과 통계> 라는 이름으로 이틀 강의를 한 것이 전부였다.
게다가 문과생들을 대상으로 하는 수업 난이도였다.
그런데 이 수업은 CS 학부생 정도 수준을 전제로 하고 있는 것 같다.
첫 날 주제는 선형대수linear algebra
다행히 빅데이터 분석가 과정에서도 하룻동안 배웠던 내용이다.
여담이지만, 학부에 있을 때 이과인 친구들이 '리니어 알제브라', '리니어 알제브라' 거리길래 뭔소리인지 몰라서 사전을 찾아본 적이 있었는데, 그걸 내가 이 나이에 공부하고 있다니... 그땐 이렇게 될 줄은 꿈에도 몰랐었지 .... ㅠㅠ
참고
첫째 주에 자료 구조와 알고리즘을 공부할 땐 <파이썬 알고리즘 인터뷰> 이라는 책을 함께 보면서 공부했는데,
이번 주에도 근본이 없는 부족함을 보완하기 위해 책을 한 권 구매해서 강의 진도에 해당되는 부분을 같이 보고 있다.
지난 <파이썬 알고리즘 인터뷰>이 아주 탄탄하고 두고 두고 보게 될 기본서 같은 느낌이라면, 이 책은 근본없는 문과생인 나에게 딱 맞는 쉽고 가벼운 책이다. 가볍다고는 하지만, 표지에 있는 일본 만화풍의 일러스트 같은 분위기는 아니다.
<개념원리 수학> 같은 형식인데 문제 풀이는 빠지고, 잘게 쪼개서 개념 설명을 쉽게 하는 책이다.
쿠팡 리뷰를 보면 알겠지만, 나 같은 문과생이나 아니면 인공지능 쪽으로의 진로에 관심이 있는 고등학생 정도 (좀 똘똘하면 중학생도) 가 읽을만한 책이다.
1. 선형시스템
*오늘 배울 내용 예습*
선형 시스템이란 ?
Ax = b 형태로 표현할 수 있는 것
연립 1차 방정식의 대수적 표현이라 할 수 있다
우리가 초중등 때 연립 1차 방정식이라고 배웠던 것들이 바로 선형시스템
(1차 방정식)
2x=4
(연립 1차 방정식)
x+y=5
3x+y=9
--> 중학교 때 연립 1차 방정식을 해를 구하는 방식이 소거법.
가우스 소거법은 이를 좀 더 정형화 해서 정리한 것이라고 보면 된다.
미지수 수가 더 커지게 되면 방정식의 경우 소거법으로 풀려고 해도, 없앤던 애들이 다시 튀어나와 까다로울 수 있다.
가우스 소거법은 이미 소거한 변수가 다시 나오지 않게 하는 방법
모든 선형시스템이 이를 기반으로 한다.
이 문제를 어떻게 풀까?
가우스 소거법: 선형시스템을 푸는 방법
LU 분해 : 가우스 소거법 과정을 행렬로 표현한 것
선형대수의 목표
어떤 선형시스템 문제라도 정형적인 방법으로 표현하고 해결하는 방법을 배우는 것이다.
Ax = b
이 형태는 초등학교 때 배웠던 2x = 4과 유사한 형태이다.
그런데 변수가 무수히 많더라도 그 꼴을 이와 같은 형태로 만들고, 문제도 그렇게 풀겠다는 것이다.
A-1Ax = A-1b
x = A-1b
1) 선형 시스템 설명
예제>
3x+y+z=4...E1
x−2y−z=1...E2
x+y+z=2...E3
이 방정식들은 각각 대수적으로 선형 방정식(Linear Equations)이라고 한다.
미지수가 3개이므로 3차원에서의 평면의 방정식이다.
위의 식의 x, y, z는 미지수, unknown, varialbe 라고 부를 수 있다.
linear system 은 (식의 개수) x (미지수의 개수)로 표현한다.
예시의 수식 경우, 3 x 3 linear system 이다.
3x+y+z=4
x−2y−z=1
위의 수식은 2 x 3 linear system 이다.
3x + y = 2
x - 2y = 3
2x - 4y = 6
이건 3 x 2 linear system이다.
sinx + y = 2
3x+ y3 = 2
이런 건 비선형 방정식이다.
2) 선형방정식인지 판별하는 법
선형방정식은 미지수의 승수가 1승으로만 구성되어 있다.
xy+z=3
미지수들이 모두 1승으로 이루어져 있어 선형방정식이라고 착각할 수 있지만 xy가 곱해지며 2승이기 때문에 선형 방정식이 아니다.
사실 생각해보면 xy = 1 그래프는 곡선 그래프, 선형이 아니다.
3) 선형시스템의을 대수적으로 표현하기
위에서 배운 m x n 선형시스템을 Ax=b 형식의 행렬로 표현해보자.
- m 은 선형방정식의 개수
- n 은 미지수의 개수
- A 는 m x n 행렬
- x 는 n-벡터
- b 는 m-벡터
3x+y+z=4
x−2y−z=1
x+y+z=2
위의 수식을 아래의 행렬 형식으로 나타낼 수 있다.
1. 선형시스템의 미지수를 모아서 열 벡터column vector x로 표현
2. 선형시스템의 방정식 마다
- coefficient계수를 모아 A의 행벡터 row vecter로 표현
- constant 상수를 모아 b에 표현
예제> 다음을 Ax = b 형태로 표현하라
-x1 + 2x2 - x3 = 3
-x2 + 2x3 - x4 = 2
-x3 + 2x4 -x5 = 5
--> 3x3 시스템이라고 착각하기 쉬운데, 미지수가 x5까지 5개이다.
--> 3x5 시스템이다.
*인공지능 관련한 코딩도 같은 구조로 작성한다.
4) 선형대수를 Numpy 활용해 표현하고 해를 구하기
A-1Ax = A-1b
x = A-1b
A와 b를 알면 역행렬을 구해서 해를 구할 수 있다.
import numpy as np
#행렬 코딩
A = np.array([[3,1,1],[1,-2,-1],[1,1,1]])
#벡터 코딩
b = np.array ([4,1,2])
# 역행렬 구하기
A_inv = np.linalg.inv(A)
#해 구하기
x=A_inv @ b
내가 구한 해가 맞는지 검증하는 법
-> 벡터끼리 뺀 값이 0에 가까우면 거의 같다고 본다.
bb = A @ x
if np.linang.norm(b-bb) <le -3:
print("ok")
else:
print("wrong")
2. 가우스 소거법(Gauss elimination)
1) 가장 간단한 형태의 리니어 시스템의 solution 구하기
일반적으로는
ax = b (a, b 는 스칼라)
--> x = b/a
그러나...
프로그래밍에서 나눈다는 것은 위험하다 (만일 a = 0 이라면? b= 0이라면?)
--> solution의 경우의 수는 3가지
- unique solution : 2,3이 아닐때
- no solution : a=0 and b!=0
- infinitely many solution : a=0 and b=0
--> a = 0 일 때는 특수한 경우라고 할 수 있다.
a의 역수(inverse)가 존재하지 않는 경우 a가 특이하다(singular)라고 표현
해가 있으면 : consistent linear system
해가 없으면 : inconsistent linear system
2) linear system Ax = b의 solution 구하기
마찬가지로 3가지 경우의 수가 있다.
- unique solution
- no solution
- infinitely many solution
A의 역행렬(inverse matrix)가 존재하지 않을 때, A 를 특이하다고 (singular) 표현
해가 있으면 : consistent linear system
해가 없으면 : inconsistent linear system
3) 가우스 소거법 실제 연습
- 전방 소거법(Forward Elimination) - 중요
- Ax=b 꼴에서 A의 형태를 위에서 아래로, 왼쪽에서 오른쪽으로 소거해나가며
아래와 같은 역삼각형 형태로 만들기 - 이렇게 만들면 맨 마지막 식부터 미지수를 구할 수 있게 된다.
- Ax=b 꼴에서 A의 형태를 위에서 아래로, 왼쪽에서 오른쪽으로 소거해나가며
2. 후방 대입법(Back-substitution)
- 아래 식부터 대입을 통해 해찾기
- 위에서 만든 역삼각형의 matrix를 이용해 해 구하기
- --> x3 = 1
- x2+ 3*1 = 5 --> x2= 2
- x1+ 2*2+ 1*2 = 1 --> x1 = -4
4) 전방 소거법의 수행 절차
- 1행 1열을 기준으로 pivot 잡기
- r2 <-- r2 - r1
- r3 <--r3 - 2r1
- 2행 2열을 기준으로 pivot 잡기
- r2 <-> r3
- r2<-- -r2
- 3행 3열을 기준으로 pivot 잡기
- r3 <-- 1/2 r3
5) 전방 소거법에 쓰인 3가지 기본행연산elementary row operations (=EROs)
- 치환 Replacement
- rj <-- rj - mri
- j번째 행을 업데이트 (기준행인 i번째 행을 m배한 것을 빼서)
- 교환 Interchange
- rj <-> ri
- j번째 행과 i번째 행의 위치를 서로 바꿈
- 스케일링 Scaling
- rj <-- srj
- j번째 행을 s배 스케일링
6) 전방 소거법의 가치
- 가장 풀기 쉬운 꼴로 변형
- rank를 알려줌 (rank: 그 행렬의 벡터 공간의 의미있는 차원)
- consistent/inconsistent 여부 알려줌
* 전방소거법을 통해 만들어진 역삼각형 모양의 행렬 A: upper triangular form 상삼각형태
*다음 시간 공부 내용*
LU 분해 LU decomposition
- 가우스 소거법을 행렬로 표현
- NumPy에서 제공해주는 가우스 소거법 구현 방식
'Math' 카테고리의 다른 글
책 <인공지능을 위한 수학> 정리 (0) | 2021.05.07 |
---|---|
[AI class day10] 인공지능 수학- 추정, 검정, 엔트로피 TIL (0) | 2021.05.03 |
[AI class day 9] 인공지능 수학- 확률과 확률분포 TIL (0) | 2021.04.29 |
[AI class day 8] 인공지능 수학- 자료의 정리 TIL (0) | 2021.04.28 |
[AI class day 7] 인공지능 수학- 미적분 TIL (0) | 2021.04.27 |