CNN 첫걸음

  • 지금까지 배운 다층신경망(MLP) 구조는 각 뉴런들이 선형모델과 활성함수로 모두 연결된 (fully connected) 구조였다.
  • Convolution 연산은 이와 달리 커널(kernel)을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조이다.
  • Convolution 연산의 수학적 의미는 신호(signal)을 커널을 이용해 국소적으로 증폭 또는 감소시켜서 정보를 추출 또는 필터링하는 것이다.
  • 커널은 정의역 내에서 움직여도 변하지 않고(translation invariant) 주어진 신호에 국소적(local)으로 적용한다.

2차원 Convolution 연산

  • 커널을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조

  • 입력크기를 (H, W), 커널 크기를 $(K_H, K_W)$, 출력 크기를 $(O_H, O_W)$ 라고 하면 출력 크기는 다음과 같이 계산한다.

  • 채널이 여러개인 2차원 입력의 경우 2차원 Convolution을 채널 개수만큼 적용한다. 텐서를 직육면체 블록으로 이해하면 좀 더 이해하기 쉬움.

  • Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 때문에 역전파를 계산할 때도 convolution 연산이 나오게 된다.

자세히 보기

베이즈 통계학 맛보기

조건부확률

  • 조건부확률 P(A | B)는 사건 B가 일어난 상황에서 사건 A가 발생할 확률을 의미한다.

  • 베이즈 정리는 조건부확률을 이용하여 정보를 갱신하는 방법을 알려준다.

    • theta: 모수 (데이터가 관찰될 확률)

    • 사후확률: 데이터를 관찰했을 때 이 가설이 성립할 확률 (데이터 관측 이후 측정한 확률이라 사후확률임)

    • 사전확률: 모델링 이전에 사전에 주어진 확률로 이해할 것. (데이터 분석 전 타겟에 대한 모수나 가설 등 미리 설정한 값.)

    • 가능도: 현재 주어진 파라미터(모수)가정에서 이 데이터가 관찰될 확률

    • Evidence: 데이터 전체의 분포

    • ex) COVID-99의 발병률이 10%로 알려져있다. COVID-99에 실제로 걸렸을 때 검진될 확률은 99%, 실제 걸리지 않았을 때 오검진될 확률이 1%라고 할 때, 어떤 사람이 질병에 걸렸다는 결과가 나왔을 때 정말로 COVID-99에 감염되었을 확률은?

      • 사전확률, 민감도(Recall), 오탐율(False alarm)을 가지고 정밀도(Precision)을 구하는 문제임.

      • 사전확률 P(theta) = 10% = 0.1

      • 가능도 P(D given theta) = 99% = 0.99, 오탐율 = 1% = 0.01
      • evidence P(D) = sum(P(D given theta) P(theta)) = 0.99 0.1 + 0.01 * 0.9 = 0.108
      • So, P(theta given D) = 0.1 * (0.99 / 0.108) ~= 0.916
    • COVID-99 판정을 받은 사람이 두 번째 검진을 받았을 때도 양성이 나왔을 때, 진짜 COVID-99에 걸렸을 확률은?

      • 베이즈 정리를 통해 새로운 데이터가 들어왔을 때 앞서 계산한 사후확률을 사전확률로 사용하여 갱신된 사후확률을 계산할 수 있다.
  • 조건부 확률은 유용한 통계적 해석을 제공하지만, 인과관계(Causality)를 추론할 때 함부로 사용해서는 안된다.

    • 인과관계는 데이터 분포의 변화에 강건한 예측모형을 만들 때 필요하다.
    • 인과관계를 알아내기 위해서는 중첩요인(confounding factor)의 효과를 제거하고 원인에 해당하는 변수만의 인과관계를 계산해야 한다. 제거하지 않았을 때는 가짜연관성(spurious correlation)이 나온다.
자세히 보기

부스트캠프 AI Tech 1주차 회고 (2021-08-02 ~ 2021-08-06)

강의내용

  • 강의정리 및 강의노트는 저작권상 이유로 공개하지 않습니다.

진도

  • 파이썬기초 -> Numpy -> Pandas
  • AI 기초수학 -> 벡터 -> 행렬 -> 경사하강법 -> 확률론 -> 통계학 -> CNN -> RNN)

개선할 사항 및 자기성찰

  • Python에 익숙하다고 자만하며 강의를 대충 들었다.
    • 아예 모른다고 할 수 있는 것들도 별로 없었고, 처음 들어보는 것도 없었으나 실제 코딩할 때는 강의를 다시 돌려보는 모습을 보며 아직 자만할 때가 아니라고 느꼈다.
    • 특히 Python pickle과 logging 패키지를 사용한 영속성 객체관리 및 로거사용법과 같이 찾아보면서 할 수 있는 수준으로만 그쳐있는 지식들을 한 번쯤은 파보는 것도 괜찮을 것 같다.
    • 위에 언급한 Pickle과 Logging과 같은 자주 사용될 수 있는 친구들은 Baseline을 따로 만들어서 보관하는 것이 좋을 것 같다.
  • 수학에 좀 더 익숙해지기
    • 머리를 쓰지 말고 손으로 풀어보자.
    • 선형대수/확률론/통계학 세 과목만큼이라도, 반드시 따로 공부를 더 해야한다.

