본문 바로가기
BOOSTCAMP AI TECH/3주차_Deep Learning Basics

[BOOSTCAMP AI TECH] 11일차_딥러닝 기초

by 이민우 2021. 2. 1.
728x90
반응형
  • 강의 목록

- 베이즈 통계학 맛보기

- 딥러닝 기본 용어 설명 - Historical Review

- PyTorch 시작하기

- 뉴럴 네트워크 - MLP

- 데이터셋 다루기

 


  • 요약

강의

 

3주차가 되었다. 본격적으로 AI에 관련된 학습을 시작했다.

아직 미숙한 수학을 보충하기 위해 조건부 확률, 베이즈 정리 등에 대한 수학 학습을 했다.

AI를 본격적으로 다루기 위해 PyTorch의 사용법을 간략하게 익혔다.

AI를 본격적으로 학습하기 전에 AI의 간략한 역사를 학습했다. NN과 LNN등을 통해 AI의 기초적인 지식을 학습했고, MLP를 구현해보며 NN의 구축법을 학습했다.

 

피어세션

 

전날 학습한 내용을 복습하는 시간을 가졌다.

파이썬 머신러닝 완벽 가이드의 1,2 장을 함께 학습했다.


  • 학습정리

조건부 확률

  • P(A n B) = P(B)P(A|B)
  • 사건 B가 일어난 상황에서 사건 A가 발생할 확률
  • 베이즈 통계학을 이해하기 위해서는 조건부확률의 개념을 알아야 한다.

 

 

베이즈 정리

  • 베이즈 통계학은 조건부 확률을 통해 정보를 갱신하는 법을 알려준다.
  • P(B|A) = P(A n B) / P(A) = P(B) * ( P(A|B) / P(A) )
  • 사전확률, 민감도, 오탐률을 가지고 정밀도를 계산할 수 있다.

 

 

조건부 확률의 시각화

  • 오탐률이 오르면 테스트의 정밀도가 떨어진다.

 

 

 

베이즈 정리를 통한 정보의 갱신

  • 베이즈 정리를 통해 새로운 데이터 입력 시 앞서 계산한 사후확률을 사전확률로 사용해 갱신된 사후확률 계산이 가능하다.

 

 

 

인과관계

  • 인과관계는 데이터 분포에 강건한 예측모델을 만들 때 필요하다.
  • 단, 인과관계만으로는 높은 예측 정확도를 담보하기 어렵다
  • 조건부 확률은 유용한 통계적 해석을 제공하지만 인과관계를 추론할 때 사용할 수 없다.
  • 인과관계를 알아내기 위해서는 중첩요인(confoundingfactor)의 효과를 제거하고 원인에 해당하는 변수만의 인과관계를 계산해야 한다.
  • 허위 상관관계 (Spurious Correlation) : A와 B 사이에 상관성이 있다 해서 A가 B의 원인이라 볼 수 없다.

 

 


 

 

Pytorch

  • Numpy 구조를 가지는 텐서 객체로 배열을 표현한다.
  • GPU를 사용한 연산 가속도 가능하다.
  • 자동미분을 지원하며 DL 연산을 지원한다.
  • 다양한 형태의 DL을 지원하는 함수와 모델을 지원한다.
import torch
import numpy as np

#배열 생성
x = torch.empty(5,3)
print(x) #메모리 값으로 이루어진 5*3 행렬
x = torch.rand(5, 3)
print(x) #무작위 값으로 이루어진 행렬
#zeros와 ones도 가능

x = torch.tensor([5.5, 3])
print(x, x.size())

#연산
#add
x = torch.rand(5, 3)
y = torch.rand(5,3)
print(x, y)
print(x+y)
print(torch.add(x, y))

#Torch to Numpy
a = torch.ones(5,5)
b = a.numpy()

#Numpy to Torch
a = np.ones(5)
b = torch.from_numpy(a)
#원본 Numpy 변경시 Torch도 변경
np.add(a, 1, out = a)
print(a)
print(b)

#이미지 가져오기
from PIL import Image
img = Image.open('5.PNG')

print(img.size) #이미지 크기
img.save('5_cpy.PNG') #이미지 저장
img.thumbnail((64,64)) #썸네일 이미지 생성
img.save('5_thumb.PNG')

img = Image.open('5.PNG')
#잘라내기
cropImg = img.crop((50, 50, 50, 50)) #상 하 좌 우
cropImg.save('5_crop.PNG')

#Resize
img = Image.open('5.PNG')
img2 = img.resize((600, 600))
img2.save('5_600.PNG')

