본문 바로가기
부트캠프(LIKELION AIS7)/수업

[AI스쿨 7기, 10주차] Ch10, Ch11. Neural Network(Logistic Regression, cross entropy, linear regression, activation function, hidden layer, backpropagation, epochs, batch size)

by aimaimee 2023. 5. 10.

K-MOOC '실습으로 배우는 머신러닝' 김영훈 교수님

Ch10,Ch11.Neural Network(Logistic Regression, cross entropy, linear regression, activation function, hidden layer, backpropagation, epochs, batch size

Ch10. Neural Network Basic

Logistic Regression

퍼셉트론을 잘 구성해서 neural network를 구성하는 과정.
퍼셉트론은 linear, logistic regression과 밀접한 연관이 있다.
Loss함수 정의, Min Loss : 여기서 Loss는 cross-entropy

  • i 관측치 인덱스, j는 클래스 인덱스
  • Logistic Regression model(Perceptron)은 neuron과 correspond
  • Sigmoid function

Linear Classifier의 한계

  • 비선형적인 패턴을 학습할 수 없다.
  • appropriate for linear classifier로 transform
    • Cartesian coordinates
    • Polar coordinates

구조

linear classifier를 쌓아서(stack). neural network를 구성. 구조를 딥하게 쌓아서 Deep neural network. -> 복잡한 구조도 학습하더라.

Linear Regression

Input인 x값들이 있다면 하이퍼파라미터와 같은 역할을 하는 베타 값을 곱해주고, 최종 output인 Y 값을 찾는다.

Logistic Regression

linear regression이 sigmoid function의 input으로 들어가있다.
sigmoid와 같이 비선형적인 패턴을 만들어주는 것을 activaton function이라고 한다.

Multi-output Linear Regression/ Logistic Regression for Hidden Layer

w는 가로형 벡터([w10, w11, w12 --- , w1p]
계산이 일어나는 층을 Hidden Layer라고 한다.
output에서 activation function을 적용해주면 multi-output logistic regression 형태가 된다.

2-Hidden Layer Neural Network

Y = a(W2 a(W1X))


Activation Function

  • ReLU : 0보다 작으면 0을 출력, 양수면 x값 자기자신을 출력. 요즘 많이 사용
  • Leaky ReLU : 0보다 작으면 약간의 값을 가지도록.

Ch11. Optimization Review

Optimization : Loss Function 정의, 그것을 최소화

  • how to calculate Gradients?
    • Loss함수/편미분 : 입실론을 더하고 빼주면서 계산을 해주면 비효율적이다.

Backpropagation

함수 미분의 연쇄 법칙을 이용해서 인공신경망 파라미터의 기울기를 구하는 방법
각 파라미터의 gradient를 계산해주는 효율적인 방법
chain rule에 근거한 neural network 파라미터

코드 실습

  • datasets라는 모듈에는 데이터를 쉽게 불러올 수 있도록 저장되어 있다.
    • shape(60000, 28,28) : 28x28 이미지 데이터가 6만개
    • 흑백데이터라서 채널이 한 개
    • label : 0~9까지의 숫자
  • import models : 모델을 만들 공간, 워크스페이스를 만드는 코드
    • models.Sequential() : 레이어를 쌓을 테니 입력할 공간을 만들어라
    • .add() : 원하는 레이어 입력
      • units : 출력될 perceptron 갯수.
      • activation 함수 지정
      • shape은 28*28차원 1차원 벡터로 만들어서 넣을 것
      • 분류해주는 마지막 레이어기 때문에 activation은 softmax로 해서 다중 클래스를 분류하겠다는 정의
  • .compile()
    • optimizer 지정
    • loss : cross_entropy로 지정해줬다.
    • metrics 학습, 출력되는 과정에서 measure
  • .reshape() : 2차원을 1차원 벡터 형식으로 변경해줌
  • .astype() / 255
    • image 데이터의 경우 0~255까지의 수치를 가짐.
    • 보통 neural network에 넣을 때 0~1 사이로 스케일을 해줌.
  • to_categorical : 나중에 0, 1로 해서 cross entropy를 계산 할 수 있게 변경
  • .fit(입력변수, 출력변수, epochs=5, batch_size=128)
    • batchsize : stochastic gradient descent를 소개할 때 잠시 언급. 데이터 전체를 한 번에 학습 시키기 어렵기 때문에 데이터를 쪼갠다. 그 때 데이터를 128개씩 넣을 것이다.
    • epochs : 배치 별로 업데이트가 이루어지는데, 전체 training 데이터가 다 업데이트에 반영이 되었을 때 하나의 epoch이다. 이 epoch를 다섯 세트 하겠다. RF 의 n_estimator와 비슷한 개념
  • .evaluate(test_images, test_labels) 확인

댓글