본문 바로가기

AI/이론

(60)
[ML] Precision-Recall Curves PR Curve of a Bad Model Complete Guide to Understanding Precision and Recall Curves Precision is defined as the fraction of the relevant positives out of the retrieved ones. Recall is defined as the fraction of retrieved positives out of the relevant ones. analyticsindiamag.com Precision-Recall Curves 설명 및 그리기(구현)-Python Precision-Recall Curves 설명 및 그리기(구현)-Python Goal 이 페이지에서는 Precision-Recall ..
[ML] Winograd convolution layer https://arxiv.org/pdf/1810.01973.pdf
[ML] Focal Loss hard negative 는 실제로는 negative 인데 positive 라고 잘못 예측하기 쉬운 데이터 easy negative 는 실제로 negative 이고 예측도 negative 라고 잘 나오는 예측이 쉬운 데이터 hard negative sample 을 직석하자만 hard : 어렵다, negative sample: 네거티브 샘플라고, 즉 네거티브 샘플라고 말하기 어려운 샘플이라는 뜻이다. hard negative 는 원래 negative 인데 positive 라고 잘못 예측한 데이터를 말한다. 그림의 빨간 선이 모두 배경을 얼굴이라고 잘못 예측한 hard negative 이다. hard negative는 마치 positive처럼 생겨서 예측하기 어렵다. 모델입장에서 보면 해당 샘플에 대해 ne..
[ML] DCN, Deformable Convolution Networks 일반적으로 object detection 또는 segmentation은 pre-trained model을 사용합니다. 따라서 모든 layer에 deformable convolution을 사용하는 것이 아니라, 마지막 1~3 layer만 deformable convolution으로 변경하여 전이 학습을 진행합니다. [논문 읽기] DCN(2017) 리뷰, Deformable Convolution Networks 안녕하세요! 이번에 읽어볼 논문은 DCN, Deformable Convolution Networks 입니다! DCN은 (1) deformable convolution, (2) deformable RoI pooling 두 가지 방법을 제시합니다. 기존 CNN 구조 모델은 고정된.. deep-learni..
[ML] AutoEncoder 또한, 오토인코더는 reduction 측면과, reconstructing 측면이 함께 학습되며, 압축된 data coding을 통해서 실제 입력과 최대한 가까운 결과를 생성하기 때문에 Generative Model의 역할도 수행할 수 있습니다. 위 내용을 토대로 위키피디아에서 오토인코더의 키워드는 다음과 같습니다. Keword - Unsupervised learning - Representation learning (= Efficient coding learning) - Dimensionality reduction - Generative model learning 주로 오토인코더는 Dimensionality reduction, 차원 축소를 위해서 많이 사용됩니다. 오토인코더의 차원축소는 정확히 말하면 N..
[ML] 분류 성능 평가 지표 1. Precision, Recall and Accuracy Precision, Recall, Accuracy는 논문에서도 사용하는 지표들이며 가장 눈에 익는 지표들입니다. 하지만 서로 헷갈리는 경우가 많으니, 제대로 정리할 필요가 있겠습니다. 우리는 모델이 예측한 다양한 경우를 생각해보며, 위의 2x2 matrix에 해당하는 것을 어떻게 지표화 할 것인지 고민해보겠습니다. 지표를 고민함과 동시에 실제 사례를 들어서 해당 지표를 왜 써야하는지도 함께 생각해보고자 합니다. 여기서는 한달 동안의 날씨를 예측하는 상황을 생각해보겠습니다. 날씨는 비가 오거나 맑거나 두 가지만 존재한다고 가정합니다. 1.1 Precision(정밀도) 정밀도란 모델이 True라고 분류한 것 중에서 실제 True인 것의 비율입니다...
[ML] CNN의 역전파(backpropagation) cnn을 대충대충 알고서는 안다고 생각하고 있었는데 하나 하나 뜯어보니 제대로 아는게 하나도 없었다... 개념설명할 때도 항상 feed forward만 설명하지 backpropagation은 없었다. CNN의 역전파(backpropagation) · ratsgo's blog 이번 포스팅에서는 Convolutional Neural Networks(CNN)의 역전파(backpropagation)를 살펴보도록 하겠습니다. 많이 쓰는 아키텍처이지만 그 내부 작동에 대해서는 제대로 알지 못한다는 생각에 저 스스로도 ratsgo.github.io
[ML] Backpropagation Back Propagation이란 'Back Propagation' 는 Output Layer 직전의 Layer부터 최적화합니다. 미리 말하고 싶은 것은 'Back Propagation'도 Gradient Descent를 이용합니다. 즉 앞서 배웠던 Forward Propagation처럼 Cost를 구하여 W를 여러번 갱신하여 최적화합니다. 다만 그 차이는 'Forward Propagation'은 한번의 갱신을 위한 Cost를 구하는데 비효율적으로 많은 연산을 필요로 합니다. 그러나 'Back Propagation'에서는 최적화의 순서를 달리하여 몇번의 연산만으로 Cost를 구할 수 있습니다. 수식↓ A Step-by-Step Implementation of Gradient Descent and Back..
[ML] Transfer learning 2 Transfer learning은 classifier를 변경한다. Fine tuning은 이렇게 변경된 모델 전체를 다시 training한다. [DL] Transfer Learning vs Fine-tuning, 그리고 Pre-training 딥러닝에서 신경망을 공부하다보면 transfer learning과 fine tuning이라는 단어를 심심치않게 접할 수 있다. 둘 사이에는 무슨 차이가 있을까? 사실 필자도 생각없이 혼용하다(ㅋㅋ) 의문점을 해소할 heeya-stupidbutstudying.tistory.com [ 딥러닝 알아가기 ] Transfer Learning과 Fine Tuning Transfer Learning (전이학습) 성능이 좋은 딥러닝 모델을 만드는 최고의 방법은 바로 많은 수의 데..
[ML] Fully Convolutional Layer, Fully Connected Layer, AutoEncoder Fully Connected Layer1 만으로 구성된 인공 신경망의 입력 데이터는 1차원(배열) 형태로 한정됩니다. 한 장의 컬러 사진은 3차원 데이터입니다. 배치 모드에 사용되는 여러장의 사진은 4차원 데이터입니다. 사진 데이터로 전연결(FC, Fully Connected) 신경망을 학습시켜야 할 경우에, 3차원 사진 데이터를 1차원으로 평면화시켜야 합니다. 사진 데이터를 평면화 시키는 과정에서 공간 정보가 손실될 수밖에 없습니다. 결과적으로 이미지 공간 정보 유실로 인한 정보 부족으로 인공 신경망이 특징을 추출 및 학습이 비효율적이고 정확도를 높이는데 한계가 있습니다. 이미지의 공간 정보를 유지한 상태로 학습이 가능한 모델이 바로 CNN(Convolutional Neural Network)입니다. ..
[ML] K-Fold Cross Validation(교차검증) 정의 - K개의 fold를 만들어서 진행하는 교차검증 사용 이유 - 총 데이터 갯수가 적은 데이터 셋에 대하여 정확도를 향상시킬수 있음 - 이는 기존에 Training / Validation / Test 세 개의 집단으로 분류하는 것보다, Training과 Test로만 분류할 때 학습 데이터 셋이 더 많기 때문 - 데이터 수가 적은데 검증과 테스트에 데이터를 더 뺐기면 underfitting 등 성능이 미달되는 모델이 학습됨 과정 - 기존 과정과 같이 Training Set과 Test Set을 나눈다 - Training을 K개의 fold로 나눈다 - 위는 5개의 Fold로 나눴을때 모습이다 - 한 개의 Fold에 있는 데이터를 다시 K개로 쪼갠다음, K-1개는 Training Data, 마지막 한개는 V..
[ML] Ensemble - DL에 적용 딥러닝 성능을 향상하기 위한 기법으로 사용할 수 있다. 각각 다른 신경망으로 학습데이터에 대해 각각 따로 학습을 시킨 후, n개의 예측값을 출력시키고 그것을 n으로 나눈 평균값을 최종 출력으로 하는 것이다. (Stacking사용) 오버피팅의 해결과 약간의 정확도 상승 효과가 실험을 통해 입증되었다. 또한 평균이 아닌 투표방식, weight별 가중치를 다르게 주는 방법들도 존재한다. ex) pretrained 된 모델들을 앙상블모델로 만들어 분류의 성능을 높이자 DataLoader 생성 모델1, 모델2, 모델3 생성 (ResNet, Inception, DensNet 예시) 각 모델에서 컨볼루션 feature 추출 그 feature들로 학습, 검증 데이터셋 생성 및 DataLodaer 생성 앙상블 모델 생성..
[ML] Curse of Dimension(차원의저주) 데이터의 차원이 증가하면 이것을 표현하기 위한 데이터양이 기하급수적으로 올라간다 우리에게 4개의 데이터가 있다고 가정해볼게요. 그리고 모든 축의 길이가 2인 2차원공간과 3차원공간에 4개의 데이터를 집어넣을거에요. 왼쪽그림에서는 면적당 데이터가 차지하는 밀도는 1이겠네요. 우측그림에서는 면적당 데이터가 차지하는 밀도가 1/2일거에요. 그렇다면 공간의 차원이 높아질 수록 같은 데이터량이라고 할지라도 (데이터가 공간을) 차지하는 비율이 낮아진다고 할 수 있겠죠? 우리가 30개의 데이터를 갖고 있는다고 했을때보다 1000개의 데이터를 갖고 있을때 overfitting이 일어날 확률이 더 적을거에요 (이에 대한이유는 앞선글의 가위 예시를 통해 이해해주시면 좋을것 같아요). 결국엔 같은 공간차원이라고 해도 데이터..
[ML] Activation2 - 존재하는 이유 Perceptron은 많은 문제를 해결해 줄 것으로 기대했어요. 예를들어 두 개의 입력값 x1, x2 ∈ {0,1} 중 하나만 1이라는 입력이 들어오면 1이라는 결과를 도출하는 OR 문제같은 경우나, 두 개의 입력값이 모두 1이어야만 1이라는 결과를 도출하는 AND 문제와 같은 경우는 쉽게 해결이 가능했어요. x1을 X로, x2를 Y라고 하고 Y를 C라는 임의의 상수라고 표현하면 activation function을 거치기 직전인 w1X+w2Y=C 라는 식이 만들어 지겠네요. 그런데 왼쪽 식을 Y=(-w1X+C)w2 라고 바꿔주면 직선의 방정식 (linear) 이 되는 것을 볼 수 있죠? 충분히 두 개의 입력으로 구성된 perceptron으로 문제 해결이 가능해졌어요. 그런데 우리가 정의한 문제공간(Or..
[ML] 뉴럴네트워크모델 (구조, 비용함수, 경사하강법, Backpropagation 알고리즘) Backpropagation 알고리즘 이건 10번은 봐야될 강의다!
[ML] Support Vector Machine(SVM)
[ML] LSTM (Long Short-Term Memory, 장단기 메모리) 2 위 그림에서 A는 RNN의 한 덩어리이다. A는 input xtxt를 받아서 htht를 내보낸다. A를 둘러싼 반복은 다음 단계에서의 network가 이전 단계의 정보를 받는다는 것을 보여준다. 이러한 RNN의 반복 구조는 혹여 불가사의해 보일 수도 있겠지만, 조금 더 생각해보면 RNN은 기존 neural network와 그렇게 다르지 않다는 것을 알 수 있다. RNN을 하나의 network를 계속 복사해서 순서대로 정보를 전달하는 network라고 생각하는 것이다. 아예 반복을 풀어버리면 좀 더 이해하기 쉬울 것이다. 이렇게 RNN의 체인처럼 이어지는 성질은 곧장 sequence나 list로 이어지는 것을 알려준다. 이런 데이터를 다루기에 최적화된 구조의 neural network인 것이다. 그리고 진..
[ML] LSTM (Long Short-Term Memory, 장단기 메모리) 1 바닐라 아이스크림이 가장 기본적인 맛을 가진 아이스크림인 것처럼, 앞서 배운 RNN을 가장 단순한 형태의 RNN이라고 하여 바닐라 RNN(Vanilla RNN)이라고 합니다. (케라스에서는 SimpleRNN) 바닐라 RNN 이후 바닐라 RNN의 한계를 극복하기 위한 다양한 RNN의 변형이 나왔습니다. 이번 챕터에서 배우게 될 LSTM도 그 중 하나입니다. 앞으로의 설명에서 LSTM과 비교하여 RNN을 언급하는 것은 전부 바닐라 RNN을 말합니다. 1. 바닐라 RNN의 한계 앞 챕터에서 바닐라 RNN은 출력 결과가 이전의 계산 결과에 의존한다는 것을 언급한 바 있습니다. 하지만 바닐라 RNN은 비교적 짧은 시퀀스(sequence)에 대해서만 효과를 보이는 단점이 있습니다. 바닐라 RNN의 시점(time s..
[ML] RNN (Recurrent Neural Network, 순환 신경망) 앞서 배운 신경망들은 전부 은닉층에서 활성화 함수를 지난 값은 오직 출력층 방향으로만 향했습니다. 이와 같은 신경망들을 피드 포워드 신경망(Feed Forward Neural Network)이라고 합니다. 그런데 그렇지 않은 신경망들이 있습니다. RNN(Recurrent Neural Network) 또한 그 중 하나입니다. RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖고있습니다. 이를 그림으로 표현하면 위와 같습니다. x는 입력층의 입력 벡터, y는 출력층의 출력 벡터입니다. 실제로는 편향 b도 입력으로 존재할 수 있지만 앞으로의 그림에서는 생략합니다. RNN에서 은닉층에서 활성화 함수를 통해 결과를 내..
[ML] End-to-End Deep Learning End-to-End Deep Learning 딥러닝은 종단간 기계학습(end-to-end deep learning)이라고도 불린다. 여기서 '종단간'은 처음부터 끝까지라는 의미로, 입력에서 출력까지 파이프라인 네트워크 없이 한 번에 처리한다는 뜻이다. 파이프라인 네트워크란, 전체 네트워크를 이루는 부분적인 네트워크를 뜻한다. 하지만, End-to-End Deep Learning은 만능이 아니다. end-to-end deep learning 을 사용하기 위해서는, 파이프라인 네트워크 없이도 잘 동작 할 만큼의 많은 데이터가 필요하다. 문제가 복잡할 수록, 전체 문제(전체 네트워크)를 간단한 문제(파이프라인 네트워크)로 나눠서 해결하는 것이 효율적일 때도 있기 때문이다. 데이터의 정보가 각각의 파이프라인에 ..
[ML] Sigmoid, ReLu
[ML] Gradient Descent3 Gradient descent : 에러를 미분하여 weight를 업데이트 하는 방법. Back-propagation : Hidden node에서 에러를 미분하여 weight를 업데이트 하는 방법. Feedforward 그럼 본격적으로 input을 네트워크에 입력하여 출력을 얻는 과정을 살펴보겠습니다. input은 벡터로, weight는 행렬이므로 node의 출력은 행렬곱에 의해 구해집니다. 이렇게 구해진 node의 출력은 Activation 함수에 들어갑니다. 1-07. Multi Layer Perceptron 총정리 이제 1단원을 마무리하며 최종 정리 및 요약을 해보겠습니다. 이 포스트에 MLP(Multi Layer Perceptrons)의 내용을 모두 담았습니다. MLP를 훈련하기 위해서는 다음과 같..
[ML] Softmax regression, Categorical Cross-Entropy Loss, Multi-class Classification 앞서 로지스틱 회귀를 통해 2개의 선택지 중에서 1개를 고르는 이진 분류(Binary Classification)를 풀어봤습니다. 이번 챕터에서는 3개 이상의 선택지 중에서 1개를 고르는 다중 클래스 분류 문제를 위한 소프트맥스 회귀(Softmax Regression)에 대해서 배웁니다. 다중 클래스 분류(Multi-class Classification) 이진 분류가 두 개의 선택지 중 하나를 고르는 문제였다면, 세 개 이상의 선택지 중 하나를 고르는 문제를 다중 클래스 분류라고 합니다. 아래의 문제는 꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이로부터 setosa, versicolor, virginica라는 3개의 품종 중 어떤 품종인지를 예측하는 문제로 전형적인 다중 클래스 분류 문제입니다. 위..
[ML] Epoch, iteration, batch size 머신 러닝 - epoch, batch size, iteration의 의미 - 출처 이번 포스팅의 주제는 텐서플로우나 케라스 등을 사용해서 모델을 만들어 보았으면 다들 아실 용어... blog.naver.com
[ML] Transfer learning1 한 명의 개발자가 있습니다. 이 개발자는 개, 고양이, 말, 소, 양을 구별할 수 있는 이미지 분류용 CNN 모델을 만들어야합니다. 보스가 시켰으니까요. 그래서 이 개발자는 수많은 개, 고양이, 말, 소, 양의 이미지를 인터넷상에서 많이 찾아왔습니다. 이 이미지들을 가지고 CNN 모델을 훈련시켰습니다. 수많은 테스트를 통해 최적의 모델 가중치(weights)를 찾아냈습니다. 즉, CNN 모델 내의 많은 가중치들이 개, 고양이, 말, 소, 양을 분류하기에 적합하도록 조정이 된 것이죠. 그런데 갑자기 보스가 개, 고양이, 말, 소, 양은 분류할 필요가 없어졌다고 합니다. 그것 대신 사슴, 코끼리, 토끼, 염소, 호랑이를 분류할 수 있는 모델을 만들어달라고 합니다. 최대한 빨리! 이 개발자는 너무나 짜증이 났..
[ML] pre-training , fine-tuning, Bottleneck feature Pre Training 이란? 선행학습(pre-training) 사전훈련(pre-training) 전처리과정(pre-training) 이라고도 하는데, 이는 Multi Layered Perceptron (MLP)에서 Weight와 Bias를 잘 초기화 시키는 방법이다. 이러한 Pre-training을 통해서 효과적으로 layer를 쌓아서 여러개의 hidden layer도 효율적으로 훈련 할 수 있다. 또한, 이는 unsupervised learning이 가능하기 때문에(물론 이러한 가중치와 편향 초기화가 끝나면 레이블 된 데이터로 supervised learning 해야 한다 -> fine tuning) 레이블 되지 않은 큰 데이터를 넣어 훈련 시킬 수 있다는 점을 장점으로 들 수 있다. 또한 Drop-..
[ML] Objective Function, Loss Function, Cost Function의 차이 학습을 통해 최적화시키려는 함수이다. 딥러닝에서는 일반적으로 학습을 통해 Cost를 최소화시키는 optimize작업을 수행을 하고 이때 Cost function을 Objective function이라 볼 수 있다. 하지만 Objective function에 꼭 Cost function만 있는 것은 아니다. 예로 MLE와 같이 학습을 통해 확률을 최대화하려는 function 역시 Objective function으로 정의되지만 이는 Cost, Loss function은 아니다. input(x)에 대한 예측값(y^)과 실제 label값(y) 사이의 오차를 계산하는 함수이다. 예로 linear regression의 경우 Loss function으로 최소제곱오차를 사용한다. 최소제곱오차 즉, 하나의 input ..
[ML] Gradient Descent2 - Optimizer 가장 기본이 되는 optimizer 알고리즘으로 경사를 따라 내려가면서 W를 update시킨다. Gradient descent notation GD를 사용하는 이유 왜 이렇게 기울기를 사용하여 step별로 update를 시키는것일까? 애초에 cost(W)식을 미분하여 0인 점을 찾으면 되는게 아닌가?? -> 내가 알고 있기로 두 가지 이유 때문에 closed form으로 해결하지 못한다고 알고 있다. 1. 대부분의 non-linear regression문제는 closed form solution이 존재하지 않다. 2. closed form solution이 존재해도 수많은 parameter가 있을때는 GD로 해결하는 것이 계산적으로도 더 효율적이다. full-batch가 아닌 mini batch로 학습을..
[ML] Perceptron3 - Multi Layer Perceptron XOR의 문제를 극복하지 못한 퍼셉트론은 다층 퍼셉트론(Multi Layer Perceptron)이 나타나면서 새로운 국면에 진입하게 된다. 다층 퍼셉트론이란 퍼셉트론을 여러개를 합친 것을 의미한다. 기존의 퍼셉트론은 위와 같은 input layer와 output layer의 2개로만 이루어진, 구조를 보여왔다. 이러한 구조는 XOR의 난제를 해결하지 못하지만, 퍼셉트론을 겹치면 얘기가 달라진다. 아래는 진리표로 XOR을 극복하는 것을 보여준다. XOR 진리표는 X1값과 X2값이 동일해야지, Y값이 1이 나오는 진리표라는 것을 잘 알고 있다. 그럼 위의 값을 AND로 합치면 어떻게 될까?? 우선, 위의 값을 좀 더 알기 쉽게 다시 표로 정리를 하자면 아래와 같이 볼 수 있다. X1과 X2를 NAND와 O..
[ML] Perceptron2 - 논리회로 1. 퍼셉트론을 이해하는, 논리회로 초창기 퍼셉트론은 단순한 분류 문제를 풀 수 있었습니다. 이걸 이해하기 위해서는 진리표를 확인해야 될 필요가 있습니다. 인간의 논리방식을 컴퓨터로 구현할 수 있다면 인공지능을 구현해 낼 수 있을 것이다. 라는 것이 당시의 생각이었고, 실제로 로센블래트는 분류하는 문제를 시연까지 할 정도로 사람들에게서 꿈과 같은 기술을 보여주게 되었습니다. 그 분류를 보여주는 것이 "진리표대로 작동하냐"인데 위 그림처럼 어떠한 값(input)이 2개 없다고 가정을 할 때 컴퓨터가 논리적으로 인식하는 방식이 다음과 같은 게이트로 구현하는 것입니다. 2. AND 게이트 AND는 모두 True 일 경우에 작동을 한다입니다. 한쪽이라도 False일 경우 작동을 멈추는데 퍼셉트론은 1일 경우 T..