반응형

전체 글 297

[Machine Learning] Transfer Learning with CNNs

Transfer Learning 기존에 만들어진 모델을 사용하여 새로운 모델을 만들 시 학습을 빠르게 하며, 예측을 높이는 방법 dataset에서 학습을 시키면 overfitting이 일어날 가능성이 많아짐으로 많은 dataset에서 학습을 시킨 일부의 layer들을 가져와서 적은 dataset에 적용 모든 데이터셋으로 학습을 시키면 초반 layer에서는 generality한 파라미터들이 나오고 후반 layer에서는 specificity 한 파라미터들이 나옴 Transfer learning은 초반 layer에서 나오는 generality한 파라미터를 이용하는 것 Transfer Learning 이점 복잡한 모델일수록 학습시키기 어려운 것을 해결할 수 있음 학습시간이 단축됨 Fine-Tuning 전략 1...

[Machine Learning] ResNet(Residual Network)

ResNet (Residual Network) AlexNet, VGGNet, GoogleNet 등은 layer를 깊게 쌓아 성능을 높이고자 함 layer가 깊어질수록 학습이 어려워 지고 overfitting, Vanishing Gradient 등의 문제가 여전히 발생 입력 x가 딥러닝 모델 H()를 거쳐 나온 H(x)가 정답 y (1 or 0)을 나타낼 수 있게 mapping 되도록 H() 모델을 학습 이미지 x를 타겟 y로 잘 mapping되는 함수 H(x)를 찾는 것이 아니라 이미지 x로 y를 바로 mapping하는 구조 고려 Skip Connection 구조를 갖음 CNN 구조 ResNET 구조 x->y로 mapping 해야 한다는 idea 최종 출력이 H(x) - x = 0 되도록 weight 학..

[Machine Learning] GoogleNet (Inception V4)

