==========================
학습내용
[AI Math 8강] 베이즈 통계학 맛보기

D 관찰하는 데이터. theta 관찰하는 이벤트, 파라미터, 모수.
posterior 데이터를 관찰을 했을 때 이 파라미터가 성립할 확률. 데이터를 관찰한 후에 측정한 거라.
사전확률은 사건이 일어나기 전에 모델링하고자 하는 사전에 미리 가정, 모델링 하기 전에 사전에 설정하는 것.
P(D) evidence의 확률, 여기선 진짜로 걸렸을 확률
오탐률(False alarm)이 오르면 테스트의 정밀도(Precision)가 떨어진다.

P(theta|D) 질병에 걸렸다고 검진결과가 나왔을 때 진짜로 감염되었을 확률. 질병에 걸렸을 때 걸렸다고 확진판정이 날 확률. 정밀도.

P(theta) 가 한번 계산하면 -> P(thata|D) 로 업데이트 된다고 볼 수 있을 듯.

앞에서 조건부로 어떤 관계가 있는지 예측해보는게 있었지만 그것만으로는 인과관계까지 추론하는건 불가능하다.
R 지능. T 키. R과 T가지고만 하면 키가 클수록 지능이 높게 나옴. 하지만 Z가 나이. 나이의 연관성이 있다. Z의 효과를 제거하지 않으면 가짜 연관성(spurious correlation)이 나온다. 중첩요인을 제거해야 한다.

어떤 전체적인 확률로 퉁치는듯
[DLBasic] 딥러닝 기본 용어 설명 - Historical Review
구현능력, 수학능력, 최근 많은 연구결과들 알기 (논문 읽기)
딥러닝 중요포인트
- 데이터
- 이미지를 라벨로 바꿔주는 모델. 정의.
- loss function. 회귀문제를 풀땐 제곱을 최소화한다. 분류문제. cross entropy
- 이런 loss function을 최소화하는 알고리즘.
새로운 논문을 볼 때 이 4가지 측면에서 보면 이 논문이 기존 연구에 비해서 어떤 장점이 있고 대비되는 면은 무었인가 알기 쉽다.
Regression Task 는 MSE로, Classification Task는 Ce로, Probabilistic Task는 MLE(=MSE) 로.. 문제를 풀 때 loss function loss가 줄어든다고 해서 항상 원하는 값을 얻는다는 보장이 없음. 절대값을 쓴다던가.. 이걸 왜 쓰는지. 문제를 어떻게 푸는지 아는게 중요
[DLBasic] PyTorch 시작하기
pytorch(그 외 tensorflow도..). 딥러닝 프레임워크
- Numpy 구조를 가지는 Tensor 객체로 array 표현
- 자동미분을 지원하여 DL 연산을 지원
- 다양한 형태의 DL을 지원하는 함수와 모델을 지원함
윈도우는
https://medium.com/swlh/connecting-local-vscode-to-google-colabs-gpu-runtime-bceda3d6cf64
절대경로. \\ 이스케이프 꼭 만들고 .exe
Pytorch basics for DL newbies

