Machine Learning 썸네일형 리스트형 Optimization 방법론 Gradient Descent derivative-free optimization을 제외한 대부분의 기계학습 문제에서 optimization의 기본 전제는 Gradient descent이다. cost function의 기울기를 통해서, 최저점을 찾아 가는 것이다. 위의 그림처럼 표시된 위치에 있는 사람은 길을 따라 난 경사진 방향보다 오른쪽의 샛길로 가는 것이 더 빠른길이지만, 기울기 기반의 학습방식은 위와 같은 실질적인 길의 구조를 알 방법이 없고, 경사기반 하강을 한다. 따라서, 실제 더 빠른 갱신 방향이 있더라도, 현재 위치의 기울기를 기반으로 하기 때문에 다소 학습이 느릴 수 도 있다. *Hessian? gradient는 1차 미분이고, 2차 미분을 통해(hessian) newton 메서드를 기반.. 더보기 Overfitting을 막는 Regularization Overfitting 이란? 학습데이터를 너무 맹신한 나머지, 예측을 올바르게 하지못하는 상황을 말함. Regression : 초록색 선이 실제 모델(underlying function)이고, 붉은선이 학습된 linear model이다. 사실은 위의 그림에선 실제 underlying fuction을 알아서 overfit이라고 쉽게 말할 수 있는 것이지만, 일반적인 경우에선 underlying function이 어떻게 생겼는지 알 수가 없다. 그렇다고 무턱대고 trainging error가 지나치게(?)낮다고 판단되는걸 overfit이라고 단언할 수도 없다. training error가 낮아져하는건 궁극적으로 좋은 방향이기 때문이다. 따라서, optimal한 overfit을 막을 수는 없다. 진짜 unde.. 더보기 Popular CNN Architecture (3) - ResNet ResNet 다양한 Task에서 효과적인 성능을 얻은 것을 미루어 보아 매우 범용적인 Net이다. googLeNet과 마찬가지로 parameter수를 줄이기 위해 bottle neck 아키텍쳐이용. residual connection을 쓴 것이 가장 큰 특징. 기존의 코드에 reidual connection을 추가함으로 구현하는 방식이다. Network가 deep하다고 좋은 성능을 보장하지못함. Q.기존에 생각된 가장 큰 원인 -> Vanishing / Exploding gradients --layer가 깊어질때, back prop으로 얻어지는 gradients들이 너무 작아지거나, 너무 커져서 발생하는 문제? => ResNet曰 : 좋은 initializing(weight)을 수행하고, batch no.. 더보기 Popular CNN Architecture (2) - GoogLeNet GoogLeNet inception Module이 핵심이다. Inception module의 장점(특징) AlexNet처럼 한 단계가 여러 레이어로 분화된 것이 특징인데, AlexNet과 달리, 각각의 layer의 filter가 상이함. 여러 갈림길로 분화되어 receptive field가 넓어(좀 더 다양한 filter를 취합해서 각단계를 접근하게되니 성능향상이 기대가 됨)져 좀 더 넓은 영역을 보고 input의 포괄적인 정보를 인지할 수 있다. ( * (b)가 실제로 사용된 모델이다.) (b)모델을 보면 알 수 있듯이 1x1의 conv를 사용하여, 한 단계를 두 단계로 나누어 channel 수를 획기적으로 줄여 준다. => dimension reduction Dimension Reduction에 관해.. 더보기 3. PyTorch VS TensorFlow -Torch vs PyTorch? (-)Lua - (+)Python (-)no Autograd -(+) Autograd PyTorch 단점 Torch에 비해 누적된 코드들이 적고 계속 변화하고 있음. PyTorch를 사용하면 됨. -PyTorch vs TensorFlow 가장 큰 차이는 static (computational)graph이냐 dynamic (computational)graph이냐에 있다. TF의 경우 static grpah를 구축한다. 매 iteration 단계에서 기존에 구축된 정적인 동일한 computational graph에 sess.run방식으로 동작(FP)시킨다. PyTorch의 경우 dynamic graph를 사용한다. 주된 차이는 매 iteration을 통해 수행되는 FP에서 .. 더보기 Popular CNN Architecture (1) - AlexNet, VGG 현 시대의 비전분야에 CNN아키텍쳐 사용에 시발점이된 AlexNet에서 15년도 ICLR 우승작인 ResNet에 이르기까지 대략적으로 큰 획을 그은 대표적인 아키텍쳐는 크게 4가지가 있었다. 이번 포스팅에서는 4종의 아키텍쳐중 AlexNet과 VGGNet에 대해 간략하게 알아볼 것이다. 각각의 아키텍쳐들은 시간이 지날수록 error rate이 감소하고, depth가 깊어지는 경향이 있다. 다시말해, 일반적으로 layer의 depth가 깊어질수록 성능이 좋아질 여지가 높아짐. (무조건적으로 성능이 좋아지는 것은 아님) AlexNet 1. 구조 기존 activation function(tanh, sigmoid 등)에 비해서 ReLU를 사용했을때, 더 빠른 속도로 수렴하는 효과적인 성능을 보임. (지금까지도 .. 더보기 2. Pytorch에서의 추가적인 기능 - Data Loader, torch vision, visdom Data Loader pre-trained data (torch vision) Visdom Data Loader DataLoader는 dataset을 wrapping함으로써, 여러 추상화된 기능을 제공한다. mini-batch, shuffling, multi threading등과 같은 데이터 관련한 작업을 지원한다. custom data 를 필요로 할때엔 Dataset 클래스를 정의해서 사용하면 된다. 해당 클래스에선 어떤 source든지, 원하는 특정 type의 데이터로 읽는 방법을 정의해야한다. 이후에 이를 DataLoader로 warpping 하고 학습시키면 된다. DataLoader object를 순회하는 식으로 for 문을 설계하면, 매 iteration마다 mini-batch를 하게 되는 효과.. 더보기 1. Pytorch 기본 용어 및 2-layered NN 구성- Tensor, Variable, Module PyTorch는 기본적으로 크게 3개의 추상화된 객체를 제공합니다. Tensor : n-d array (numpy처럼 작성), GPU에서 동작 (Deep Learning과 직접적인관련은 없음) => numpy array유사 Variable : computational graph의 Node역할을 함. data나 gradient를 저장 => tensor flow의 Tensor, Variable, Placeholder 유사 Module : NN에서의 layer에 해당. 상태나 학습가능한 weight을 저장 => (조금 더 high level의 문법)tf.layers, TFSlim또는 TFLearn...등과 유사 * Pytorch 0.4가 릴리즈된 이후로는 Tensor가 Variable을 완전히 대체하여 현재는.. 더보기 이전 1 2 3 다음