#ROTATE
img3 = img.rotate(90) #90도 회전
img3.save('5_rotate.PNG')

#TO NP DATA
np_img = np.array(img.getdata())
print(np_img.shape)

 

NN (Neural Networks)

  • 인간의 뇌를 구성하는 생물학적 신경망에서 막연하게 영감을 받은 컴퓨터 시스템
  • 인간의 뇌에서 신경세포들이 전기적 신호를 이용하여 메시지를 주고받는 것
  • 신경망은 아핀 변환에 이어 비선형 변환에 이르는 함수 근사치이다.
  • 비선형 연산이 반복적으로 일어나는 연산

 

LNN (Linear Neural Networks, 선형 신경망)

  • 2차원 데이터를 바탕으로 선형 그래프에 기반해 y=ax+b의 a와 b를 찾는 것.

 

활성화함수

  • 노드에 들어온 값들을 다음 레이어에 전달하기 전에 통과시키는 비선형 함수
  • 선형함수 사용시 층을 깊게 하는 의미가 없어지기에 비선형 함수 사용
  • 입력받은 데이터를 다음층으로 출력할지를 결정한다.

 

 

 

손실함수 (Loss Function)

  • 비용함수라고도 부른다. (손실에는 그만큼의 비용이 발생)
  • 컴퓨는 공식에 값을 대입해서 문제를 풀기 때문에, 실제 정답과는 차이가 발생한다.
  • loss컴퓨터가 계산한 결과와 실제 정답간의 간격이며, loss를 줄이는 학습을 진행해야 한다.

*MSE (평균 제곱 오차) : 예측한 값과 실제 값 사이의 평균 제곱 오차를 정의. 회귀에서 사용

*CE : 분류에서 사용

*MLE : 확률에서 사용

*RMSE : MSE에 루트를 씌운 것으로, MSE가 제곱으로 실제 오류 평균보다 커지는 특성 방지

*CEE (교차 엔트로피 오차) : 분류에서 많이 사용.

 

 

MLP (Multi Layer Perceptron)

  • 단층 퍼셉트론이 XOR 연산이 불가능한 것을 해결
  • 퍼셉트론으로 이루어진 층 여러 개를 순차적으로 붙여놓은 형태
  • 정방향 인공 신경망 (FFDNN)이라고 부르기도 한다.
  • 2개 이상의 은닉층으로 구성되어 있다.

  • 피어세션 회의 내용
  1. 베르누이 분포 : 두 가지의 가능한 결과만 일어날 때의 결과 EX) 동전을 던질 때의 확률분포
  2. 카테고리 분포 : 베르누이 분포를 다차원으로 구성한 것.

ex) 베르누이 분포 : [0 1] / 카테고리 분포 [[0 1] [1 0] [1 0]]

*softmax 함수는 카테고리 분포의 모수를 모델링한다.

 

 

Deceision Tree (결정 트리)

  • 분류, 회귀 모두 가능한 지도 학습
  • 스무 고개를 하듯이 예/아니오 질문을 통해 분기를 나누어 트리 형태로 진행된다.
  • 지나치게 많은 분기를 설정하면 오버 피팅이 발생할 수 있다.
  • 이를 가지치기를 활용해 최대 깊이나 터미널 노드의 최대 개수 등을 제한해 오버피팅을 방지한다.
  • GridSearchCV를 활용하면 최적의 파라미터를 구해 분기 수나 노드 깊이 등을 최적화할 수 있다.

 

Random Forest (랜덤 포레스트)

  • 여러 개의 결정 트리를 모아놓은 것.
  • 데이터의 특징들을 랜덤하게 선별하여 여러 개의 결정 트리를 만든다.
  • 각 결정 트리들이 내린 예측값을 종합해 다수결의 원칙에 따라 최종 예측값을 정한다.

*한 명의 천재보다 여러 명의 일반인이 의견을 모은 것이 낫다.

 


  • 해야할 일

처음 대학교에서 AI를 학습할 때에는 이해가 되지 않는 부분들이 너무 많았다. 하지만 다시 한 번 배우면서 이제야 어떻게 사용하는 건지, 어째서 존재하는 건지 어렴풋이 깨달을 수 있게 되었다.

 

현재의 흐름을 놓치지 않고, 더 많은 공부가 필요할 것 같다. 파이썬 머신러닝 완벽가이드 책을 통해 더 많은 학습을 진행해야겠다.

 

github.com/123okk2/AI_train_practice


 

728x90
반응형