numpy to tensor
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
(2, 5)
tensor([[0., 1., 2., 3., 4.],
[5., 6., 7., 8., 9.]])
2
tensor([[5., 6., 7., 8., 9.]])
tensor([[0., 1., 2.],
[5., 6., 7.]])
tensor operations
array([[ 60, 70],
[160, 195]])
tensor([[0., 1.],
[4., 9.]])
tensor([[0., 1.],
[4., 9.]])
tensor([[ 0., 5.],
[10., 15.]])
tensor(4.5000)
tensor([4., 5.])
tensor([0.5000, 2.5000, 4.5000, 6.5000, 8.5000])
tensor([[0., 1.],
[2., 3.],
[4., 5.],
[6., 7.],
[8., 9.]])
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
tensor([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]])
torch.Size([1, 10])
tensor([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
tensor([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]])
tensor([[0.],
[1.],
[2.],
[3.],
[4.],
[5.],
[6.],
[7.],
[8.],
[9.]])
tensor operations for ML/DL formula
tensor([0.3458, 0.4224, 0.2318])
tensor([0, 1, 0, 1, 3, 0, 0, 3, 2, 2])
tensor([[1, 0, 0, 0],
[0, 1, 0, 0],
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[1, 0, 0, 0],
[1, 0, 0, 0],
[0, 0, 0, 1],
[0, 0, 1, 0],
[0, 0, 1, 0]])
torch autogard
tensor(8.)
Q=3a3−b2Q=3a3−b2
∂Q∂a=9a2∂Q∂a=9a2
∂Q∂b=−2b∂Q∂b=−2b
tensor([36., 81.])
tensor([-12., -8.])
AutoGrad for Linear Regression
https://towardsdatascience.com/linear-regression-with-pytorch-eb6dedead817
y=2x+1y=2x+1
array([[ 0.],
[ 1.],
[ 2.],
[ 3.],
[ 4.],
[ 5.],
[ 6.],
[ 7.],
[ 8.],
[ 9.],
[10.]], dtype=float32)
array([[ 1.],
[ 3.],
[ 5.],
[ 7.],
[ 9.],
[11.],
[13.],
[15.],
[17.],
[19.],
[21.]], dtype=float32)
[DLBasic] 뉴럴 네트워크 - MLP
인간의 뇌를 모방했다고 잘 된다하고 끝나는게 아니라 이게 왜 잘되는지를 분석하는게 중요하다..
y-hat은 내가 현재 예측한 출력값
각각 w와 b에 관해 loss function 편미분해서 새로운 w,b
행렬을 곱한다는 것을 해석하면 두 개의 vector space 의 변환. 선형 회귀에선 서로 다른 차원 사이의 선형 변환 이겠지.. weight


내가 필요한 것은 바로 (p) 이 중간의 Nonlinear transform. 결국은 x라는 입력에서 y로 출력하는 맵핑이 표현할 수 있는 cupacity . 네트워크가 표현할 수 있는 표현력을 최대한 극대화 하기 위해서는 단순히 선형결합을 n번 반복하는게 아니라 한번 선형결합이 반복되면 그 뒤에 activatation function을 이용해서 nonlinear function 을 거치고 그렇게 얻어지는 feature vector를 다시 선형변환을 하고 다시 transform을 거치고.. 얘를 n번 반복하게 되면 더 많은 표현력을 얻게 되는 것. 그게 neural networks

각 loss function의 특징은 뭐고 내가 원하는 결과를 얻을 수 있는지.
예를들면 Regression Task 문제에서 MSE는 혼자 튀어있는 값 예측하려다 전체가 망가진다
Classification Task 에선 CE를 쓰는데 one hot vector를 쓴다. 걔만 1이고 나머진 다 0. 그럼 percentage 로써 minimize 한다는게 뭐냐면 y-hat이라고 불리우는 걸 (logic) 내 neural networks의 출력값중에서 해당하는 클래스에 값만 높이겠다는 의미. 걔가 다른 애들에 비해 얼마나 높아질지가 중요한게 아니라 그 차원에 해당하는 출력값을 키우는게 목적. 키운다는건 얘가 10이어도 되고 10000이어도 되고. 근데 분류한다고 했을 때 (길게 나오는 라벨 문제를 풀 때) 결과가 나왔을 때 긴 결과 중에서 제일 큰 숫자가 들어있는 index만 고려하기 때문에 (숫자 크기에 상관없이) 그럼 분류를 잘 할 수 있다. 다른 값을 대비 높기만 하면 된다. 근데 그걸 수학적으로 세우는게 까다로우니까 cross entropy loss function 을 사용하는 것. 그래서 이게 최선일까 아는 것.
Probabilistic Task에선 결과가 단순히 출력값이 아니라 확률적인 모델을 하고 싶을 때, 사람 나이를 맞출 때 이사람은 20살이다, 32살이다가 아닌 32살인것 같은데 음.. 하는 확실하지 않은 정보를 찾고 싶을 때 활용한다 한다.
Multi Layer Perceptron
Set hyper-parameter
Prepare datadaset
Defining Model
Define help function
Initial Evaluation
Train MLP Model
Test MLP Model

[DLBasic] 데이터셋 다루기
모듈화를 하는것이 중요하다. 블록을 만들듯이 얘 끼워넣고 얘 끼워넣고..
class MyDataset(torch.utils.data.Dataset):
def __init__(self, x_data, y_data):
self.x_data = x_data
self.y_data = y_data
def __len__(self):
return len(self.y_data)
def __getitem__(self, idx):
x = torch.FloatTensor(self.x_data[idx])
y = torch.FloatTensor(self.y_data[idx])
return x, y
보통 torch.utils.data.Dataset 을 받아서 데이터셋을 만듬
__init__ 은 초기값 설정
__len__ 은 데이터의 전체길이
__getitem__ 은 iterator를 부를 때 특정한 index 값을 가지고 부르게 되는데 그 index 값을 부를 때 tensor 식으로 항상 변환해서 반환해야 함.
데이터로더는 어떻게 쓸건가
=======================
과제 / 퀴즈
어려운거 없었음
======================
피어세션
엔트로피는 그냥 데이터값이라 상수라서 크로스 엔트로피만 보는거다
ppt에도 오타가 있을 수 있음을 명심하라
=========================
후기
환경설정하느라 시간 다 잡아먹어서 매우 늦게 끝났다. 피곤하다.
같이 하던 한 분이 안타깝게도 건강 상 그만두신다고 한다. 건강관리에 신경써야겠다.
'과거의 것들 > AI Tech boostcamp' 카테고리의 다른 글
AITech 학습정리-[DAY 13] Convolutional Neural Networks (0) | 2021.11.26 |
---|---|
AITech 학습정리-[DAY 12] 최적화 (0) | 2021.11.26 |
AITech 학습정리-[DAY 10] 시각화 / 통계학 (0) | 2021.11.26 |
AITech 학습정리-[DAY 9] Pandas II / 확률론 (0) | 2021.11.26 |
AITech 학습정리-[DAY 8] Pandas I / 딥러닝 학습방법 이해하기 (0) | 2021.11.26 |