1.21 (금) - 파이썬, AI math

ivor·2022년 1월 23일
1

부스트캠프 AI TECH

목록 보기
5/18

파이썬

pandas

numpy처럼 유용한 라이브러리.
panel data → pandas
구조화된 데이터 처리 지원.
numpy와 연동.
table형 데이터 처리에 강력함.

import pandas as pd

  • 구성
    • sample data(data table)
    • attribute, field, feature, column
    • instance, row, tuple
    • feature vector
    • data, value
  • datas.head(n)
    위에서 n개의 row
  • datas.columns = [~,~,~]
    column명 지정
  • datas.values
    numpy 타입으로
  • data frame
    data table 전체를 포함하는 object
  • series
    • feature vector(column datas)를 포함하는 object
    • numpy.ndarray의 sub-class
    • value뿐만 아니라 index 존재
      • index는 숫자말고 문자로도 설정 가능
    • dict type과 유사한 형태. 따라서 dict type data를 받아올 수도 있다.
  • dataframe memory
    • numpy array-like
    • column별로 data type이 다를 수 있음.
    • index, column 등으로 데이터에 접근.
    • datas.loc[]
    • datas.iloc[]

math

CNN(Convolutional Neural Network)

kernel을 이용한 convolution 연산.
MLP가 거대한 가중치 행렬을 이용한 fully-connected 형태라면 CNN은 일정 크기의 kernel을 만들고 그 커널을 입력벡터 X 상에서 움직이며 연산을 수행함.

  • convolution is also linear
  • number of parameters ↓

RNN(Recurrent Neural Network)

순서가 의미를 갖는 데이터(sequential data)에 대해서.
ex) 소리, 문자열, 주가, etc.

seq data는 이전의 정보를 바탕으로 앞으로 발생할 확률 분포를 알아야 함.
→ 조건부 확률
→ 베이즈 정리

  • seq data 길이가 가변적
    • 때문에 가변 데이터를 다룰 모델과 방법론이 필요
    • 만약 고정된 길이만큼의 seq만 사용한다면?
      → 바로 이전 정보(X(t-1))를 제외한 나머지 정보(X(1)~X(t-2))를 H(t)라는 잠재 변수로 인코딩
      → "잠재 AR(Autoregressive Model) 모델"
  • RNN의 구현



Questions

  • pandas의 유용한 기능들에 대해 좀 더 자세히 알아볼 필요가 있다.
    • 실제 모델을 만든다고 할 때 어떤 식으로 사용될지, numpy와의 연동은 어떤 식으로 하면 좋을지를 계속 생각하면서
  • convolution 연산은 신호 처리를 공부하면서 접해본 경험이 있다. 이 연산의 어떤 점이 효과적인지 고민해보자.
    • CNN이 활용된 사례를 찾아보자.
  • NLP(자연어 처리)에서는 RNN이 중요할 거 같은데 파이썬으로 간단한 예제라도 구현해보자.
  • 잠재 AR 모델은 seq data가 가변적이라는 문제를 해결하기 위해 등장한 것처럼 느껴지는데 결국 X(t-1)항을 제외한 이전 항들을 H(t)로 묶는다고 해도 실제로는 그대로 가변적 길이의 데이터 아닌가? 잠재항으로 묶는 것이 어떠한 효용이 있는지 잘 모르겠다.
  • BPTT가 정확히 어떤 식으로 이루어지는지 잘 와닿지 않는다.

회고

일주일(정확히는 5일)이 지났다. 전체적인 큰 그림만 간신히 보이는 느낌이다. 아쉽다면 아쉽고 다행이라면 다행인 부분은 어떤 부분이 중요한지, 내가 어떤 부분을 아직 잘 모르는지 정도는 알아가는 기분이라는 것.

다음주부터는 pytorch 등을 배우고 실습에 조금 더 가까워진다. 기대도 되지만 한편으로는 아직 기초도 잘 닦아놓지 못한 것 같아서 걱정도 된다.

한 주를 돌아봤을 때 복습할 시간이 부족하다는 느낌을 받았다. 원래는 부캠과 더불어 알고리즘, CS 공부도 병행할 생각이었는데 이런 상태면 다른 공부를 할 여력이 없을 듯하다. 공부 방법에 대한 고민도 필요한 시점이라는 생각이 든다. 시간을 보다 효율적으로 써야할 것 같다.

맞닥뜨린 상황이 지나치게 쉽거나 어려우면 몰입이 어렵다고 한다. 즉 상황(혹은 문제)의 난이도와 내 실력이 어느정도 맞아야 한다는 것.
부캠 과정의 난이도가 어렵게 느껴진다고 해서 그 난이도를 끌어내릴 순 없다. 결국 내가 몰입하려면 내 실력을 높이는 수밖에 없다.

2주차도, 그 이후도. 나의 하루를 후회없이 빛내기를.

profile
BEST? BETTER!

0개의 댓글