본문 바로가기

전체 글

(150)
5강. Convolutional Neural Network 학습 알고리즘의 역사 1. Perceptron 2. Multi Layer Perceptiron - activation function을 이용하면서 여러 층을 쌓음 - sigmoid로 각 층으로 확률적 mapping 가능 - back propagation 3. Deep Multi Layer Perceptron - sigmoid의 grad vanishing 문제를 ReLU로 해결 4. Deep Neural Network - 음성인식, 영상처리에서 좋은 효과 - 뇌과학 연구에서는, 뇌가 시각정보를 받아들이는 데에 뉴런이 oriented edge와 shape에 반응하고 계층적 구조를 가진다는 것을 발견했다. - LeNet-5: 우편물 숫자 인식 - AlexNet: imagenet classification 4...
3장. Programming: Stochastic Gradient Descent 1. X_train과 y_train을 LinearSVM model로 train LinearClassifier LinearClassifier class에는 __init__(self), train(self, X, y, learning_rate=1e-3, reg=1e-5, num_iters=100, batch_size=200, verbose=False), predict(self, X), loss(self, X_batch, y_batch, reg) 함수가 있다. 또한, LinearSVM과 Softmax class는 LinearClassifier을 상속받아서 LinearClassifier의 함수들을 사용할 수 있고, 각각 loss 함수가 있다. class LinearSVM(LinearClassifier): """..
4장. Neural Networks and Back Propagation Neural Networks input이 affine 계층과 activation 계층을 거치면서 각 층의 output들의 shape이 달라지게 된다. multi classification의 경우 마지막 layer은 class의 개수만큼 output이 출력되도록 만들어야 한다. neural network를 만들 때 layer의 수, regularization parameter, activation function의 종류 등을 잘 선택해야 한다. back propagation에서 dL/dW를 어떻게 계산해야 하는가? loss, model의 종류, activation function의 종류가 바뀜에 따라 dL/dW도 바뀔텐데, 모든 변화를 아우르는 dL/dW를 어떻게 계산하면 좋을까? => BackPropag..
Pytorch (1) Custom Dataset: dataset을 model이 인식 가능한 형태로 custom하고, data의 index이 가능하도록 하고, 전체 data의 개수를 return하는 함수도 구현한다.(2) Sampler: dataset을 model에 적용할 때 mini-batch 형태로 넘겨줄 것인데, 전체 dataset에서 batch를 어떤 식으로 만들 지 정해줌, ramdom sampler 등(3) Data Loader: data를 batch_size만큼 model로 load 해주는 역할(4) Model: neural network를 만들고 forward propagation 과정을 수행 0. Data upload1. Data Load -1) Custom Dataset: FashionDataset(i..
Keras, TensorFlow Keras1) sequential API로 만든 모델- 각 layer을 순차적으로 담는 class - add 메서드로 모델을 만들 수도 있다. 2) functional API로 만든 모델 - deep neural network는 거대한 합성함수라고 볼 수 있고, 각 층을 하나의 함수로 봐서 합성함수를 쌓는 방향으로 모델을 만들 수 있다. - 각 층을 callable 한 class instance로 생각할 수 있다. - callable object: 함수처럼 호출될 수 있는 객체- 상황에 따라 다양한 함수를 만들 수 있도록 객체에서 일정 정보를 저장하여 필요할 때마다 새로운 함수를 만들 수 있음.Input() 함수에 입력의 크기를 정의합니다.이전층을 다음층 함수의 입력으로 사용하고, 변수에 할당합니다.Mo..
7장. 합성곱 신경망(CNN) 7.1 전체 구조 신경망 합성곱 신경망 Affine 계층(완전연결층) 합성곱 계층(convolutional layer), 풀링 계층(pooling layer) 7.2 합성곱 계층 1) 완전 연결 계층의 문제점 - 데이터의 형상이 무시된다. - C, H, W이 무시되고 하나의 긴 벡터가 affine 계층에 입력된다. 특징 맵 (feature map) : CNN에서 합성곱 계층의 입출력 데이터, input feature map과 output feature map이 있음. 2) 합성곱 연산 - 필터 연산 입력 (4, 4) * 필터 (3, 3) -> 출력 (2,2) 필터의 윈도우를 옮겨가며 단일 곱셈-누산 연산(fused multiply-add, FMA)을 반복함. 필터의 매개변수를 가중치라고 생각할 수 있다...
3장. Multiclass Support Vector Machine : Programming SVM classifier 1) svm_loss_naive from builtins import range import numpy as np from random import shuffle from past.builtins import xrange def svm_loss_naive(W, X, y, reg): dW = np.zeros(W.shape) # initialize the gradient as zero num_classes = W.shape[1] num_train = X.shape[0] loss = 0.0 for i in range(num_train): scores = X[i].dot(W) correct_class_score = scores[y[i]] for j in range(num_classes..
Resnet Resent의 등장 배경 딥러닝에서 층이 지나치게 깊으면 gradient vanishing/exploding 문제가 생겨서 학습 성능이 오히려 떨어짐. 위 문제를 해결하기 위해 층 수에 대해 학습 성능이 어느정도 비례하도록 만드는 딥러닝 모델이 resnet임. gradient vanishing / exploding [input ↔ L1 ↔ L2 ↔ L3 ↔ ... ↔ output] 일반 딥러닝 네트워크에서 층이 지나치게 많아지면 back propagation 과정에서 미분을 많이 하게 된다. 뒤 층의 미분값이 크면 앞 층의 미분값이 점점 커지고 (gradient exploding) , 뒤 층의 미분값이 작으면 앞 층의 미분값이 작아지면서 (gradient vanishing) 학습 성능이 낮아진다. Res..