GoogleNet Inception 모듈 사용 22개의 layers, 5M parameters (AlexNET의 1/12 수준) GoogleNet 컨셉 Layer의 깊이를 늘려 성능을 높이고자 했으나 다음과 같은 문제 발생 free paremeter 수 증가 데이터 학습양이 작으면 overfitting 문제 연산량이 늘어남(필터의 개수가 증가하면 연산량은 제곱 증가) Vanishing Gradient 문제 학습은 잘되었으나 테스트할 때 성능이 나오지 않을 수 있다 또한, 모델이 너무 커져 학습과 테스트에 많은 시간을 소비하게 된다 NIN (Network In Network) 일반적인 CNN은 Feature Extraction(convolution + pooling) + classifier(fully co..

[Machine Learning] VGGNet

VGGNet 목표 : 네트워크의 깊이를 깊게 만드는 것이 성능에 어떤 영향을 미치는가 확인 방법 : 깊이의 영향만을 확인하기 위해 커널 사이즈는 가장 작은 3X3으로 고정 6개의 구조를 만들어 성능 비교 layer가 깊어질수록 성능이 좋아지는 것을 확인 VGG16 3x3 Filter 여러 개의 Relu non-linear를 사용할 수 있음 큰 필터로 구성된 하나의 레이어를 작은 필터의 여러 레이어로 나누었기 때문에 Relu non-linerlity가 들어갓 곳이 더 많아짐 학습해야할 weight 수가 많아 줄어듬 regularization(모델의 일반화) 측면에서 큰 이점 학습 속도가 빠름 학습 이미지: 224x224로 고정 다양한 이미지를 crop을 통해 224x224로 크기 고정 VGGNet 단점 f..

[Machine Learning] AlexNet

AlexNet 2012년 개최된 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 대회의 우승을 차지한 CNN 구조 논문: ImageNe Classification with Deep Convolutional Neural Networks 8개의 layer로 구성 5개의 convolution layer + 3개의 full-connected layer Max Pooling + Overlapping pooling 사용 Overlapping Pooling: stirde를 커널 사이즈보다 작게 pooling size=3, stride=2 최초의 max pooling 시도 → overfitting 막는데 도움을 줌 Activation Function: Relu T..

[Machine Learning] ML Hyperparameter

Hyperparameter Machine learning 학습을 할 때 더 효과가 좋도록 하는 주 변수가 아닌 자동 설정되는 변수를 의미 Learning Rate gradient의 iteration마다 얼마의 gap으로 빠르게 혹은 느리게 이동할지 결정하는 계수 Error/Loss/Cost Function 실제 output과 계산된 output 사이의 차이를 error/loss/cost function이라고 하는데 이 둘의 차이를 어떤 방식으로 계산할지를 지정 Batch Size mini batch처럼 전체 data를 몇 개의 그룹으로 나누어 학습할지를 나눌 그 크기를 의미 Epochs training 반복 횟수 train set에 대해서는 epochs가 늘어날수록 error가 줄어들 수 있지만 over..

[Data Visualization] Graphviz

Graphviz DOT 언어 스크립트로 지정된 그래프 그리기를 위해 AT&T 랩스 리서치가 시작한 오픈 소스 도구 패키지 Windows OS graphviz 다운로드해서 설치 https://graphviz.org/download/ Download graphviz.org pip graphviz 설치 pip install graphviz 환경 변수 1. 사용자 변수: Path C:\Program Files\Graphviz\bin 2. 시스템 변수: Path C:\Program Files\Graphviz\bin C:\Program Files\Graphviz\bin\dot.exe

[Numpy] Numpy Functions

ufunc (Universal Function) ndarray 안에 있는 데이터 원소 별로 연산을 수행하는 함수 하나 이상의 스칼라 값을 받아서 하나 이상의 스칼라 결과 값을 반환하는 간단한 함수를 고속으로 수행할 수 있는 벡터화된 래퍼 함수 연산 함수 사칙연산 add(), multiply(), negative(), exp(), log(), sqrt() 삼각 함수 sin(), cos(), hypot() 비트 단위 bitwise_and(), left_shift() 관계형, 논리 less(), logical_not(), equal() 최대/최소 maximum(), minimum(), modf() 부동소수점에 적용 함수 isinf(), infinite(), floor(), isnan() 단항 유니버셜 함수 함..

Python/Numpy 2021.03.05

[Numpy] Numpy Shape Manipulation

flatten() n차원의 ndarray를 1차원으로 변형 import numpy as np arr = np.zeros((3,2)) print(arr) arr = arr.flatten() print(arr) >> [[0. 0.] [0. 0.] [0. 0.]] [0. 0. 0. 0. 0. 0.] reshape() np.reshape(arr, shape) arr.reshape(shape) 배열 재형성, 이미 존재하는 ndarray를 원하는 shape로 변형하는 함수 order: {'C', 'F', 'A'} 'C': C언어의 인덱스 규칙 'F': Fortran의 인덱스 규칙으로 읽고 쓰기 옵션 -1을 사용하면 shape를 명시하지 않아도 자동으로 채워줌(단, 1개의 차원이 남아 있는 경우만 가능) -1이 전달..

Python/Numpy 2021.03.05

[Numpy] Numpy Vectorization & Broadcasting

벡터화 (Vectorization) 배열은 for 문을 작성하지 않고 데이터를 일괄 처리 가능 같은 크기의 배열 간 산술 연산은 배열의 각 요소 단위로 적용 import numpy as np arr = np.array([[1,2,3],[4,5,6]]) print(arr) print(arr+arr) print(arr-arr) print(arr*arr) print(arr/arr) print(arr ** arr) >> [[1 2 3] [4 5 6]] [[ 2 4 6] [ 8 10 12]] [[0 0 0] [0 0 0]] [[ 1 4 9] [16 25 36]] [[1. 1. 1.] [1. 1. 1.]] [[ 1 4 27] [ 256 3125 46656]] 브로드캐스팅(BroadCasting) 스칼라 인자: 모든..

Python/Numpy 2021.03.05

[Machine Learning] Neural Network MNIST 데이터 처리

MNIST Dataset 미국 국립표준기술원(NIST)이 고등학생과 인구조사국 직원 7만명이 쓴 숫자를 이용해 만든 데이터 60,000개의 트레이닝 셋과 10,000개의 테스트 셋으로 이루어짐 숫자는 0~1까지 값을 갖는 고정 크기 이미지(28x28 픽셀) 각 픽셀은 밝기 정도에 따라 0부터 255값으로 표현 Data Normalization 데이터의 폭이 클 때 적절한 값으로 분산의 정돌르 바꿔주는 과정 (요소값 - 최소값) / (최대값-최소값), 요소 값 / 최대 값 import tensorflow as tf import matplotlib.pyplot as plt import numpy import os # MNIST 데이터 불러오기 (X_train, Y_train), (X_test, Y_test)..

[Machine Learning] Regularization

Regularization [Machine Learning] - Neural Network의 한계 [Machine Learning] - Supervised Learning Neural Network의 Overfitting 방지를 위해 사용. 모델이 일반성을 띄게 해주는 기법: 모델의 weight들이 너무 완벽하게 overfit되지 않도록 정규화 요소를 추가 모델 복잡도에 대한 penalty를 부여하는 것으로 모델이 복잡해질수록 loss function이 다시 커지도록 만드는 것 L1 Regularization (Lasso) Coss function 뒤에 L1항을 추가해 준 것 Spare solution, 중요한 feature만 살림 예측 값과 정답 값의 오차를 절대값 상수텀을 빼주는 형태 작은 가중치는 ..

[Machine Learning] Neural Network의 한계

Neural Network의 한계 Vanishing Gradient Local Minima Overfitting 느린 학습 Vanishing Gradient Layer를 쌓아서 비선형 문제를 풀고 Backpropagation으로 multi layer를 학습하지만 전파하는 과정에서 기울기 값이 사라져 학습 안됨 backpropagation은 출력층부터 앞으로 하나씩 되돌아가며 각 층의 가중치를 수정하는 방법 사용 가중치를 수정하려면 출력 오차 값(loss)을 미분하여 사용 layer가 늘어나면 기울기가 중간에 0이 되어 버리는 기울기 소실(vanishing gradient) 문제가 발생 activation 함수로 사용된 sigmoid 함수의 특성 때문에 발생 sigmoid 미분하면 최대치가 0.3이 되고 ..

[Machine Learning] Neural Network

Neural Network Multilayer Perceptron 이라고도 함 XOR 배타적인 형태의 논리합은 단일 퍼셉트론으로 풀지 못함 노드로 구성된 Layer를 추가하여 XOR 문제를 해결 많은 perceptron을 쌓아서 비선형의 데이터를 선형 분리가 가능하도록 단순화 시킴 Input Layer: 데이터를 전달하는 역할 Hidden Layer: 비선형 데이터를 선형 분류가 가능하도록 Representation 해주는 역할 Output Layer: 기능을 정의해주는 역할 Backpropagation (역전파) 역전파, 오류 역전파법 또는 오류 역전파 알고리즘, Multi perceptron 학습에 사용되는 통계적 기법 target값과 실제 모델이 계산한 output이 얼마나 차이가 나는지 구한 후 ..

[Machine Learning] Model Save & Load

학습: 데이터 -> 학습 -> 시험 테스트(inference): 데이터 -> 시험 모델 저장 목적 모델 작업 중단되더라도 해당 부분부터 재 시작 저장된 모델을 공유 공유받은 모델을 활용해 모델 정확도와 효율성을 향상시켜 더 나은 모델 만들 수 있음 Model Save 데이터 -> 학습 -> 시험의 단계에서 학습 완료 모델을 저장 model.save('path/to/location') or tf.keras.models.save_model() 파일 확장자: h5, hdf5, 파일의 확장자만 다를 뿐 동일, 성능 차이가 거의 없음 import tensorflow as tf from sklearn.model_selection import train_test_split from sklearn.preprocessi..

728x90
반응형