기록을 남기자

전체 글 186

카테고리 설명
개발,CS,PS 기록을 남기려 합니다.
  • 5. CNN 첫걸음 Convoultion 연산  6. RNN 첫걸음 시퀀스 데이터: 소리, 문자열, 주가 등의 데이터를 시퀀스 데이터로 분류시퀀스 데이터는 독립동등분포 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 된다. 이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률분포를 다루기 위해 조건부 확률을 이용할 수 있다. 위 조건부 확률은 과거의 모든 정보를 사용하지만 시퀀스 데이터를 분석할 때 모든 과거 정보들이 필요한 것은 아니다.고정된 길이 타우 만큼의 시퀀스를 사용하는 경우 -> 자기회귀모델 이전 직전 정보, 잠재변수 -> 고정된 길이의 모델을 사용 그렇지만 과거의 잠재변수를 어떻게 ?-> 순환신경망 RNN RNN (Recurrent Neur..

  • 3. 통계학 맛보기 강의 목표모수의 개념과 모수를 추정하는 방법으로 최대가능도 추정법을 소개정규분포, 카테고리분포에서의 예제로 최대가능도 추정법을 설명 표본분포와 표집분포, 가능도(likelihood)와 확률 등 헷갈릴 수 있는 개념들이 많이 소개되므로 각각의 정확한 의미와 차이점 최대가능도 추정법을 통해서 정답에 해당하는 확률분포와 모델이 추정하는 확률분포의 거리를 최소화함으로써 모델을 학습시킬 수 있으며, 이 원리는 딥러닝/머신러닝에서 아주 유용하게 사용되기 때문에 확실하게 이해하셨으면 좋겠습니다. 모수데이터가 특정 확률분포를 따른다고 선험적으로 가정후 그 분포를 결정하는 모수를 추정하는 방법을 모수적 방법론특정 확률분포를 가정하지 않고 데이터에 따라 모델의 구조 및 모수의 개수가 유연하게 바뀌면 비..

  • 1. 딥러닝 학습방법각 행벡터 O를 데이터 X와 가중치 행렬 W사이의 행렬곱과 절편 b벡터의 합으로 표현해보자.화살표개수 p*d => 즉 W 벡터임을 알수 있다.   학습을 하는 경우에는 softmax가 필요하고, 추론을 할때는 softmax가 굳이 필요하지 않고 one-hot벡터가 필요. 활성 함수 : 실수위에 정의된 비선형 함수로 딥러닝에서 중요한 개념시그모이드 함수나 tanh함수는 전통적으로 많이쓰이던 활성함수지만 딥러닝에선 ReLU함수를 많이 쓰고 있다.  층을 여러개 쌓는 이유층이 깊을수록 목적함수를 근사하는데 필요한 뉴런의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습이 가능층이 얇을수록 필요한 뉴런의 기하급수적으로 늘어나 넓은 신경망이 되어야 한다. 딥러닝 학습원리: 역전파 알고리즘 2...

  • 접선의 기울기를 이용해 함수의 최솟값으로 점을 이동시키는 원리를 바탕으로 경사하강법의 알고리즘과 수식을 이해해보자.변수가 벡터인 경우, 편미분을 통해 구한 그래디언트 벡터를 d-차원으로 경사하강법을 확장할 수 있다는 개념을 알아보자.  접선의 기울기를 이용해 함수의 최솟값으로 점을 이동시키는 원리를 바탕으로 경사하강법의 알고리즘과 수식을 이해해보자.변수가 벡터인 경우, 편미분을 통해 구한 그래디언트 벡터를 d-차원으로 경사하강법을 확장할 수 있다는 개념을 알아보자. 미분값을 더하면 경사상승법이라 하며 함수의 극대값의 위치를 구할때 사용한다. -> 목적함수를 최대화 할때미분값을 빼면 경사하강법이라 하며 함수의 극소값의 위치를 구할때 사용한다. -> 목적함수를 최소화 할때경사상승/경사하강 방법은 극값에 도달..

  • https://www.boostcourse.org/ai100/lecture/739176 인공지능 기초 다지기 (부스트캠프 AI Tech 7기 프리코스)부스트코스 무료 강의www.boostcourse.org강의를 보고 정리한 내용이며, 모르는 내용을 위주로 정리하려 한다. 1. 벡터와 행렬 - 1. 벡터벡터는 숫자를 원소로 가지는 리스트, 배열이다.벡터는 공간에서의 한점, 원점에서의 상대적 위치를 나타냄벡터의 연산은 합, 차, 내적, 스칼라곱 등이 가능 벡터의 노름(norm)노름(norm)은 원점에서 부터의 거리를 나타냄L1-노름 : 각 성분의 변화량의 절대값을 모두 더함L2-노름: 피타고라스 정리를 이용해 유클리드 거리를 계산함  노름의 종류에 따라 기하학적 성질이 달라지고 머신러닝에선 각 성질들이 필요..

작성일
2024. 7. 5. 17:19
작성자
ssun_bear
반응형

5. CNN 첫걸음

 

Convoultion 연산

 

 


6. RNN 첫걸음

 

시퀀스 데이터

: 소리, 문자열, 주가 등의 데이터를 시퀀스 데이터로 분류

시퀀스 데이터는 독립동등분포 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 된다.

 

이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률분포를 다루기 위해 조건부 확률을 이용할 수 있다.

 

위 조건부 확률은 과거의 모든 정보를 사용하지만 시퀀스 데이터를 분석할 때 모든 과거 정보들이 필요한 것은 아니다.

고정된 길이 타우 만큼의 시퀀스를 사용하는 경우 -> 자기회귀모델

 

이전 직전 정보, 잠재변수 -> 고정된 길이의 모델을 사용

 

그렇지만 과거의 잠재변수를 어떻게 ?

-> 순환신경망 RNN

 

RNN (Recurrent Neural Network) 이해하기

가장 기본적인 RNN모델은 MLP와 유사한 모양

W(2), Wx(1), Wh(1)은 t에 따라서 변하는 행렬이 아니다. 이 가중치 행렬은 동일한 값을 t에따라 가진다.

 

-> BPTT를 통한 역전파 알고리즘의 계산이 불안정해지므로 길이를 끊는 것이 필요

-> truncated BPTT

 

반응형
작성일
2024. 7. 5. 16:46
작성자
ssun_bear
반응형

3. 통계학 맛보기

 

강의 목표

모수의 개념과 모수를 추정하는 방법으로 최대가능도 추정법을 소개

정규분포, 카테고리분포에서의 예제로 최대가능도 추정법을 설명

 

표본분포와 표집분포, 가능도(likelihood)와 확률 등 헷갈릴 수 있는 개념들이 많이 소개되므로 각각의 정확한 의미와 차이점

 

최대가능도 추정법을 통해서 정답에 해당하는 확률분포와 모델이 추정하는 확률분포의 거리를 최소화함으로써 모델을 학습시킬 수 있으며, 이 원리는 딥러닝/머신러닝에서 아주 유용하게 사용되기 때문에 확실하게 이해하셨으면 좋겠습니다.

 

모수

데이터가 특정 확률분포를 따른다고 선험적으로 가정후 그 분포를 결정하는 모수를 추정하는 방법을 모수적 방법론

특정 확률분포를 가정하지 않고 데이터에 따라 모델의 구조 및 모수의 개수가 유연하게 바뀌면 비모수 방법론

 

 

표본 평균, 표본 분산

 

최대가능도 추정법

표본평균이나 표본분산은 중요한 통계량이지만 확률분포마다 사용하는 모수가 다르므로 적절한 통계량이 달라지게 된다.

이론적으로 가장 가능성이 높은 모수를 추정하는 방법 중 하나는 최대가능도 추정법(MLE)이다.

 

 

왜 로그가능도를 사용하는지?

미분 연산을 사용하여 로그가능도를 사용하면 연산량이 O(n^2)에서 O(n)으로 줄여줌

대게의 손실함수의 경우 경사하강법을 사용하므로 음의 로그가능도를 최적화하게 됨

 

최대가능도 추정법 예제: 정규분포

최대가능도 추정법 예제: 카테

고리 분포

딥러닝에서 최대가능도 추정법

 

확률분포의 거리를 구해보자

데이터 공간에 두개의 확률분포 P(x), Q(x)가 있을 경우 두 확률분포 사이의 거리를 계산할 때 다음과 같은 함수들을 이용한다

- 총변동거리

- 쿨백-라이블러 발산

- 바슈타인 거리

 

쿨백-라이블러 발산(KL Divergence)

 

Further Question

 

1. 확률과 가능도의 차이는 무엇일까요? (개념적인 차이, 수식에서의 차이, 확률밀도함수에서의 차이)
2. 확률 대신 가능도를 사용하였을 때의 이점은 어떤 것이 있을까요?

3. 다음의 code snippet은 어떤 확률분포를 나타내는 것일까요? 해당 확률분포에서 변수 theta가 의미할 수 있는 것은 무엇이 있을까요?

import numpy as np
import matplotlib.pyplot as plt
theta = np.arange(0, 1, 0.001)
p = theta ** 3 * (1 - theta) ** 7
plt.plot(theta, p)
plt.show()

 


4. 베이즈 통계학 맛보기


조건부확률에서 이어지는 개념인 베이즈 정리와 인과관계 추론에 대해 설명

 

조건부 확률

 

 

 

조건부 확률은 유용한 통계적 해석을 제공하지만 인과관계를 추론할 때 함부로 사용해서는 안된다.

인과관계는 데이터 분포의 변화에 강건한 예측 모형을 만들 때 필요하다.

인과관계를 알아내기 위해서는 중첩요인의 효과를 제거하고 원인에 해당하는 변수만의 인과관계를 계산해야한다.

 

 

중첩효과를 제거한것과 조건부확률로 계산한 치료효과가 정반대의 결과가 나오게 되므로 인과관계추론을 임의로 하면 안된다.

반응형
작성일
2024. 7. 5. 15:43
작성자
ssun_bear
반응형

1. 딥러닝 학습방법

각 행벡터 O를 데이터 X와 가중치 행렬 W사이의 행렬곱과 절편 b벡터의 합으로 표현해보자.

화살표개수 p*d => 즉 W 벡터임을 알수 있다. 

 

 

학습을 하는 경우에는 softmax가 필요하고, 추론을 할때는 softmax가 굳이 필요하지 않고 one-hot벡터가 필요.

 

활성 함수 : 실수위에 정의된 비선형 함수로 딥러닝에서 중요한 개념

시그모이드 함수나 tanh함수는 전통적으로 많이쓰이던 활성함수지만 딥러닝에선 ReLU함수를 많이 쓰고 있다.

 

 

층을 여러개 쌓는 이유

층이 깊을수록 목적함수를 근사하는데 필요한 뉴런의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습이 가능

층이 얇을수록 필요한 뉴런의 기하급수적으로 늘어나 넓은 신경망이 되어야 한다.

 

딥러닝 학습원리: 역전파 알고리즘

 


2. 확률론 맛보기

 

딥러닝에서 확률론이 필요한 이유?

딥러닝은 확률론기반의 기계학습이론에 바탕을 두고 있음

기계학습에서 사용되는 손실함수(loss function)들의 작동원리는 데이터 공간을 통계적으로 해석 유도

회귀분석에서 손실함수로 사용되는 L2-노름은 예측오차의 분산을 가장 최소화하는 방향으로 학습 유도

분류문제에서 사용되는 교차 엔트로피(cross-entropy)는 모델 예측의 불확실성을 최소화 하는 방향으로학습 유도

분산 및 불확실성을 최소화하기 위해서는 측정하는 방법을 알아야 합니다.

 

이산확률변수 vs. 연속확률변수

확률분포D에 따라 이산형과 연속형 확률변수로 구분

이산형 확률변수는 확률변수가 가질 수 있는 경우의 수를 모두 고려하여 확률을 더해서 모델링

연속형 확률 변수는 데이터 공간에 정의된 확률변수의 밀도 위에서의 적분을 통해 모델링한다.

(밀도는 누적확률분포의 변화율을 모델링하며 확률로 해석하면 안된다)

 

기대값

연속확률분포에서는 밀도함수를, 이산확률분포에서는 질량함수를 곱해준다.

 

몬테카를로 샘플링

기계학습의 많은 문제들은 확률분포를 명시적으로 모를때가 대부분이다.

확률분포를 모를때 데이터를 이용하여 기대값을 계산하려면 몬테카를로 샘플링 방법을 사용해야한다.


반응형
작성일
2024. 7. 5. 14:29
작성자
ssun_bear
반응형

접선의 기울기를 이용해 함수의 최솟값으로 점을 이동시키는 원리를 바탕으로 경사하강법의 알고리즘과 수식을 이해해보자.

변수가 벡터인 경우, 편미분을 통해 구한 그래디언트 벡터를 d-차원으로 경사하강법을 확장할 수 있다는 개념을 알아보자.

 

 

접선의 기울기를 이용해 함수의 최솟값으로 점을 이동시키는 원리를 바탕으로 경사하강법의 알고리즘과 수식을 이해해보자.

변수가 벡터인 경우, 편미분을 통해 구한 그래디언트 벡터를 d-차원으로 경사하강법을 확장할 수 있다는 개념을 알아보자.

 

미분값을 더하면 경사상승법이라 하며 함수의 극대값의 위치를 구할때 사용한다. -> 목적함수를 최대화 할때

미분값을 빼면 경사하강법이라 하며 함수의 극소값의 위치를 구할때 사용한다. -> 목적함수를 최소화 할때

경사상승/경사하강 방법은 극값에 도달하면 움직임을 멈춘다. -> 목적함수 최적화 완료

 

종료조건: 컴퓨터에서 미분이 정확하게 0이되는 것은 불가능하므로 eps보다 작을때 종료하는 조건이 필요

 

변수가 벡터이면 편미분을 사용하여 계산한다.

 

다변수 함수에서는 절댓값대신 그래디언트벡터를 사용한다.

 

 

경사하강법은 미분가능하고 볼록(convex)한 함수에 대해 적절한 학습률(lr)과 학습횟수를 선택했을때 수렴이 보장되어있다.

특히 선형회귀의 경우 목적식 ||y-Xb||^2은 회귀계수 b에 대해 볼록함수이기에 알고리즘을 충분히 돌리면 수렴이 보장된다.

 

확률적 경사하강법

확률적 경사하강법은 모든 데이터를 사용해서 업데이트 대신 데이터 한개 또는 일부 활용하여 업데이트를 한다.

볼록이 아닌(non-convex)목적식은 SGD를 통해 최적화 할 수 있습니다.

 

SGD는 데이터의 일부를 가지고 패러미터를 업데이트하기에 연산자원을 좀 더 효율적으로 활용하는데 도움이 된다

SGD는 볼록이 아닌 목적식에서도 활용가능하므로 경사하강법보다 머신러닝학습에 더 효율적이다.

 

딥러닝에서 사용되는 데이터는 크기와 양이 방대하기에 경사하강법처럼 모든 데이터를 업로드하면 메모리가 부족하여 out-of-memory가 발생 -> GPU메모리 통제 불가능 -> 따라서 확률적 경사하강법을 활용하여 미니배치로 쪼갠 데이터를 업로드!

반응형
작성일
2024. 7. 4. 21:30
작성자
ssun_bear
반응형

https://www.boostcourse.org/ai100/lecture/739176

 

인공지능 기초 다지기 (부스트캠프 AI Tech 7기 프리코스)

부스트코스 무료 강의

www.boostcourse.org

강의를 보고 정리한 내용이며, 모르는 내용을 위주로 정리하려 한다.

 

1. 벡터와 행렬

 

- 1. 벡터

벡터는 숫자를 원소로 가지는 리스트, 배열이다.

벡터는 공간에서의 한점, 원점에서의 상대적 위치를 나타냄

벡터의 연산은 합, 차, 내적, 스칼라곱 등이 가능

 

벡터의 노름(norm)

노름(norm)은 원점에서 부터의 거리를 나타냄

L1-노름 : 각 성분의 변화량의 절대값을 모두 더함

L2-노름: 피타고라스 정리를 이용해 유클리드 거리를 계산함

 

 

노름의 종류에 따라 기하학적 성질이 달라지고 머신러닝에선 각 성질들이 필요할때가 상이하기에 둘다 사용한다.

 

 

두 벡터 사이의 거리와 각도를 노름을 활용하여 구할 수 있다.

거리: |x-y|

각도: cos a=(|x|^2+|y|^2-|x-y|^2)/2|x||y| -> arccos(cos(a)) = a (제 2 코사인 법칙 활용가능)

 

내적은 정사영된 길이와 관련이 있다

Proj(x) = |x| cosa

내적은 정사영의길이를 벡터 y의길이 |y|만큼 조정한 값이다

 

- 2. 행렬

행렬은 벡터를 원소로 가지는 2차원 배열

행(row)와 열(column)이라는 인덱스를 가진다.

행렬의 특정 행(열)을 고정하면 행(열)벡터라 부른다.

 

전치행렬 X^T: 행과 열의 인덱스가 바뀐 행렬을 말한다.

 

행렬을 이해하는 방법 (1)

벡터가 공간에서의 한 점이라면 행렬은 공간에서의 여러점을 나타낸다.

 

행렬의 연산: 덧셈, 뺄셈, 성분곱, 스칼라곱은 벡터와의 연산과 동일하다.

행렬의 곱셈: i 번째 행벡터와 j 번째 열벡터 사이의 내적을 성분으로 가지는 행렬을 계산하는 방식으로 이뤄진다.

행렬의 내적: np.inner는 i번째 행벡터와 j번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산한다. (수학에서의 내적과 다름)

 

행렬을 이해하는 방법(2)

행렬은 벡터공간에서 사용되는 연산자로 이해. 행렬 곱을 통해 다른 차원의 공간으로 보낼 수 있다.

행렬 곱을 통해 패턴을 추출할 수 있고 데이터를 압축할 수도 있다.

 

역행렬 이해하기

A^(-1) 존재 조건: det(a) != 0 , 행=열 개수

numpy.linalg.inv로 구할 수 있다.

 

만약 역행렬 계산 할 수 없다면 유사 역행렬(pseudo-inverse) 또는 무어-펜로즈(Moore-Penrose) 역행렬 A+를 이용한다.

 

numpy.linalg.pinv 로 구할 수 있다.

 

연립방정식은 np.linalg.pinv를 이용하여 해를 구할 수 있다.

 

선형회귀식을 np.linalg.pinv를 이용하여 데이터를 선형 모델로 해석하면 구할 수 있다.

 

y절편을 따로 추가해줘야 하는 이유

sklearn을 사용할때는 자동으로 y절편( h(x)=ax+b라고 한다면 b에 해당하는 값)을 추정해주지만, Linalg는 회귀계수(회귀 선의 기울기)만 추정하기 때문에 y절편을 따로 추가해 줘야함

반응형