Data Science 47

pytorch) 합성곱 신경망

합성곱 신경망이란? 뉴런이 모여 서로 연결된 형태인 인공신경망을 알아보았고 구현을 해 보았습니다. 그러나 이미지 데이터의 경우 해당 모델의 성능이 좋지 않습니다. 그 이유는 1. 이미지는 하나의 숫자가 아닌 공간적 특성(weight x height x channel)이 있고, 2. 예외적 모양(예를 들어 그냥 X와 기울어진 X)이 들어올 때 마다 인공 신경망은 전혀 다른 값으로 인식하여 가중치들을 다시 학습시켜야합니다. 이미지의 크기가 커질수록 이런 변형의 가능성은 더 커집니다. 그래서 동물의 시각 뉴런에 대한 연구로부터 얻은 개념을 바탕으로 1980년대 네오코그니트론을 거쳐 Yann LeCun 교수의 합성곱 신경망(CNN)이 개발되었습니다. 그래서 합성곱 연산에서는 filter로 이미지를 슬라이드하면서..

pytorch) 선형회귀분석

선형회귀분석이란? 주어진 데이터를 가장 잘 설명하는 직선 하나를 찾는 것, 즉 x와 y라는 데이터가 주어졌을 때 이 데이터의 관계를 가장 잘 나타내는 y = wx+b라는 직선의 방정식을 찾는 것입니다. 가장 잘 설명한다? 어떤 직선의 방정식이 얼마나 잘 설명하는냐를 평가하는 척도로 사용하는 것으로 평균제곱오차(Mean Squared Error; MSE)가 있습니다. MSE는 w와 b 중 w에 대한 오차를 나타낸 것으로 이를 L2 loss function이라고도 합니다. 그렇다면 최적의 w를 찾아나가는 과정은? 대부분의 딥러닝 모델에서는 경사하강법을 사용한다. 아래에 경사하강 학습법에 대해 정리해 놓은 것을 참고할 수 있으며, 간단히 말하면 지속적으로 w를 업데이트함으로써 오차의 극소값을 찾는다는 것입니다..

3. 데이터 증강기법 (Data Augmentation)

CNN은 영상의 2차원 변환인 회전(Rotation), 크기(Scale), 밀림(Shearing), 반사(Reflection), 이동(Translation)와 같은 2차원 변환인 Affine Transform에 취약하다. 즉, Affine Tranform으로 변환된 영상은 다른 영상으로 인식한다. 또한 이 뿐만 아니라 Noise삽입, 색상, 밝기 변형 등을 활용하여 Data Augmentation 효과를 얻을 수 있다. Data Augmentation을 위한 데이터 생성(generator)하는 방법으로 keras의 ImageDataGenerator을 사용할 수 있다. 이 Data Generator는 이미지에 변화를 주면서 컴퓨터의 학습자료로 이용하여 더욱 효과적이고 과적합을 방지하는 방식으로 학습할 수 ..

2. 추가적인 손실 함수(Regularization)

1. Regularization 이란 : 정규화 기법으로 알고리즘의 일반화(Generalization)을 개선하려는 모든 기법을 말합니다. 흔히 최적화 기법에 추가적인 손실 함수를 추가하는 것을 정규화 기법이라고 부릅니다. 그러나 regularization을 통해 loss값이 감소하기를 기대하면 안되고, 오히려 loss값이 증가할 수도 있습니다. 다시말해, regularization의 목적) loss값이 training에서 잘 줄어들지 않더라도, validation, test에서 loss가 감소하도록 한다. 2. Regularization 방법 - 추가적인 손실 함수들 1) Weight Decay : weight의 L-2 norm (제곱한 것을 모두 더해서 루트 씌운 것; (참고: http://taewa..

1. Overfitting의 해결

1. Overfitting이란 데이터셋의 구성은 학습 데이터/ 검증 데이터/ 테스트 데이터로 구성되어 있습니다. - 학습 데이터: 학습 과정에 보여지고, 실제 모델을 학습하는 데에 사용되는 데이터 (50-70%) - 검증 데이터: 학습 과정에 보여지는 데이터이지만, 모델 학습에 사용하지 않고 학습이 잘 되는지 검증하는데만 사용하는 데이터( 5-15%) - 테스트 데이터: 학습 과정에서는 사용하지 않고, 학습을 마친 모델을 평가하기 위해 단 한번만 사용하는 데이터(30-50%) 이때 그림과 같이 Train set에서는 학습 점수가 잘 나오는데, Dev set에서는 잘 나오지 않을 때, 일반화가 잘 되지 않아서 overfitting이 발생했다고 볼 수 있습니다. 2. Overfitting 방지 방법 1) E..

Learning Tensorflow) 4. 합성곱신경망

