GAN: Generative Adversarial Nets
·
ML&DL/논문리뷰
AbstractGAN은 생성 모델을 학습하기 위한 새로운 적대적 학습 프레임워크를 제안한다. 이 방식은 데이터 분포를 찾아내려는 생성기 G와, 입력이 실제 데이터인지 생성된 데이터인지 판별하려는 판별기 D를 동시에 학습시키며, 두 모델은 미니맥스 게임 구조를 이룬다. 이론적으로는 무한한 표현력을 가정할 때 G와 D의 최적해가 존재하며, 최적해가 존재하는 지점에서 G는 실제 데이터 분포를 재현하고 D는 모든 입력에 대해 0.5의 확률을 출력한다. 또한 제안된 방식은 MCMC나 복잡한 추론 절차 없이 단순히 역전파만으로 학습과 샘플 생성이 가능하다. 실험에서는 이 프레임워크가 다양한 데이터셋에서 생성 모델로서 유의미한 품질을 보여줌을 확인했다. *MCMC(Markov Chain Monte Carlo): 확..
EfficientNet
·
ML&DL/논문리뷰
Abstract합성곱 신경망은 보통 주어진 자원 안에서 먼저 만들어진 후, 더 많은 계산 자원이 생기면 성능을 높이기 위해 모델을 크게 키우곤 했다. 이 논문에서는 이런 모델 확장 방식을 연구한 끝에, 깊이, 너비, 해상도 중 하나만 키우는 것이 아니라 세 요소를 균형 있게 함께 키우는 것이 성능 향상에 더 효과적이라는 점을 밝혀냈다. 관찰을 바탕으로 단순한 복합 계수(compound coefficient) 를 이용해 모델의 깊이, 너비, 해상도를 동시에 일정한 비율로 키우는 새로운 스케일링 방법을 제안했다. 실험을 통해 이 방식이 MobileNet과 ResNet 같은 기존 모델을 확장하는 데도 효과적임을 확인했다. 또한 신경망 구조 검색 기법을 이용해 새로운 기준 모델을 만든 뒤, 이를 위에서 언급한 ..
ResNet
·
ML&DL/논문리뷰
Abstract깊은 신경망의 훈련을 용이하게 하기 위해 잔차 학습(residual learning) 프레임워크가 제안되었다. 이 프레임워크는 레이어가 참조되지 않은 함수를 학습하는 대신 레이어 입력을 기준으로 잔차 함수를 학습하도록 재구성하였다. 휴리스틱 증거에 따르면 이러한 잔차 네트워크는 최적화가 더 용이했으며, 깊이를 상당히 증가시켜도 정확도를 높일 수 있었다. ImageNet 데이터셋에서 최대 152개 레이어 깊이의 residual net을 평가하였는데, 이는 VGGNets보다 8배 더 깊으면서도 복잡도는 더 낮았다. 이러한 residual net의 앙상블은 ImageNet 테스트 세트에서 3.57%의 오류율을 달성하며, ILSVRC 2015 분류 작업에서 1위를 차지하였다. 또한 CIFAR-10..
BLIP
·
ML&DL/논문리뷰
Abstract기존의 VLP 모델들은 주로 이해 기반 또는 생성 기반 작업 중 한 분야에서만 뛰어났고, 성능 향상은 노이즈가 많은 웹 이미지-텍스트 쌍 데이터셋을 확장하는 방식으로 이루어졌다. 하지만 이는 최적의 감독 소스가 아니었다. 본 논문에서는 이러한 한계를 극복하기 위해 BLIP이라는 새로운 프레임워크를 제안한다. BLIP은 시각/언어 이해 및 생성 작업 모두에 유연하게 전이될 수 있다. 캡션 부트스트래핑(bootstrapping the captions) 방식을 통해 노이즈가 많은 웹 데이터를 효과적으로 활용하며, 이 과정에서 캡셔너(captioner)가 합성 캡션을 생성하고, 필터(filter)가 노이즈 있는 캡션을 제거한다. BLIP은 이미지-텍스트 검색, 이미지 캡셔닝, 시각 질문 응답(VQ..
CLIP
·
ML&DL/논문리뷰
AbstractSOTA CV 시스템은 미리 정의된 고정된 객체 범주를 예측하도록 훈련된다. 이러한 제한된 형태의 감독은 시스템의 일반성과 유용성을 제약하고, 새로운 시각적 개념을 인식하려면 추가적인 라벨링 데이터가 필요하다. 본 논문은 어떤 캡션이 어떤 이미지에 속하는지를 예측하는 단순한 사전 훈련 작업이 인터넷에서 수집한 4억 개의 (이미지, 텍스트) 쌍 데이터셋으로부터 최첨단 이미지 표현을 처음부터 학습할 수 있는 효율적이고 확장 가능한 방법임을 입증하였다. 사전 훈련이 완료된 후에는 자연어를 활용하여 학습된 시각적 개념을 참조하거나 새로운 개념을 설명함으로써 모델이 다양한 다운스트림 작업에 zero-shot transfer할 수 있도록 한다.*zero-shot transfer: 모델이 특정 훈련 데..
YOLO
·
ML&DL/논문리뷰
Abstract기존의 객체 탐지 연구들은 주로 분류기를 재활용하여 속도 느림, 구조 복잡YOLO는 이와 다르게 이미지를 한 번만 보고, 그 안의 모든 객체의 위치와 클래스 확률을 동시에 예측전체 탐지 과정을 하나의 신경망으로 통합 → 모델 전체 최적화 가능 → 초당 45프레임으로 작동, Fast YOLO 155프레임으로 작동위치 오차↑, 배경을 객체로 잘못 인식↓미술 작품 같은 전혀 다른 도메인에서 훨씬 더 잘 일반화용어 정리AP, mAP란?해당 사진에서Precision(정밀도): 모델이 검출해낸 박스 중에 정답 박스가 몇개 존재하는지에 대한 값Recall(재현율): 실제 객체 중에서 모델이 맞게 탐지한 비객체 확률이 0.5 이상인 박스만 탐지 성공으로 인정한다고 할 때, 0.5에 해당하는 임계값을 높이..
GoogLeNet
·
ML&DL/논문리뷰
1. IntroductionGoogLeNet은 AlexNet보다 12배 적은 파라미터를 사용하면서 더 높은 정확도 달성성능 향상은 딥러닝과 전통적 CV(R-CNN)의 결합에서 옴모바일·임베디드 환경을 고려해, 효율성도 고려Inception 아키텍처:이름은 Network in Network + “We need to go deeper” 밈에서 유래Deep은 (1) 새로운 모듈 구조(Inception module) 도입, (2) 네트워크 깊이 증가 두 가지 의미ILSVRC 2014 classification & detection에서 기존 SOTA를 크게 능가2. Related Work기본 CNN은 Conv layer(normalization, pooling) + fully-connected layer의 구조를..
VGGNet
·
ML&DL/논문리뷰
1. Introduction2012년 AlexNet 이후 CNN은 이미지 인식 분야에서 큰 성공을 거뒀음본 논문에서는 네트워크의 깊이(depth)를 크게 늘리면 성능이 향상되는가? 를 집중적으로 연구모든 layer에 3X3 Conv filter를 사용하면서 depth를 점진적으로 늘려감2. Convnet Configurations입력은 고정 크기 224×224 RGB 이미지, 학습 데이터셋 전체에서 계산된 평균 RGB 값을 픽셀에서 빼주어 전처리특징:모든 합성곱 층: 3×3 필터 (가장 작은 receptive field)1x1 필터는 선형 변환이랑 같음stride = 1, padding = 1로 공간 해상도 유지5개의 max-pooling 층 (2×2, stride 2)마지막: 3개의 Fully Conn..
AlexNet
·
ML&DL/논문리뷰
Abstract본 논문의 모델은 ImageNet LSVRC-2010 대회에서 120만 장의 고해상도 이미지를 1,000개의 클래스로 분류하기 위한 대규모 CNN이다. 모델은 5개의 convolutional layers(일부는 max-pooling layers)과 3개의 fully-connected layers(최종 1,000-way softmax)로 이루어져 있다.학습 속도를 높이기 위해 non-saturating 함수(ReLU)를 사용하고, 컨볼루션 연산을 GPU로 구현했으며, fully-connected layers의 과적합을 줄이기 위해 Dropout을 적용했다. 그 결과 LSVRC-2010에서 top-1 오류율 37.5%, top-5 오류율 17%를 달성했다. 이어 ILSVRC-2012에서도 15..
[백준] 1339: 단어 수학
·
알고리즘
https://www.acmicpc.net/problem/1339 정답코드import sysinput = sys.stdin.readlinen = int(input())alphabet = {}a = [input().rstrip() for _ in range(n)]for i in a: x = len(i)-1 for j in i: if j in alphabet: alphabet[j] += 10**x else: alphabet[j] = 10**x x -= 1sort_values = sorted(alphabet.values(), reverse=True)result = 0num = 9for k in sort_values: ..