크크루쿠쿠

[Week1] Python Basics for AI & AI Math_Overview [Day5] 본문

DeepLearning/부스트캠프 AI Tech

[Week1] Python Basics for AI & AI Math_Overview [Day5]

JH_KIM 2021. 8. 8. 22:46

Numpy

행렬과 매트릭스를 어떻게 코드로 표현할것인가?

→ list로 표현

하지만 list의 경우에는 큰 데이터 처리에 부적합 → 메모리 효율이 좋지 않음

이를 해결하기위해 numpy 라는 패키지를 사용

  • Numerical Python
  • 파이썬 과학 계산용 패키지 → 다씀
  • Array 연산의 표준
  • list에 비해 빠르고 효율적
  • for 문 없이 데이터 배열에 대한 처리 제공
  • 다양한 기능 제공

np.array 함수를 활용해 배열을 생성한다.

 

 

List와 가장 큰 차이점은 dynamic typing not supported

→ 여러가지 data type을 넣을 수 없음

 

list 와의 차이점

Handling shape

reshape

Array의 shape 크기를 변경함

→ element의 갯수는 동일함

flatten

다차원 array를 1차원 array로 변환

Indexing & Slicing

Indexing

list와 달리 이차원 배열에서 [0,0] 표기법을 제공함

 

Slicing

list와 다르게 행과 열 부분을 나눠서 slicing 이 가능함

matrix의 부분 집합을 추출할 때 유용

 

zeros

0으로 가득찬 ndarray 생성

np.zeros(shape, dtype, order)

ones

1로 가득찬 ndarray 생성

zeros와 같음

empty

shape만 주어지고 비어있는 ndarray 생성

→ memory initialization 이 되지 않음

something_like

zeros_like, ones_like, empty_like

→ 기존 ndarray shape만큼의 1,0,empty를 반환해줌

identity

단위행렬을 생성함

n→ number of rows

eye

대각선이 1인 행렬

identity와 다르게 정사각행렬 아니여도 가능

diag

대각 행렬의 값을 추출함

→ 중간값들만 추출해줌

random sampling

np.random.uniform → 균등분포

np.random.noraml → 정규분포

axis

모든 operation function을 실행할 때 기준이 되는 dimension 축

 

concatenate

numpy array를 붙이는 함수

axis를 사용하는 방법과 사용하지 않는 방법이 있다.

 

 

axis 사용 x
axis 사용한 방법

Comparison operation

numpy는 배열의 크기가 동일 할 때 element간 비교의 결과를 Boolean 타입으로 반환

'

np.where → 조건에 맞는 index값 반환

np.isnan → not a number

np.argmax → 최대값의 index 반환 (axis 기반으로 반환 가능)

 

Pandas

  • 구조화된 데이터의 처리를 지원하는 Python 라이브러리
  • numpy와 통합하여 스프레드시트 처리 기능 제공

구성

Series → DataFrame중 하나의 Column에 해당하는 데이터의 모음 Object

index를 따로 지정 가능

DataFrame → Data Table 전체를 포함하는 Object

Series를 모아 만든것으로 기본 2차원

loc → index location

index 이름으로

iloc → index position

index number로

lambda

series type data도 map 함수 사용가능

function 대신 dict나 sequence 자료형태로도 가능

replace

map 함수에서 데이터 변환 기능만 담당

apply

map과 달리 series 전체(column)에 해당 함수를 적용

Groupby

split → apply → combine 과정을 거쳐 연산

 

 

CNN

MLP는 각 뉴런들이 선형모델과 활성함수로 모두 연결된 (fully connected) 구조였다

MLP 연산

 

Convolution 연산

커널이라는 고정된 벡터를 사용

Convolution 연산

i가 바뀌게 되더라고 가중치가 바뀌지는 않는다.

parameter size를 많이 줄일 수 있다.

  • signal을 커널을 이용해 국소적으로 증폭 또는 감소시켜 정보를 추출 또는 필터링 함.
  • 실제 CNN에서는 convolution이 아니라 cross-correlation 연산이지만 convolution이라 부른다.
  • 다양한 차원에서 Convolution 연산 가능

2차원에서 output channel을 여러개 만들고 싶으면 커널을 여러개 만들면 된다.

Convolution 연산의 Backpropagation

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

RNN

sequence data

  • 소리, 문자열(문법, 문맥, 문장의 의도), 주가 등의 데이터
  • sequence data는 i.i.d. 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보 손실이 발생 시 확률분포가 바뀜

어떻게 다루나?

→ 조건부 확률 이용

sequence data를 다루기 위해선 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요함!

RNN 이해하기

기본적인 RNN 모형은 MLP와 유사한 모양

 

이전 잠재 변수를 이용

BPTT (Backpropagation Through Time)

  • 마지막 시점 output에서 gradient 계산 후 순차적으로 계산
  • 시퀀스 길이에 길어지면 역전파 알고리즘 계산이 불안정 해지므로 길이를 끊는것이 필요 → truncated BPTT

이러한 문제 때문에 길이가 긴 데이터의 경우는 GRU와 LSTM이라는 대체모델 사용

 

Comments