분류 전체보기 (369) 썸네일형 리스트형 Vision Transformer (2) Vision Transformer (1) Experiments How fine-tuning 실험 시에는 ViT 모델을 큰 데이터셋에 대해 사전훈련 하고 작은 데이터셋에 대해 fine-tuning 하는 과정을 거칩니다. Fine-tuning 을 위해서 사전훈련된 $z_L^0$에 붙은 MLP 를 제거하고 0으로 초기화된 $D\times K$ 선형변환 층을 추가합니다. ($K$는 fine-tuning 데이터셋 클래스 개수) 또한, fine-tuning 시에 고해상도 이미지를 사용하는 것이 좋다고 알려져 있기 때문에 패치 크기를 일정하게 유지한 채 큰 크기의 이미지를 사용합니다. 패치 크기가 고정되니 상대적으로 시퀀스 길이가 더 늘어나겠죠. 단 이러한 경우에는 사전훈련을 통해 학습한 position 임베딩 텐서.. Vision Transformer (1) Transformer 관련 포스트 Transformer Transformer 구현 Transformer Positional Encoding Transformer 모델은 발표 이후에 자연어 처리 (NLP) 분야에서의 새로운 기준이 되어 왔습니다. 자연스럽게 self-attention 개념을 컴퓨터 비젼 분야에 적용하려는 시도가 많았는데요, Vision Transformer (ViT) 등장 이전에는 convolution 구조와 함께 제한적으로 사용되었고 ResNet 계열 모델을 필두로 한 CNN 을 완벽하게 대체할 수는 없었습니다. 구글에서 발표한 Vision Transformer 모델은 convolution 구조를 완전히 배제하고 Transformer 모델과 비슷하게 순수한 self-attention 만을.. Transformer Positional Encoding Transformer 제가 Transformer 논문 "Attention Is All You Need" 를 읽을때마다 느끼는 점은 self-attention, multi-head attention 모두 좋지만 positional encoding 기법만큼은 직관적으로 이해하기 쉽지 않다는 점입니다. 물론 Transformer 자체에는 입력 시퀀스 위치에 대한 정보가 없으니 positional encoding 이 필요하다는 사실은 당연하나 논문에서는 매우 짧게 cosine / sine 함수로 이루어진 식만 제공합니다. 그렇다면 위의 식은 어떠한 이유로 유도가 되었을까요? 한 번 살펴보도록 하겠습니다. Positional encoding Positional encoding 이란 주어진 시퀀스에서 특정한 위치에.. Label Smoothing Multi-class 분류를 위한 cross entropy loss 에서 목적함수의 타겟으로 사용되는 라벨은 일반적으로 정확히 하나의 클래스만 명확히 표현하는 (one-hot vector) hard 라벨이 사용됩니다. Label smoothing 기법은 한 클래스가 전체를 모두 차지하는 hard 라벨을 정답 클래스의 비중을 약간 줄이고 나머지 클래스의 비중을 늘리는 soft 라벨로 변환하는 기법인데요, 처음에는 Inception 구조의 성능을 높이고자 도입되었고 간단한 정규화 방법으로 image classification, speech recognition, machine translation 분야에 Table 1에서 처럼 적극적으로 사용되고 있습니다. $K$개의 클래스에 대해서 라벨을 얼마만큼 부드럽게.. 제너레이터와 yield (1) 파이썬 코딩을 하다보면 시퀀스를 결과로 출력하는 일이 많습니다. 이럴때 가장 간단한 선택은 담길 원소들이 저장된 리스트를 반호나하는 것이죠. 예를 들어 문자열에서 띄어쓰기의 인덱스를 반환하고 싶다면 다음 코드와 같이 리스트의 append 메소드를 사용해 리스트에 결과를 추가하고 함수 마지막에 리스트를 반환하면 됩니다. def index_words(text): result = [] if text: result.append(0) for index, letter in enumerate(text): if letter == ' ': result.append(index+1) return result address = 'I am a student and a male and looking-good' result = i.. Maximum Likelihood Estimation & Maximum A Posteriori Maximum likelihood estimation (MLE) MLE (최대우도법)은 주어진 데이터셋 $D$에 대해 $D$를 가장 잘 설명하는 (likelihood) 모델의 파라미터 $w$를 찾는 방법입니다. Likelihood 란 특정한 파라미터로 정의된 모델의 분포가 데이터에 대해 얼마나 잘 들어맞는지에 대한 통계적인 정의로 확률은 단순히 정의된 확률분포 상에서의 값을 말하지만 likelihood 는 데이터 분포에 모델 분포가 얼마나 잘 들어맞는지를 뜻합니다. 즉, MLE는 likelihood 함수 $p(D|w)$ 가 최대화되는 $\hat{w}$를 찾는 방법이고 보통 로그를 취해 negative log-likelihood (NLL) 를 최소화하는 방향으로 식을 변환합니다. $\hat{w}=argma.. 코딩테스트 문제 (27) - 리스트에서 부분집합 출력하기 입력으로 숫자가 담긴 리스트가 주어졌을 때 리스트의 모든 부분집합을 출력하는 문제입니다. 지난 포스트에서는 깊이우선탐색으로 (DFS) 풀었지만 간단한 비트 연산자로 해결할 수 있습니다. 비트 연산자란 정수를 2진수로 표현하여 각 비트끼리 연산하는 operator 를 말하는데요, 파이썬에서의 비트 연산자는 비트를 $n$ 칸 만큼 왼쪽으로 옮기는 "> n" 의 두 가지가 존재합니다. 예를 들어 "1 Object Detection - YOLO v3 Pytorch 구현 (2) 지난 포스트 [Machine Learning/기타] - Object Detection - YOLO v3 Pytorch 구현 (1) Training Model 모델은 Darknet 을 사용합니다. YOLO 공식 홈페이지에 사전훈련된 Darknet 모델의 파라미터 "yolov3.weight"를 받을 수 있는데, 바이너리 파일이므로 Pytorch / Keras 프레임워크로 별도로 모델을 구성했다면 사전훈련된 파라미터 값을 레이어에 따라 적절하게 덮어씌우는 과정이 필요합니다. 즉, Darknet 모델을 불러오고 사전훈련된 파라미터 값을 불러온 이후에 backbone 모델 파라미터를 고정시키고 detector 부분만 따로 훈련시키는 전이학습을 (transfer learning) 수행합니다. 따라서 backbone.. 이전 1 ··· 16 17 18 19 20 21 22 ··· 47 다음