목록Ai (8)
Joonas' Note
먼저 Quick, Draw! 는 구글에서 위와 같은 낙서 데이터 셋을 학습하여 345개의 주제 중 하나를 그리면 머신 러닝 모델을 통해 정답을 맞추는 게임이다. 그리고 이 데이터셋을 오픈소스로 공유했다.목표 설정시계열 데이터를 Online 으로 처리하는 RNN 모델을 다루고 싶었고 최종적으로는 브라우저에서 돌아가도록 포팅하는 것이 목표였으나, 아래 서술될 이유로 개발 방향을 잠시 수정하였다.345개의 클래스로 적지 않은 클래스를 분류하는 모델이지만 각 클래스당 최소 1만개 이상의 Dataset이 있으므로 학습에는 어려움이 없을 것이라고 판단하였다.목표 수정간단한 RNN 모델을 만들었는데 학습이 잘 되지 않았었고, 이를 해결하는 과정에서 RNN 구조의 문제인지 데이터 전처리의 문제인지 파악하기가 어려워, ..
Logit logit 함수를 이해하려면 odds 를 알아야한다. logit 함수는 \( logit(p) = log(odds) \) 이기 때문이다. Odds odds 는 어떤 사건이 발생할 확률과 발생하지 않을 확률을 비교한 값이다. 일반적으로는 성공 확률을 실패 확률로 나누어서 계산한다고 한다. $$ odds = \frac{p}{1-p} $$ 여기에 로그를 씌운 함수를 logit function 이라고 부른다. $$ logit(p) = log(odds) = log(\frac{p}{1-p}) $$ 이 logit function 을 x=[0, 1] 에 대해서 그래프를 그려보면 아래와 같이 생겼다. Sigmoid sigmoid 함수는 logit function의 역함수이다. 즉, x와 y를 뒤집은 그래프라는 ..
이전 글 - [딥러닝 일지] 데이터 늘리기 (Data Augmentation) Convolution 2D 이미지를 다루는 딥러닝에서 핵심적인 요소로 쓰이고 있다. 이걸 쌓은 네트워크가 CNN. 학습 데이터로 들어가는 텐서는 아래와 같이 벡터 덩어리(?)의 모습이므로, 오른쪽의 RGB 이미지도 왼쪽과 같은 (3, 4, 4) 크기의 텐서가 된다. 하지만 같은 이미지를 조금만 회전해도 배열의 순서가 완전히 다른 모습이 되기 때문에, 학습하려는 그래프의 입장에서는 의미있는 특징(feature)들을 뽑아내기 힘들어진다. 이미지는 그 특성상, 인접한 픽셀끼리 뭉쳐서 해석하는 것이 어떤 의미를 가질 수 있다고 생각한 접근이 아닐까한다. 필터, 커널 그렇다면 덩어리 단위로 묶어주는 작업이 필요한데, 이것은 슬라이딩 윈..
이전 글 - [딥러닝 일지] 다른 모델도 써보기 (Transfer Learning) 오늘은 다음 주제를 다루는 과정에서, 이미지를 여러 방법으로 조작하는 것에 대해서 알아보았다. PIL 먼저, 파이썬에서는 이미지 라이브러리로 PIL(Python Imaging Library) 패키지가 매우 많이 쓰이는 것 같다. 많이 쓰이는 만큼, NumPy와 Tensor와도 호환되는 만들어주는 함수들이 있어서 자주 쓰는데 헷갈린다. 그래서 아래처럼 정리했다. from torchvision.transforms.functional import to_pil_image def pil_to_tensor(pil_image): # PIL: [width, height] # -> NumPy: [width, height, channel]..
이전 글 - [딥러닝 일지] 학습 조기 종료 (Early Stop) [딥러닝 일지] 학습 조기 종료 (Early Stop) 이전 글 - [딥러닝 일지] 과적합 문제, 그리고 배치 전략 [딥러닝 일지] 과적합 문제, 그리고 배치 전략 (교차 검증) 이전 글 - [딥러닝 일지] 이진 분류를 위한 CNN 모델 작성 (개 vs 고양이) [딥러닝 blog.joonas.io 들어가기 전에 이번에 하려던 것을 하기 위해 검색을 많이 해봤는데, 관용적으로 부르는 건지 실제 용어 정의가 있는 지는 모르겠다. 전이 학습(Transfer Learning)이라고도 부르고, 파인 튜닝(Fine Tuning)이라고도 부르는 것 같은 데, 찾아보기로는 다음과 같은 미묘한 차이가 있다. 전이 학습(Transfer Learning)은..
이전 글 - [딥러닝 일지] 과적합 문제, 그리고 배치 전략 [딥러닝 일지] 과적합 문제, 그리고 배치 전략 (교차 검증) 이전 글 - [딥러닝 일지] 이진 분류를 위한 CNN 모델 작성 (개 vs 고양이) [딥러닝 일지] 이진 분류를 위한 CNN 모델 작성 (개 vs 고양이) 이전 글 : [딥러닝 기록] 시작하기 - 개 vs 고양이 분류 [딥러닝 blog.joonas.io 이번 글은 Version 26을 기준으로 설명한다. Dogs vs. Cats Classification Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources www.kaggle.com 적당할 때 끝내기 실험을 ..
이전 글 - [딥러닝 일지] 이진 분류를 위한 CNN 모델 작성 (개 vs 고양이) [딥러닝 일지] 이진 분류를 위한 CNN 모델 작성 (개 vs 고양이) 이전 글 : [딥러닝 기록] 시작하기 - 개 vs 고양이 분류 [딥러닝 기록] 시작하기 - 개 vs 고양이 분류 딥러닝을 공부하면서, 헷갈리는 내용이나 앞으로 알아봐야 할 내용들을 블로그에 정리하기로 blog.joonas.io 정확도를 높이고 싶다!! 개와 고양이를 더 잘 구분하고 싶었다!! 나의 욕망은 무리한 삽질의 반복만 낳았다. 이전에 작성했던 MLP 모델의 네트워크에서 Convolution의 커널(kernel) 크기도 바꿔보고, stride 크기도 바꿔보고, 뒤 쪽 classifier에서 drop out도 해보고.. 이것 저것 해보았지만 결과는..
이전 글 - [딥러닝 기록] 시작하기 - 개 vs 고양이 분류 [딥러닝 기록] 시작하기 - 개 vs 고양이 분류 딥러닝을 공부하면서, 헷갈리는 내용이나 앞으로 알아봐야 할 내용들을 블로그에 정리하기로 했다. 까먹는 일이 부지기수고, 오래되면서 머릿 속에 있던 지식들이 섞이면서 점점 헷갈리고 있어 blog.joonas.io 모델 작성 데이터 셋이 어떤 구성으로 되어있는 지 알아보았고, 이제 그 데이터 셋으로 학습을 할 때다. 모델은 CNN 구조로, kaggle에서 돌아다니는 여러 노트북들을 보며 작성했다. 기본적인 개념은 Convolution으로 어떤 window 단위로 특징을 추출하고, 추출한 값에서 최대만 다시 추려내는 Max pooling, 그리고 사이사이에 활성화 함수로 ReLU가 있다. 이렇게를 ..