완벽하게 이해하지 못한 내용

  • AI Math 전체.. (책을 구입해서 차근차근 또 봐야겠다.)
    • 자연상수와 관련된 계산공식들 (Log​, Sigma, ​ Exp 같은..) 꼭 알아둘 것!
    • L2 norm
    • Maximum Likelihood Estimation
    • Bayesian Statistics & Probability

과제 수행과정과 결과물

  • 5개의 필수과제와 3개의 선택과제, 9번의 퀴즈
자세히 보기

통계학 맛보기

모수란?

  • 통계적 모델링은 적절한 가정 위에서 확률분포를 추정(inference)하는 것이 목표이며, 기계학습과 통계학이 공통적으로 추구하는 목표이다.
  • 유한한 개수의 데이터만 관찰해서 모집단의 분포를 정확하게 알아낸다는 것은 불가능하다. 때문에 근사적으로 확률분포를 추정할 수밖에 없다.
  • 데이터가 특정 확률분포를 따른다고 선험적(a priori)으로 가정한 후 그 분포를 결정하는 모수(parameter)를 추정하는 방법을 모수적 방법론이라고 한다.
  • 특정 확률분포를 가정하지 않고 데이터에 따라 모델의 구조 및 모수의 개수가 유연하게 바뀌면, 그것을 비모수(nonparametric) 방법론이라 부른다.
    • 기계학습의 많은 방법론은 비모수 방법론에 속한다.
    • 모수가 무한히 많거나 모수가 데이터에 따라 바뀌는 것이지, 비모수방법론에는 모수가 없다는 것이 아니다.

확률분포 가정하기(예제)

  • 우선 히스토그램을 통해 모양을 관찰한다.
    1. 데이터가 2개의 값(0 또는 1)만 가지는 경우 -> 베르누이분포
    2. 데이터가 n개의 이산적인 값을 가지는 경우 -> 카테고리분포
    3. 데이터가 [0, 1]사이에서 값을 가지는 경우 -> 베타분포
    4. 데이터가 0 이상의 값을 가지는 경우 -> 감마분포, 로그정규분포 등
    5. 데이터가 R 전체에서 값을 가지는 경우 -> 정규분포, 라플라스분포 등

데이터로 모수 추정

  • 데이터의 확률분포를 가정했다면, 모수를 추정해볼 수 있다.
  • 정규분포의 모수는 평균과 분산으로, 이를 추정하는 통계량은 아래 식과 같다.
    • 표본분산을 구할 때 N이 아니라 N - 1 로 나누는 이유는 불편(unbiased) 추정량을 구하기 위해서다.
  • 통계량의 확률분포를 표집분포(sampling distribution)라 부르며, 특히 표본평균의 표집분포는 N이 커질수록 (데이터가 많아질수록) 정규분포를 따르게 된다.
    • 이것을 중심극한정리라고 부르며, 모집단의 분포가 정규분포를 따르지 않아도 성립한다.

최대가능도 추정법

  • 표본평균이나 표본분산은 중요한 통계량이지만 확률분포마다 사용하는 모수가 다르므로 적절한 통계량이 달라지게 된다.
  • 이론적으로 가장 가능성이 높은 모수를 추정하는 방법 중 하나는 최대가능도 추정법(maximum likelihood estimation, MLE)이다.
  • 데이터집합 X가 독립적으로 추출되었을 경우엔 로그가능도를 최적화한다.
    • 로그가능도를 사용하는 이유
      1. 로그가능도를 최적화하는 모수는 가능도를 최적화하는 MLE가 된다.
      2. 데이터의 숫자가 수억 단위가 된다면 컴퓨터의 정확도로는 가능도를 계산하는 것이 불가능해진다.
      3. 데이터가 독립일 경우, 로그를 사용하면 가능도의 곱셈을 로그가능도의 덧셈으로 바꿀 수 있기 때문에 컴퓨터로 연산이 가능해진다.
      4. 경사하강법으로 가능도를 최적화할 때 미분 연산을 사용하게 되는데, 로그가능도를 사용하면 연산량을 O(N^2)에서 선형시간으로 줄일 수 있다.
      5. 대개 손실함수의 경우 경사하강법을 사용하므로 음의 로그가능도(negative log-likelihood)를 최적화하게 된다.
자세히 보기