딥러닝을 위한 수학 - yarak001/machine_learning_common GitHub Wiki

  1. 확률 1부 2.1 기본 개념들 2.1.1 표본 공간과 사건 표본공간(sample space): 주어진 한 사건에 가능한 결과를 나타내는 이산 집합(discrete set) 또는 연속 구간(continuous range) 사건(event): 뭔가 일어나는 것 개별 사건은 표본 공간의 한 부분집합. 즉 하나의 표본(sample) 가능도(likelihood): 어떠한 사건이 일어날 가능성이 어느 정도인지를 나타내는 값 표본 공간의 모든 가능한 값을 더하면 반드시 1이 됨 2.1.2 확률 변수 확률 변수(random variable): 해당 표본 공간에서 하나의 값을 특정한 확률로 취하는 변수 이산 확률 변수: 대문자 표시 연속 확률 변수: 소문자 표시 2.1.3 인간은 확률에 약하다 2.1.3.1 몬티 홀 딜레마 2.1.3.2 암 진단 2.2 확률의 법칙들 2.2.1 단일 사건의 확률 표본 공간의 임의의 사건 A에 대해 0 <= P(A) <=1 표본 공간의 모든 사건 Ai에 대해 ΣP(Ai) = 1 사건 A가 발생할 확률을 P(A)라 할때 그 사건이 발생하지 않을 확률 P(-A) = 1 - P(A), -A는 A의 여사건 2.2.2 합의 법칙(sum rule) 상호 배반(mutually exclusive): 두 사건 A와 B가 동시에 일어날 수 없을 때, 다시 말해 하나가 발생하면 다른 하나는 발생하지 않는 경우 독립(independant): 만일 두 사건의 발생 확률이 서로 완전히 무관하다면, 즉 A의 발생 확률이 B의 발생 확률에 영향을 받지 않는 경우 확률의 합의 범칙 둘 이상의 상호 배반 사건들이 발생할 확률에 관한 것 두 사건 중 하나라도 발생할 확률 P(A or B) = P(A ∪ B) = P(A) + P(B) (상호 배반 사건들에 대해) 주사위, 동전 2.2.4 합의 법칙 보충 (A or B) = P(A ∪ B) = P(A) + P(B) - P(A and B) (상호 배반 아닌 사건들에 대해) 주화(로마주화, 그리스주화, 은화, 동화) 2.2.3 곱의 법칙(product rule) 사건 A 그리고 B가 발생할 확률 P(A and B) = P(A,B) = P(A ∩ B) = P(A)P(B) (상호 독립인 경우) P(A and B) = P(A,B) = P(B|A)P(A) (상호 종속인 경우, 2.2.6참조) 상호 배반인 두 사건 A, B가 동시에 일어날 확률 0 -> 곱의 법칙으로 유도 할 수 없을 주의 여성, 갈색 눈 2.2.5 생일 역설 한 방에 있는 사람 중에 생일이 같은 사람이 적어도 두 명일 확률이 50%를 넘으려면 방에 최소한 몇명이 있어야 하는가? 2.2.6 조건부 확률(conditional probability) P(B|A) 사건 A가 발생했다고 할 때 사건 B의 확률 두 사건이 종속적인 경우 곱의 법칙 P(A and B) = P(A,B) = P(B|A)P(A) 두 사건이 상호 배반이면 P(B|A) = P(A|B) = 0 두 사건이 독립이면 이면 P(B|A) = P(B), P(A|B) = P(A) P(B|A) <> P(A|B) 빨간구슬, 파란구슬 2.2.7 전체 확률(total probability) P(A) = ΣP(A|Bi)P(Bi) P(A|Bi): 주어진 분할 Bi를 조건으로 한 A의 확률 P(Bi): 분할 Bi의 확률, 전체 표본 공간중 Bi가 차지하는 확률 P(A)는 분할 Bi들에 관한 A의 전체 확률 도시별 인구수, 파란눈 비율 2.3 결합 확률(joint probability)과 주변 확률 결합 확률(동시 확률인듯) P(X=x, Y=y) X의 값이 x임과 동시에 Y의 값이 y일 경우의 확률 앞에서 말한 여러 조건이 동시에(and) 참일 확률 주변 확률(margin probability) 하나 이상의 조건이 참일 확률을 그 밖의 조건들의 참, 거짓 여부와 상관없이 계산하는 것 전체 확률 변수의 한 부분 집합에 대해서만 그리고(and)를 적용한 확률 P(X=x) = ΣP(X=x, Y=yi) P(Y=y) = ΣP(X=xi, Y=y) 2.3.1 결합 확률표 결합 확률은 둘 이상의 확률 변수들이 특정한 값들을 가질 확률. 결합 확률은 흔히 표 형태로 표시 한 확률 변수의 주변 확률은 다른 모든 확률 변수가 가질 수 있는 모든 값에 관한 합산으로 구함 성별 색명 표, 타이타닉 2.3.2 확률의 연쇄법칙(chain rule for probability) P(Xn,Xn-1,...,X1) = Π P(Xi|∩Xj) P(X,Y,Z) = P(X|Y,Z)P(Y,Z) = P(X|Y,Z)P(Y|Z)P(Z) 파티인원중 임의 3사람이 아무도 보스턴에 가지 않았을 확률

  2. 확률 2부 3.1 확률 분포(probability distribution, 분포) 요구에 따라 값들을 무작위로 생성하는 함수라고 생각할 수 있음 각 값이 생성될 가능성은 주어진 확률 분포가 정의하는 특정한 패턴을 따름 3.1.1 히스토그램과 확률 이산적인 분류함(bin)들 각각에 몇 개의 하목이 들어갔는지를 보여주는 그래프 확률 분포를 이산적으로 표현한 그래프 3.1.2 이산 확률 분포 3.1.2.1 이항분포(binomial distribution) 각 사건의 구체적인 확률이 배정된 상황에서 주어진 횟수만큼 시행(trial)을 거듭할 때 각 사건의 기대 빈도(발생 횟수)를 나타냄 발생 확률이 p인 사건이 n번의 시행 중 k번 발생할 확률의 수식 확률 질량 함수(probability mass function, pmf): 모든 가능한 결과와 연관된 확률을 말해주는 함수 np.random.binomial() 확률을 이미 알고 잇는 사건들을 시뮬레이션 할 때 이항 분포에서 표본을 추출하면 됨 3.1.2.2 베르누이 분포(Bernoulli distribution) 이항 분포의 특수한 사례, n = 1로 고정, 즉 시행은 한번, 추출된 값은 0 또는 1 3.1.2.2 푸아송 분포(Poisson distribution) 사건의 발생확률을 구체적으로 알지 못하고, 일정 구간(시간, 횟수)에서 사건의 평균 발생 횟수만 알고 있는 경우 사용 일정한 시간 구간에서 사건이 발생한 횟수가 평균적으로 λ(람다)라고 할때, 그 시간 구간에서 사건이 k번 발생할 확률 np.random.poisson() 3.1.2.4 임의의 이산 분포를 위한 FLDR(Fast Loaded Dice Roller) 알고리즘 임의로 정한 분포에서 표본을 추출 3.1.3 연속 확률 분포(연속 분포) 이산 분포처럼 개별 정수값에 확률을 부여하지 않음 연속 분포에서 특정한 하나의 값의 선택될 확률은 0 => 연속 분포에서 선택할 수 있는 값(실수)는 무한히 많기 때문 => 부모가 무한대이므로 특정 값이 선택될 확률은 0 연속 분포는 선택된 값이 특정한 범위(구간)에 속할 확률을 구함 한 값이 특정 구간에 속할 확률은 구간에서 곡선 아래의 면적 => 적분 사용, ∫ 혹률 밀도 함수(probability density function): 해당 분포에서 값들을 추출할 때 적용되는 확률들을 생성하는 닫힌 형식의 함수 정규 분포 곡선, 가우스(Gaussian curve) 곡선, 종 곡선(bell curve) 신겸망 가중치 초기화 전략중 하나인 He 초기화에서 사용 평균, 표준 편차 사용 항상 평균을 중심으로 대칭, 표준 편차는 곡선이 얼마나 평평한지(또는 넓은지)를 결정 np.random.normal() 감마 분포 형태, 축적 또는 규모 사용 형태 변수가 클수록 감마 곡선의 융기부가 분포의 중심으로 이동해 정규 곡선과 비슷해 짐 축척 변수는 융기부의 너비에 영향 np.random.gamma() 베타 분포 두 개의 매개변수 사용 (a, b) a > b이면 곡선의 융기가 오른쪽으로, 그 반대면 왼쪽으로 치우침, a=b일때는 정규 분포 대단히 유연하기 때문에 확률 분포를 근사할 수 있는 a, b를 알수 있으면 서로 다른 다양한 과정을 시뮬레이션 할 수 있음 => 연속 분포를 충분히 반영한 이산 분포가 있다면 FLDR 분포가 더 나을 수 있음 np.random.beta() 3.1.4 중심 극한 정리(central limit theorem) 표본 평균 집gkq에서 생성한 확퓰 분포는 표본을 추출한 실제 바탕 표본의 형태와 무관하게 정규 분포에 접근 어떤 분포에서 크기(항목 개수)가 N인 표본을 추출해서 그 평균 m을 구하는 과정을 여러번 반복하여 얻어진 평균값들의 집합 {m0, m1,..., mn}의 분포는 정규 분포에 접근함 평균들의 평균값은 모평균의 측도임 3.1.5 큰 수의 법칙(law of large numbers) 분포에서 추출한 표본의 크기(값들의 개수)가 클 수록 표본 평균이 점점 모평균에 가까워 진다는 것 표본 하나의 평균과 모평균과의 관계 설명(중심 극한 정리는 푼포에서 다수의 표본을 추출했을 때 그 표본 평균들의 분포가 어떠한가를 말하는 것) 3.2 베이즈 정리

  3. 통계 ...

  4. 선형대수 1부 5.1 스칼라, 벡터, 행렭, 텐서 5.1.1 스칼라 7, 42, π와 같은 수치 수학 공식에서 스칼라 변수는 흔희 x처럼 소문자로 표시 5.1.2 벡터 여러 개의 수치(성분)으로 이뤄진 1차원 배열 수학에서는 행벡터(row vector)와 열벡터(column vector)가 있음 벡터 변수는 굵은(bold) 소문자로 표기 벡터의 각 성분을 좌표공간 좌표성분 즉 한 좌표축을 따라 나아간 거리로 해석하기 도함 심층학습을 비롯한 기계학습 전반에서 벡터의 성분들이 엄밀한 기하학적 의미에서 서로 연관되지 않는 경우가 많음 그보다 벡터의 성분은 특징(feature)을 나타내는데 사용 특징이란 모형(model)이 어떤 유요한 출력(분류명, 회귀값등)을 산출하는 과정에서 사용하는 표본이 가진 어떤 성질 또는 측면 특징 벡터(feature vector)는 특징들의 집합을 나타냄 특징 성분들이 기하학적 의미에서 서로 연관되지 않는다고 해도, 특징 벡터 자체는기하학적으로 취급될 대가 있음. e.g. k-neigbor algorithm와 같은 몇몇의 기계학습 algorithm에서는 벡터를 기하 공간의 어떤한 좌표를 나타내는 것으로 해석 특징 공간(feature space)은 가능한 입력값들의 집합. 모델을 훈련하는데 사용하는 훈련 데이터 집합(training set)은 모델을 실제로 적용할 때 만날 수 있는 모든 가능한 입력으로 구성된 특징 공간을 정확하게 반영하는 데이터 집하이어야 함. 5.1.3 행렬 행렬은 수치들의 이차원 배열 5.1.4 텐서 스칼라는 차원이 없고, 벡터는 차원이 한 개, 행렬은 차원이 두개. 차원이 셋 이상인 수학적 객체를 통칭해서 텐서라고 함 텐서의 차원 수는 텐서의 차수를 결정 텐서의 차수와 행렬의 차수를 혼동하지 말 것(행렬에서의 차수는 m x n, 텐서에서의 차수는 행렬은 2차 텐서, 벡터는 1차 텐서, 스칼라는 0차 텐서) 차원(차원 수) - 텐서 - 기하학 0 - 스칼라 - 점 1 - 벡터 - 직선 2 - 행렬 - 평면 3 - (3차원)텐서 - 입체(부피) 5.2 텐서 산술 연산 5.2.1 베열 연산 Numpy같은 고구 모음에서 모든 차원의 배열들에 수행하는 성분별 연산(element-wise operation) 두 행렬에 대한 성분별 곱셉을 아마마르 곱(Hadamard product)라 부르기도 함 5.2.2 벡터 연산 5.2.2.1 크기 기하학에서 벡터는 크기와 방향을 가짐 벡터의 길이는 벡터의 크기(magnitude)라 부름 ||x|| 5.2.2.2 단위 벡터(unit vector) 벡터의 성분들을 벡터의 크리고 나누어 원래 벡터와 방향이 같되 크기가 1인 벡터 5.2.2.3 벡터 전치(vector transpos) 행벡터를 열벡터로, 또는 반대로 바꾸는 것을 전치(transpose)라 함 transpose() 5.2.2.4 내적(inner product) 내적(inner product)은 점곱(dot product)로 부르기도 함 내적의 결과는 하나의 스칼라 np.dot() 5.2.2.5 사영(projection) 벡터의 사용 또는 투영(prjection)은 한 벡터가 다른 베거의 방향으로 얼마나 나아가는지를 계산 5.2.2.6 외적(outer product) 두 벡터의 외적(outer product)는 행렬(두 벡터의 내적은 스칼라) => 결과 벡터인 외적은 이책에서 벡터곱이라 함 내적과 달리 내적은 벡터들의 길이가 달라도 계산 가능 성분이 m개인 벡터 a와 성분이 n개인 벡터 b의 외적은 a의 성분들과 b의 성분들을 모든 가능한 방식으로 곱해서 배치한 행렬 np.outer() 데카르트의 곱 두 집합의 데카르트 곱은 두 벡터의 외적과 직접적인 연관 관계가 있음 두 집합 A와 B의 데카르트 곱은 A의 모든 요소와 B의 모든 요소의 모든 가능한 쌍으로 이뤄진 집합-> 곱집합(product set)이라고 부르기도 함 신경망 협동 필터링(neural collaborative filtering)과 시각적 질의응답(visual question answering)에 사용 신경망 협동 필터링: 추천 시스템에 사용 시각적 질의응답: 이미지에 대한 텍스트 질문의 답을 구할때 사용 외적은 서로다른 내장 벡터(embedding)들의 혼합으로 볼수 있음 내장 벡터는 신경만의 낮은 층들에서 생성되는 중간 결과물 일박적으로 내장 층은 네트워크 입력의 새로운 표현을 학습했다고 간주됨 내장이란 것을, 이미지 같은 복잡한 입력들을 그보다 훨씬 추상적인(수백, 수천차원 낮으) 공간으로 사상한 것으로 생각해도 됨 5.2.2.7 벡터곱(cross product) 가위곱이라고도 함 3차춴 공간에서만 정의됨 a와 b의 벡터곱은 a와 b가 있는 평면과 수직인 새 벡터(a와 b가 수직일 필요 없음!!) ... 5.2.3 행렬 곱셈 행 벡터와 열 벡터는 행과 열이 하나인 행렬이므로 이번적의 내용은 벡터에도 적용됨 5.2.3.1 행렬 곱셈의 성질들 결합법칙 성립O: (AB)C = A(BC) 분배법칙 성립O: A(B+C) = AB + AC, (A+B)C = AC + BC 교환법칙 성립X: AB <> BA 5.2.3.2 두 행렬을 곱하는 방법 먼저 곱셉 가능여부 확인 필요 A행렬과 B행렬을 곱하려는 경우 A행렬이 열수와 B행렬의 행수가 같아야 함. 행렬곱은 A의 행벡터들은 순서대로 B의 열벡터들과 내적한 것 5.2.3.3 벡터 내적과 외적의 행렬 곱셉 표현 5.2.3.4 Numpy의 행렬 곱셈 np.dot() np.matmul(), @(python 3.5이상) np.dot()과 np.matmul()은 2차원 이상의 배열을 다룰 때 차이가 있음. 한 인수가 스칼라인 경우 np.dot()작동하지만(스칼라가 다른 인수의 모든 성분에 곱해짐) np.matmul()은 error 발생 5.2.4 크로네커 곱(Kronecker product) 행렬 직접곱(matrix direct product)라고도 부름 한 행렬의 성분들에 다른 행렬 전체를 곱해서, 입력 행열들보다 큰 출력 행렬을 산출 블록행렬: 더 작은 행렬들로 이뤄진 행렬곱 크로네커 곲은 A와 B의 차수에 대한 제약이 없음

  5. 선형대수 2부 6.1 정방행렬(squared matrix) 선형대수에서 정방행렬을 특별한 자리 차지 6.1.1 왜 정방행렬인가? 행렬에 열벡터를 곱하면 다른 열벡터가 나옴 -> 행렬이라는 것은 한 종간의 점을 다른 공간의 점으로 변환(사상, mapping)하는 수단 상관변환(affine transformation,아핀변환, 어파인 변환) 원래의 공간의 한 직선이 사상된 광간에서도 여전히 직선이라는 조건을 충족하는 방식으로 점 집합을 한 공간에서 다른 공간으로 사상하는 변환 y=Ax+b ->행렬 변환 A와 이동 b(translation, 병진이동)를 적용해서 x를 새 벡터 y로 사상 순방향 신경망(feedforward neural network)는 입력에 상관 변환들을 차레로 적용하는 것이라고 할 수 있음. 신경망 층들 사이의 가중치 행렬이 변환행렬이고 치우침 벡터가 이동 벡터임. 여기에 활성화 함수(activation function)을 적용해 선형을 비선형으로 바꿈. -> 이런 비선형성 덕분에 신경망은 입력을 적절한 함수 관계(신경망 설계시 의도한)가 반영된 출력으로 사상하나는 방법을 배움 6.1.2 전치, 대각합, 거듭제공 전치 행렬도 벡터처럼 전치 가능 정방행렬은 전치해도 정방행렬 np.trasnpose() 대각합(trace, 자취) 정방행렬의 대각성 성분의 합 대각합은 선형임 tr(A+B)=trA+trB tr(A)=tr(AT) tr(AB)=tr(BA) np.trace() np.diag() 정방행렬의 거듭제곱은 자신과의 행렬 곱셈으로, 개별성분 거듭제곱과 다름 6.1.3 특별한 정방행렬들
    영행렬(zero matrix) np.zeros() 일행렬(ones matrix) np.ones() numpy 기본적으로 64비트 부동소수점 사용, 타입 설정하려면 dtype사용 6.1.4 단위행렬(identity matrix) 대각 성분이 1이고 모두 0인 행렬, 항등행렬이라고도 함 단위행렬의 곱셉은 항등원