목록분류 전체보기 (117)
ROKO

모델을 구성하는 많은 hyperparameter들이 존재하는데 우선순위를 매기면 다음과 같다. 1. learning rate2, moment, #hidden units, mini-batch size3. #layers, learning rate decay4. etc 각각의 hyperparameter는 어떻게 구할 수 있을까?smapling 방식으로 grid search, random search 가 기본적인데 hyperparameter 범위가 아주 작지 않은 한 random search를 추천한다. 그리고 이 sampling을 가지고 coarse to fine 방식으로 hyperparameter를 찾을 수 있다.* sampling을 할때 적절한 hyperparameter 범위를 찾는게 중요하다. ex) ..

vectorization으로 학습 속도를 빠르게 했지만 전체 데이터 크기가 너무 커지면 학습속도가 느려지게 된다. 이때는 전체 학습데이터를 mini-batch로 나누어 학습시키면 속도가 빨라진다. 전체 학습데이터를 사용하는것을 batch gradient descent, 전체 학습데이터를 같은 크기 단위로 나누어 작은 배치를 사용하는것을 mini-batch gradient descent라고 한다. 각 1 epoch당 batch gradient descent는 역전파를 한번 하고 mini-batch gradient descent는 mini-batch 개수 만큼 역전파를 하게 된다. batch 는 cost 가 단조감소하는 모습을 보이는 반면 mini-batch의 경우 전체적으로 감소하는 모습을 보이기는 하지만..

Applied ML is a highly iterative process최적의 hyperparameter를 찾기 위해서는 반복적인 과정이 필요할 수 밖에 없다. Train/dev/test sets예전부터 train:test=7:3 혹은 train:dev:test=6:2:2 로 설정하여 실험을 진행하였지만, 현재 빅데이터의 시대에 들어서면서 굳이 많은 양의 dev, test sets 이 필요하지 않게 되었다. dev, test의 목적은 모델이 잘 학습되었는지 확인하고자 하는 용도이기 때문에 적은 데이터로도 충분하다. 따라서100만개의 매우 많은 데이터가 있다고 가정한다면 train:dev:test=98:1:1 으로 분할하여 사용한다. 만약 100만개 이상이라면 train:dev:test=99.5:0.25:..

NotationL = #layers\(n^{[l]}\) = #units in layer \(l\), (input = layer "0")deep network의 forward propagation을 vectorization으로 표현하면 아래와 같다.\(Z^{[l]}=W^{[l]}A^{[l-1]}+b^{[l]}\)\(A^{[l]}=g^{[l]}(Z^{[l]})\) deep learning 잘되는 이유를 직관적으로 이해해보자. 위 그림은 face detection 을 위한 모델인데, 앞부분에서는 edge 같은 간단한 특징들을 추출하고 이후부터 더 복잡한 눈, 코, 입 마지막은 다양한 사람들의 얼굴 종류를 추출하는것을 알 수있다. 따라서 딥러닝은 간단한 특징으로부터 복잡한 특징을 구현해 학습하는 능력을 가지고 ..

Notation\( z^([1]) \): 1번째 layer로부터 나온 값\(z^{[1]}_1\): 1번째 layer로부터 나온 값중 1번째 node|(\z^{[1](1)}\): 1번째 training data로 계산한 1번째 layer 값\(a^{[0]}=X\)[]: subscript square bracket[]는 노드 (node)나 층 (layer)에 관련한 정보를 주는 표시이고 ()는 이전에 정의했다시피 training data에 대한 정보를 의미한다. .층이 하나인 logistic regression이 아닌 multi layer 상황을 다룬다. 각 층은 입력층 은닉층.출력층으로 구분된다. Activation function수식에서 활성함수는 g()로 표현한다. 보통 최종 출력값이 0~1이 나와야하..

Vectorizationfor loop 병목현상을 효과적으 해결하는 skill이다.보통 GPU를 활용해 병렬처리를 하는데 jupyter notebook은 기본적으로 CPU에서 돌아간다. 그럼에도 vectorization이 효과가 있는 이유는 CPU, GPU 모두 SIMD (single instruction multiple data) instruction이라는 병렬 명령어를 지원하기 때문이다. 따라서 많은 데이터를 처리하는 경우 numpy를 적극 사용하는것을 추천한다. 자세한 실험들은 아래 링크에서 확인하자.https://tech.kakao.com/posts/349 NumPy와 C++ Extensions의 성능 비교 - tech.kakao.com파이썬은 놀라운 생산성을 발휘하는 언어입니다. 하지만 성능 문..

고양이 사진을 입력으로 받아 고양이인지 아닌지 이진분류하는 로지스틱 회귀 모델에 대해 얘기한다.우선 컬러 색상이 있는 이미지의 경우 이미지의 높이, 너비와 색을 표현하기 위한 R,G,B 3가지 채널로 분리되어 총 HxWx3의 숫자들로 표현된 데이터로 나타낼 수 있다. 따라서 모델의 목표는 HxWx3 의 크기에 해당하는 데이터를 input으로 받아 고양이가 맞다면 1 아니라면 0을 반환하는 과정을 학습하는 것이 목표다. 표기 정의\((x,y) \, x \in R^{n_x},y \in \{ 0,1\} \) - \( n_x \): feature 크기, x: data, y: label\( m: \{ (x^{(1)}, y^{(1)}) \cdots (x^{(m)}, y^{(m)}) \} \) - 학습데이터 개수..

신경망 (neural networks)은 input으로부터 output을 예측하도록 하도록 하는 알고리즘이다. 이때 hidden units은 input 값에 의존적이며 구체적인 특징 값을 의미하지 않고 그저 output을 잘 예측하기 위한 임의의 값으로 학습된다. 현재 경제적 가치를 이끌어내는 딥러닝은 대부분 지도학습 (supervised learning)을 이용한 모델들이다. 지도 학습이란 input(x)에 대해 대응되는 output(y)가 존재하는것을 의미하고 모델은 input x에서 output y로 매핑하기 위한 함수를 학습한느것이 목적이 된다. 쉽게 말하면 데이터에 대한 정답이 주어진 환경을 학습하는 것을 말한다. Input (x)Output (y)ApplicationHome features (..

vscode에서 ananconda 가상환경을 이용해 코딩을 하는 경우 가끔씩 패키지가 설치가 되어있음에도 import error 문구가 뜨는 경우가 있다. 이런 경우는 말그대로 가상환경을 사용해서 생기는 문제인데, cmd + shift + p 를 눌러 Python : Select interpreter 를 검색한 뒤 자신이 사용하려는 가상환경에 설치된 python 버전을 선택하면 해결된다. 어떻게 보면 기초적인 부분인데 가끔씩 깜빡하는것 같다. 가상환경 사용시 유의하도록 하자.

https://github.com/he-dhamo/simsg GitHub - he-dhamo/simsg: Semantic Image Manipulation using Scene Graphs (CVPR 2020) Semantic Image Manipulation using Scene Graphs (CVPR 2020) - GitHub - he-dhamo/simsg: Semantic Image Manipulation using Scene Graphs (CVPR 2020) github.com Semantic Image Manipulation using Scene Graphs (CVPR 2020) 논문을 하나씩 스크래치로 구현하며 실험해보고자 library를 설치하는데 python 3.7 설치에서 자꾸 에러가 발..