목록분류 전체보기 (115)
ROKO
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 설치에서 자꾸 에러가 발..
export | grep SHELL 최근 맥북을 포멧하며 기본 설정이 날라갔다. 포멧을 한 계기는 환경변수가 꼬여서 더이상 커지다가는 스파게티나 꽈베기 노선과 같은 개발환경을 갖게 될거 같아 큰 결심을 하게 되었다. 유용한 기능중 하나인 vscode에서 git push시 내가 어떤 branch에 push하고 있는지 알려주는 설정인데, 맥 기본 shell이 bash에서 zsh로 바뀌면서 zsh를 기준으로 설정해야한다. 우선 어떤 기본 shell 설정을 사용하는지 확인해보자. export | grep SHELL 나는 zsh가 기본설정이므로 zsh를 기준으로 설명한다. vi ~/.zshrc vi로 zsh 설정파일을 편집해야 한다. 'i'를 누르면 insert라고 하단에 표시가 되면 수정이 가능하다. 빈공간에 ..
* : args, **:kwargs args는 가변인자들을 list형태로 input 받는다고 생각하면 쉽다. kwargs는 가변인자들을 dict형태로 input 받는다. def function1(*args): ... def function2(**kwargs): ... function1('a','b','c') function2(a = 'a',b = 'b', c = 'c') from [library] import * library에서 모든 내용을 import한다는 의미이다. 하지만 필요한 함수가 하나인 경우 그 함수명만 import하는게 최적화 면에서 좋다. 불러온 함수들 중 하나와 내가 설정한 변수명과 충돌이 생길수도 있다. function comment python 함수작성시 용이한 주석을 소개한다. d..