학습목표: 합성곱 신경망(Convolutional Neural Network)와 이와 관련된 구성 요소 및 메서드를 소개 1. 합성곱 신경망에 대한 소개 https://libertegrace.tistory.com/entry/1-Basic-CNN 1. Basic CNN-1 1. 합성곱 신경망의 기본 구조는 image -> Convolutional layer/Pooling layer/Activation function 의 반복-> Flatten/Fully connected layer -> result입니다. 1) Convolutional layer란 input -> filter -> ou.. libertegrace.tistory.com 2. MNIST 분류기를 통해 배워보는 tensorflow 로 CNN구현..

Learning Tensorflow) 1. 텐서플로의 기본 이해하기

텐서플로우의 동작의 구성 1. 만들고 2. 실행하기 1) 그래프 -> 세션 -> 실행 ; 만들고 실행하기 import tensorflow as tf로 tensorflow를 import하면 그 시점에 있는 기본 그래프가 만들어지면 우리가 만드는 노드는 이 기본그래프에 자동으로 연결된다. 그래서 노드를 어떻게 만드는가?! a = tf.constant(5) b = tf.constant(2) 그러면 만들어진 노드로 연산을 진행하는 연산 그래프는 어떻게 만드는가?! 흔히 사용되는 tensorflow 연산이나 축약형 연산자를 이용한다. d = tf.multiply(a, b) #a*b c = tf.add(a, b)#a+b 이렇게 노드와, 연산 그래프를 만드고 나면 연산 그래프를 실행할 준비가 된 것이며, 연산을 실행..

2. 경사 하강 학습법 - 경사 하강 학습법

앞서 학습-최적화 이론-경사 하강 학습법 에 대한 개념을 이해하였으니, 수학적으로 어떻게 표현되는지를 알아보도록 하겠습니다. 1) 최적화 이론이란 다시 한번 자세히 살펴보면, 가능한 모든 해 중 최적의 해(이게 최소값이 될 수도 있고, 최대값이 될 수도 있습니다.)를 찾는 문제를 해결하는 이론입니다. 이를 '딥러닝 네트워크 학습'에 접목시켜보면, 손실함수(Loss Function)이 최소가 되게 하는 Training Parameter를 찾는 문제가 되는 것 입니다. 2) 최적화 문제를 풀기위한 방법으로는 분석적 방법(함수의 모든 구간을 수식으로 알 때 사용하는 수식적 해석 방법) 과 수치적 방법(함수의 형태와 수식을 알지 못 할때 사용하는 계산적인 해석 방법)이 있습니다. real world..(?) 에..

2. 경사 하강 학습법 - 모델의 학습과 경사하강 학습법과 최적화이론의 관계

경사 하강 학습법을 배우기에 앞서, 모델의 학습이 뭔지, 그리고 최적화 이론이 뭐고, 이 셋의 관계가 무엇인지를 살펴보겠습니다. 1) 모델의 학습 학습에는 두 종류가 있습니다. 1. Supervised Learning(지도학습) : 학습 데이터의 입력과 함께 정답을 알려주고 그 정답(Label 또는 Groundtruth라고 합니다. )을 맞추도록 하는 방법 2. Unsupervised Learning(비지도학습) 정답의 제공 없이 학습 데이터로부터 유용한 정보를 추출하는 방법 2) 머신러닝의 Supervised Learning에 관련된 용어 앞으로는 이 용어들을 사용하여서 앞서 제시했던 학습 목표들을 살펴볼 것입니다. 1. Training Parameters(학습 매개변수) : Training과정에서 값..