chanmuzi의 등록된 링크

키자드에 등록된 총 379개의 포스트를 확인하실 수 있습니다.

Tistory

<Instruction> Self-Alignment with Instruction Backtranslation

최근(2023.08)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Meta AI] 최소한의 annotated instruction data를 이용하여 모델을 학습. 이를 바탕으로 self-augmentation & self-curation을 수행하는 기법, instruction backtranslation. 배경 LLM을 instruction tuning함으로써 모델의 성능을 크게 향상시킬 수 있음이 잘 알려져 있습니다. 그러나 이를 위해 human-annotated data를 갖추는 것은 많은 비용을 필요로 하기 때문에, 성능을 크게 높일 수 있는 방식이 알려져 있음에도 불구하고 데이터셋 확보에..

Tistory

<Retrieval, In-Context Learning> RAVEN: In-Context Learning with Retrieval Augmented Encoder-Decoder Language Models

최근(2023.08)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [NVIDIA, USA] retrieval-augmented masked language modeling과 prefix language modeling을 결합한 모델, RAVEN. 추가적인 학습이나 모델의 변형 없이 few-shot performance를 향상시킬 수 있는 Fusion-in-Context-Learning(FiCL)를 제안. 배경 LLM의 general한 능력, 즉 다양한 태스크를 잘 수행할 수 있는 능력은 충분히 입증되었지만, 각 태스크에 맞게끔 tuning하는 것은 너무 많은 비용을 필요로 한다는 문제점이 있습니다...

Tistory

<Multi-modal> [BEiT] Image as a Foreign Language: BEiT Pretraining for All Vision and Vision-Language Tasks

과거(2022.08)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Microsoft Corporation] vision 그리고 vision-language task를 고루 잘 수행하는 multimodal foundation model, BEiT-3 여러 pre-training 기법 중에서 오직 masked "language" modeling 기법만을 사용한 것이 특징 배경 Transformers의 아키텍쳐가 엄청나게 좋은 성능을 보이면서 다양한 분야로 퍼져 나갔고, 현재는 multi-modal 분야에도 이것이 활발하게 사용되고 있습니다.(Multiway Transformer) 물론 아직까지 이것이..

Tistory

<Multi-modal> BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models

최근(2023.06)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success BLIP-2, generic & efficient 사전 학습 Vision & Language Model. frozen image encoder & frozen LLM으로 Querying Transformer를 2-step으로 학습. 배경 이전의 vision-language model을 특정 태스크에 맞게끔 end-to-end 학습하는 방식은 지나치게 많은 자원을 필요로 한다는 문제점이 있었습니다. 본 논문은 자원상의 한계를 극복하면서도 준수한 vision-language model을 만들기 위한 사전 학습 전략을 제시하고 있습니다. ..

Tistory

<Tool> Tool Documentation Enables Zero-Shot Tool-Usage with Large Language Models

최근(2023.08)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Google Cloud AI Research] demo가 아닌 documentation을 이용하여 zero shot만으로 적절한 tool을 사용할 수 있도록 함. unseen tool에 대한 확장 가능성을 보여줌. 배경 LLM이 여러 태스크들에 대해 뛰어난 성능을 보이는 것은 사실이지만, 현실의 다양한 일들을 모두 잘하도록 만드는 것에는 분명히 한계가 있습니다. 특히 다른 modality를 다루는 모델을 개발하는 것은 더욱 어려운 일이구요. 그러다보니 최근에는 모델이 직접 어떤 태스크를 처리하는 것보다 다른 기술들을 활용하도록 하는..

Tistory

<Tool> ToolLLM: Facilitating Large Language Models to Master 16000+ Real-world APIs

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success data construction과 model training/evaluation을 위한 프레임워크, ToolLLM tool 사용을 위해 제작된 instruction tuning dataset, ToolBench LLaMA 모델을 ToolBench에 fine-tuning한 ToolLLaMA 배경 직전 paper review에서 설명한 바와 같이, 최근 LLM의 성장세가 눈부심에도 불구하고 여러 high-level task에 대해 아쉬운 성능을 보일 때가 많다는 한계에 대해 여러 지적이 나오고 있습니다. 당연한 이야기이지만 LLM을 학습..

Tistory

<LLM> PolyLM: An Open Source Polyglot Large Language Model

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success multilingual 능력 향상을 목표로 한 1.7B & 13B 사이즈 다국어 모델. 학습 데이터에 영어가 아닌 데이터의 비중을 크게 높이고, multilingual self-instruct method를 적용한 것이 특징 배경 현재까지 많은 LLM들이 주목을 받았음에도 불구하고, 대부분의 모델들은 영어 데이터로 위주로 학습되었기 때문에 영어가 아닌 언어들에 대해서는 아쉬운 성능을 보여주고 있습니다. 보통 데이터셋을 구축할 때 고품질의 데이터를 인터넷으로부터 획득하는 경우가 대부분인데, 다른 언어들은 실사용자가 많다고 하더라도 인터..

Tistory

<Attention> [TransNormer] Scaling TransNormer to 175 Billion Parameters

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success 전통적인 somftmax 기반의 attention 모델이 아닌 Linear Attention 기반의 LLM, TransNormerLLM. positional embedding, linear attention acceleration, gating mechanism, tensor normalization, inference acceleration 등의 방식을 적용. linear attention을 가속화하는 Lightning Attention을 제시. 배경 대부분의 인공지능 모델들은 Transformer의 아키텍쳐를 기반으로 삼고 엄청난..

Tistory

<Attention> Retentive Network: A Successor to Transformer for Large Language Models

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success LLM의 기반이 되는 Retentive Network (RETNET)을 제안. scaling results, parallel training, low-cost deployment, efficient inference를 달성했다고 주장. 배경 트랜스포머 기반의 모델들은 그 뛰어난 성능 덕분에 많은 분야를 집어 삼키고 있지만, 지나치게 많이 요구되는 메모리 사용량과 연산량으로 인해 사용에 제약이 많습니다. 따라서 빠른 속도로 연산이 가능하면서도 준수한 성능을 낼 수 있는 모델에 대한 연구는 다방면으로 이뤄지고 있습니다. 모델의 성능과 관..

Tistory

<Adversarial Attack> Universal and Transferable Adversarial Attacks on Aligned Language Models

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success 언어 모델이 부정적인 표현들을 반환하도록 Adversarial Attack을 감행. 자동화를 통해 획득한 이 Attack은 굉장히 높은 확률로 jail break에 성공하고, 다른 모델들에 대해서도 유효하다는 결과. 배경 일부 기업들은 언어 모델이 악용될 수 있다는 이유로 이를 오픈소스로 공개하지 않고 있습니다. 구체적으로 말하자면 언어 모델이 부정적인 답변을 생성해냄으로써 악영향을 끼칠 수 있다는 것이죠. 예를 들어 ‘인류를 대학살하는 방법을 알려줘’라는 질문에 언어 모델이 완벽한 솔루션을 제공해준다면 어떻게 될까요? 이런 상황들을..

Tistory

<PEFT> LoraHub: Efficient Cross-Task Generalization via Dynamic LoRA Composition

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ 여러 개의 LoRA 모듈을 구성하여 task 간 일반화 성능이 뛰어난 LoRA 허브를 제시. few-shot 상황에서 in-context learning 능력이 준수함을 BBH(Big-Bench Hard) 벤치마크로 검증 배경 모델의 학습 가능한 파라미터수가 날이 갈수록 늘어나자 이를 최소화하며 동일한 성능을 유지하고자 하는 연구들이 이어지고 있습니다. 그중에서도 행렬 분해를 통해 학습 가능한 파라미터의 수를 획기적으로 줄이면서 기존의 성능에 버금가는 모델이 될 수 있도록 하는 학습 방식으로, LoRA가 가장 크게 주목을 받았죠. 하지만 이는 LLM이 가진 일반화 능력을 포기..

Tistory

<Multi-modal> Meta-Transformer: A Unified Framework for Multimodal Learning

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success multimodal 전용의 pair data 없이 frozen encoder로 feature를 추출하여, 12개의 modality에 대해 동시에 이해할 수 있는 transformer 기반 모델, Meta-Transformer 배경 마치 인간의 뇌처럼, 인공지능 모델도 한 modality에서 얻은 지식을 다른 곳으로 전이할 수 있도록 하는 연구가 이어지고 있습니다. 하지만 근본적으로 다른 modality 데이터는 그 특징과 성질이 너무 다르기 때문에 쉽지 않은 문제죠. 그래서 지금까지는 대부분 image - text 수준을 벗어나는 연..

Tistory

<LLM> Llama 2: Open Foundation and Fine-Tuned Chat Models

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [GenAI, Meta] LLaMA 모델을 발전시킨 LLaMA 2 모델과, 이를 대화 형식으로 fine-tuning한 LLaMA 2-CHAT 모델을 공개. 모델의 파라미터 개수는 7B부터 70B까지 다양함. 배경 ChatGPT를 필두로 LLM이 큰 주목을 받게 되었지만, 요즘은 사실 이 Meta에서 개발한 LLaMA 모델의 영향이 더욱 크다고 생각합니다. OpenAI는 회사의 이름과 다르게 자신들의 기술을 베일 속에 꽁꽁 감춰두었고, 이런 기업들과 달리 Meta는 자신들의 모델 LLaMA를 오픈소스로 공개했죠. 물론 출시 초반에 모델의 가중치가 토렌트를 통해 공유되었던 것은 ..

Tistory

<LLM> How Is ChatGPT’s Behavior Changing over Time?

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Stanford University] GPT-3.5와 GPT-4의 2023년 3월 vs 6월 버전을 비교. 네 개의 태스크를 통해 GPT가 이전에 비해 열등한 성능을 보인다는 것을 검증 배경 ChatGPT의 성능이 입증된 이후로 OpenAI의 API를 활용하여 연구를 하거나 서비스를 만드는 것이 아주 보편적인 방식으로 자리잡았습니다. 그런데 흥미로운 것은 이 API로 배포되는 모델의 버전이 업데이트된다는 것이었죠. 사실 어떤 식으로 어떤 데이터들로 학습을 하는지에 대해서는 공식적으로 밝혀진 바가 없기에 미스테리로 남은 부분이지만, ..

Tistory

ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) (사실은 OOM..?!)

최근 생전 처음 보는 에러덕분에 꽤나 당황하게 됐습니다. 사용자의 환경이나 작성한 코드에 따라 당연히 해결방법이 달라질 수 있겠지만, 저는 torch의 DataLoader에서 배치 사이즈를 줄임으로써 에러를 해결할 수 있었습니다. 사실 병렬 처리 관련해서 어쩌고 저쩌고 잘못됐다, 쓰여있기는 한데.. 찾아보니까 의외로 데이터의 사이즈가 너무 커서 위 에러가 발생한 케이스가 있더라구요. 저 역시 데이터를 torch의 Dataset, DataLoader로 불러와 모델에 입력으로 주는 구조의 코드를 작성했습니다. 코드를 실행하기 전까지는 얼마만큼의 메모리를 차지할지 계산하는건 굉장히 어렵잖아요? 보통 실행해서 OOM이 뜨거나 에러가 발생하면 그거에 맞춰서 값들을 조정하곤 하는데.. 위 에러 메세지를 보고서는 이..

Tistory

<LLM> Lost in the Middle: How Language Models Use Long Contexts

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Standford University] multi-document QA와 key-value retireval에서, query와 관련된 정보가 context의 시작, 또는 끝에 위치하는 것이 유리하다. 이 경향은 context가 길어질수록 명확해지기 때문에, context의 길이를 x축으로 삼고 모델 성능을 y축으로 삼는 그래프는 U자 curve로 그려진다. 배경 최근 LLM을 언급하면 빠질 수 없는 이야기는 처리 가능한 입력 길이입니다. 이를 늘리기 위해서 다양한 연구가 이뤄지고 있는데, 실제로 참조해야 할 문서가 많아질수록 모델의..

Tistory

<Multi-modal> ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision

예전(2021.02)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ 이미지 feature 추출에서 놓치게 되는 효율성/속도, 그리고 표현력을 보완하기 위한 방법으로 Vision-and-Language Transformer (ViLT) 모델을 고안. image에 patch 개념을 활용하여 연산량을 획기적으로 줄일 수 있었음 배경 현재 대중(?)에게 가장 많이 사용되는 멀티모달 모델 중 하나인 ViLT입니다. 인공지능 모델이 서로 다른 두 modality의 정보를 이해하기 위해서는 각각의 feature embedding을 합치는 과정이 필요합니다. 즉 이미지 feature와 텍스트 feature를 적절히 조합하는 것이 중요한 것이죠. 그런데 이미..

Tistory

<Attention> Focused Transformer: Contrastive Training for Context Scaling

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Google DeepMind] attention layer가 key, value 쌍으로 이루어진 외부 메모리에 접근. 이를 통해 훨씬 더 긴 입력을 받을 수 있고, 여러 개의 문서에 대해 retrieval 할 수 있게 됨. 이 방식을 Focused Transforemr(FoT)라고 하며, OpenLLaMA(3B, 7B) 대상으로 tuning한 모델, LONGLLAMA를 공개. 배경 LLM은 그 능력이 엄청나지만 의외로 특정 분야에 한정된다는 문제점을 안고 있습니다. 엄청난 양의 데이터와 자원으로 한 번 학습되면, 이를 확장하는 것이..

Tistory

TensorFlow Korea LLM Day 후기 (23.07.13 (목)) feat. 인공지능위크 2023

이번 주 목요일, 삼성역에서 진행하는 TensorFlow Korea LLM Day 행사에 다녀왔습니다! 사실 저는 TensorFlow로 공부를 거의 안 해봐서 잘 모르는데, 주제가 LLM이라 재밌을 것 같아서 신청해서 다녀왔죠 ㅎㅎ 심지어 구체적인 내용이 뭔지 공개도 안 됐었는데 무지성 등록했습니다 ㅋㅋㅋ 낮 시간에는 구글이 진행하는 인공지능위크가 있고 여기에도 사전등록을 했었는데, 일을 빼기가 어려울 것 같아서 저녁에만 참여했습니다. 그래서 당연히 TensorFlow 굿즈를 줄 거라고 생각했는데 Google 굿즈를 나눠주시더라고요 ㅋㅋㅋㅋ (TensorFlow와 무슨 연관성이 있는 것인지는 아직도 미스테리고 남아 있습니다) 또 Upstage라는 기업을 중심으로 행사가 기획된 것인지 발표자 중 한 분..

Tistory

<LLM> Flacuna: Unleashing the Problem Solving Power of Vicuna using FLAN Fine-Tuning

최근(2023.07)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ FLAN-MINI 데이터셋을 대상으로 LLaMA 모델을 Fine-tuning with LoRA 하여 다양한 태스크 수행 능력과 코드 해석 능력을 준수하게 끌어올린 모델, Flacuna 배경 ChatGPT를 필두로 LLM들이 다양한 분야와 태스크에서 우수한 성능을 보이고 있습니다. 그럼에도 불구하고 strong reasoning & problem solving 능력이 요구되는 태스크들에 대해서는 여전히 T-5 based 모델들이 더 좋은 퍼포먼스를 보입니다. 본 논문에서는 그 주요 원인을 (1) Pre-training data, (2) Backbone architecture, ..

Tistory

[대회 홍보] 월간 데이콘 이미지 기반 질의 응답 AI 경진대회

안녕하세요, chanmuzi입니다! 지난 게시글에서 데이콘에서 일을 시작하게 됐다는걸 말씀드렸는데요 ㅎㅎ 이번에는 데이콘에서 제가 기획한 첫 대회를 오픈하게 되어서 이를 공유하고자 합니다! https://dacon.io/competitions/official/236118/overview/description 이미지, 그리고 이미지와 관련된 질문이 주어지면 적절한 답변을 반환하는 모델을 구축하는 대회입니다. 일반적으로 Visual Question Answering(VQA)이라고 불리는 태스크이며 대표적인 멀티 모달(multi-modal) 중 하나입니다! 이미지와 텍스트를 함께 이해할 수 있도록 모델링 해야 하는데요, 여기에 필요한 데이터의 수도 적지 않아서 분명 쉽지 않은 과제입니다. 베이스라인도 딥러닝에..

Tistory

<Benchmark> [AttrPrompt] Large Language Model as Attributed Training DataGenerator: A Tale of Diversity and Bias

최근(2023.06)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success 다양한 특성을 반영할 수 있는 프롬프트를 이용해 LLM으로 NLP task를 위한 데이터 생성하기 배경 LLM이 활용되는 여러 분야 중 하나는 데이터 생성(generator)입니다. 문장 단위의 텍스트를 생성하는 능력이 워낙 탁월하고 그 품질이 사실상 보장된 것이기 때문에 적은 비용으로 고품질 데이터를 생성할 수 있음이 알려졌습니다. 그러나 기존의 연구들은 단순히 class-conditional prompt에 의존하고 있을 뿐이라고 지적합니다. 이에 의해 생성되는 데이터의 다양성이 보장되지도 않고 텍스트를 생성하는 LLM의 편향을 그..

Tistory

<Attention> LongNet: Scaling Transformers to 1,000,000,000 Tokens

[Microsoft Research] dilated attention을 적용하여 computation complexity를 quadratic → linear 줄임. 엄청나게 긴 입력(1B token)을 처리할 수 있으면서도 성능을 잘 유지할 수 있는 모델 LONGNET을 제시. 배경 transformer 기반의 모델들이 좋은 성능을 보이는 것 이면에는, 엄청나게 많은 자원을 필요로 한다는 문제점이 존재하고 있습니다. self-attention 방식을 생각해보면 하나의 Key가 모든 Query, Value와 연산을 수행하게 되면서 quadratic한 시간 복잡도를 갖게 되기 때문이죠. (쉽게 표현하면 O(N^2)라고 할 수 있겠네요) 결국 모델이 처리할 수 있는 입력의 길이가 상당히 제한되고, 이것이 지금..

Tistory

[Short Paper Review] QLoRA: Efficient Finetuning of Quantized LLMs

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success 워싱턴 대학에서 제출한, PEFT(Parameter Efficient Fine Tuning) 기법 중 하나를 다룬 논문. 65B개 파라미터를 갖는 모델을 48GB GPU 한 장으로 finetuning할 수 있도록 만들었다. 배경 최근 언어 모델 관련 분야에서는 가장 주목을 받는 기술이 모델 경량화인 것 같습니다. 모델 자체를 light하게 만드는 것보다는 사전 학습된 모델을 최대한 적은 자원으로 fine tuning할 수 있도록 만드는 기술들에 관련된 것이죠. 특히 메타에서 만든 LLaMA의 등장 이후로 정말 많은 개인(물론 이것도 자원을 아예 필요..

Tistory

[비전공자 취업 회고록] 영어영문학 전공자가 데이터 사이언티스트가 되기까지는 1년이 걸렸다(feat. 비전공자인데 개발자 해도 될까요?)

이 글은 1년 간 진로에 대해 끊임없이 고민하고 노력했던 저 스스로를 돌아보기 위해 작성합니다. 또한 간간이 제 블로그 글을 보고 자극을 받는다고 말씀해주시는 분들, 혹은 취업 후기 등을 찾아보며 제 블로그를 방문하신 취준생 분들을 위해 작성합니다. 1. chanmuzi는 2022-2023에 무엇을 했을까요? 2. 앞으로 저는 무엇을 해야 할까요? 3. 개발자, 데이터 사이언티스트, AI 기술자, 될 수 있을까요? 저는 최근 데이콘에 입사해서 데이터 사이언티스트로 커리어를 시작하게 되었어요. 얼떨떨한 마음이 가장 큰 것 같습니다. 항상 스스로가 부족하다는 것을 잘 알기에 애써왔고, 앞으로도 갈 길이 멀다고 생각했으니까요. 좀 더 적나라하게 말하자면 돈 받고 일할 실력 따위는 없다고 스스로 판단했던 것이 ..

Tistory

[Short Paper Review] Training Verifiers to Solve Math Word Problems

이전에 OpenAI에서 게재한 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [OpenAI] 고품질의 언어-수학 문제(8.5K개)로 구성된 데이터셋 구축. verifier를 학습시켜서 모델의 문제 풀이 능력을 향상 시킴. 배경 2021년 당시에도 LLM(Large Language Model)들의 능력에 대해 많은 관심이 있었는데, 이 모델들의 한계 중 대표적으로 꼽히는 것이 수학 문제 풀이 능력이었습니다. 정확히는 multi-step mathematical reasoning인데요, 다른 분야에서 뛰어난 퍼포먼스를 보여준 것과 달리 이 태스크에 대해서는 문제를 굉장히 쉽게 준다고 하더라도 잘 맞히지 못했죠. ..

Tistory

[Short Paper Review] LIMA: Less Is More for Alignment

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success 천 개의 curated 학습 데이터로 LLaMA를 학습하여 GPT-4에 준하는 모델을 생성한 결과를 담은 논문 배경 지금까지 언어 모델의 학습 트렌드는 1) 대규모 말뭉치를 unsupervised pretraining하고 2) large scale의 instruction tuning과 reinforcement learning을 적용하는 것입니다. 놀랄 정도로 우수한 성능을 보여준 것과는 별개로, 엄청난 수준의 자원을 필요로 한다는 것은 자명한 사실이죠. 논문의 저자는, ‘언어 모델이 학습하는 지식과 능력은 사전학습 동안 모두 습득되고, 이를 대화 형..

Tistory

[프로그래머스] 연속된 부분 수열의 합 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(sequence, k): l = len(sequence) result = [] tmp = sequence[0] # 초깃값 right = 0 for left in range(l): while (right < l-1) and (tmp < k): # 범위 만족 & 부분합이 k보다 작을 때 right += 1 tmp += sequence[right] # 오른..

Tistory

[Short Paper Reveiw] AutoML-GPT: Automatic Machine Learning with GPT

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success GPT를 다양한 AI 모델들을 연결해주고 최적화된 하이퍼 파라미터를 제공해주는 수단으로 이용하는 방식을 제안한 논문 배경 LLM의 뛰어난 능력이 세간의 주목을 받게 되면서 여러 인공지능 모델을 통합하고자 하는 시도도 활발히 이뤄지고 있습니다. 그러나 말 그대로 거대한 사이즈의 모델들을 다루기 위해서는 굉장히 많은 자원이 필요하고, 각 태스크에 적합한 모델들을 어떻게 선정할 것인지가 명료하게 정리되기는 쉽지 않죠. 따라서 LLM을 통해 각 모델, 그리고 모델이 학습한 데이터에 대한 설명을 바탕으로 태스크에 적합한 모델을 선정하여 결과를 산출하는 방식을..

Tistory

[Short Paper Review] IMAGEBIND: One Embedding Space to Bind Them All

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success 하나의 embedding에 여섯 개의 modality(image, text, audio, depth, thermal, IMU)가 공유되는 모델. 이를 위해서 이미지와 짝을 이루는 데이터만 있어도 충분하다. 배경 하나의 이미지에 다른 modality에 대한 여러 정보가 담길 수 있다는 것은 이미 잘 알려져 있습니다. 이미지와 소리를 결합한 예시 중 하나는 다음과 같습니다. 현재는 이뿐만 아니라 이미지와 텍스트 등 두 개의 modality를 짝지어 학습하는 경우가 적지 않습니다. 그러나 이러한 종류의 학습용 데이터는 분명히 한정되어 있기 때문에(labe..

Tistory

[Short Paper Review] Distilling Step-by-Step! Outperforming Larger Language Models with Less Training Data and Smaller Model Sizes

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success 단순히 추론 결과가 아닌 그에 대한 설명(rationale)을 학습하여 엄청나게 적은 자원과 작은 모델로 훌륭한 퍼포먼스를 내는 distillation 기법 배경 LLM의 훌륭한 능력을 이용하는 방법은 크게 finetuning, distillation 두 가지로 나눠집니다. 그러나 finetuning은 전체 파라미터를 학습해야 하기 때문에 computing 자원을 많이 필요로 하고, distillation은 unlabeled data가 많이 필요하며 특정 task에 대해서만 학습이 가능하다는 문제점이 존재합니다. 이러한 문제점을 해결하기 위해 ‘적은..

Tistory

[프로그래머스] 두 원 사이의 정수 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/181187#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 import math def solution(r1, r2): answer = 0 for x in range(1,r2+1): max_r1 = 0 if x > r1 else (r1**2-x**2) ** 0.5 # r1 이상 y max_r2 = (r2**2-x**2) ** 0.5 # r2 이하 y answer += math.floor(max_r2) - math.ceil(m..

Tistory

[Short Paper Review] We're Afraid Language Models Aren't Modeling Ambiguity

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success 언어가 지닌 ambiguity(모호성)을 인공지능 모델이 이해할 수 있는지 확인할 수 있는 벤치마크 제작 배경 언어의 모호성(ambiguity)는 인간 언어 이해에 있어서 중요한 요소입니다. 중의적인 표현에 대한 해석을 간단한 예로 떠올려 볼 수 있습니다. 때로는 문법적인 오류로 인해 중의적인 의미를 지니는 문장이 될 수도 있지만, 주변 단어들과의 관계에 의해 의미 차이가 발생하는 경우도 존재합니다. LLM을 기반으로 한 챗봇, 즉 대화형 인공지능 모델이 큰 인기를 얻음에 따라, 인공지능 모델이 사람의 언어에 존재하는 이러한 모호성을 이해하고 좋은 ..

Tistory

[프로그래머스] 요격 시스템 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(targets): answer = 0 targets.sort(key=lambda x: x[1]) # end 기준으로 정렬 s = e = 0 for start,end in targets: if start >= e: # 현재 시작점이 선이 끊기는 점 이후에 위치하는 경우 answer += 1 # 새로 선 그으며 업데이트 e = end return answ..

Tistory

[프로그래머스] 덧칠하기 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(n, m, section): if len(section) == 1: return 1 mini,maxi = section[0],section[-1] # 최소, 최대 cover = mini + m - 1 # 지금까지 칠한 위치 cnt = 1 for i in range(len(section)): if cover >= section[i]: # 현재 위치가 이..

Tistory

[Short Paper Review] ResiDual: Transformer with Dual Residual Connections

usechatgpt init success 최근에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ Layer Normalization을 residual block의 앞과 뒤, 동시에 적용함으로써 pre/post 두 방식의 장점은 살리고 단점은 극복한 모델 배경 기존 NLP 모델들이 극복하지 못했던 long sequence에 대한 한계를 transformer의 아키텍쳐가 극복해냄으로써 NLP 분야는 눈부시게 발전했습니다. 문장이 길어지면서 전체적인 맥락을 고려하지 못하게 되는 상황이 아주 흔했는데, 이런 문제를 해결하기 위해서 sequence 앞 부분의 정보를 뒤쪽으로 전달하며 업데이트하는 방식이 등장했습니다. BERT 계열의 모델들은 transf..

Tistory

[Short Paper Review] PaLM2 Technical Report

오늘 5/11(목), 한국 기준 새벽 두 시에 Google I/O가 시작되었죠! 저는 자느라고 못 봤지만 일어나보니 재밌는 뉴스들이 조금 있는 것 같았습니다. 폴더블 스마트폰의 출시도 앞으로 시장에 어떤 영향을 줄지 기대가 되는데요, 역시 가장 눈에 띄는 것은 PaLM 2의 등장이겠죠? 이것도 논문..은 아니고 technical report의 형태로 실험 결과 등이 공개되었는데 이를 살펴보고 간략하게 정리해보았습니다. 어차피 아키텍쳐나 구체적인 학습 방법 등에 대한 설명은 포함되지 않았기에 최대한 간단히 특징들만 추려보았어요. 좀 더 자세한 내용이 궁금하시거나 자료 등이 필요하시다면 직접 레포트를 확인해보시길 권장드립니다! 혹시라도 잘못되거나 부족한 내용이 있다면 댓글 부탁드립니다 ️ 구글의 PaL..

Tistory

[프로그래머스] 공원 산책 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/172928 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(park, routes): for row in range(len(park)): for col in range(len(park[0])): if park[row][col] == 'S': # 시작점 찾기 cur_x,cur_y = row,col break directions = {'E':(0,1), 'S':(1,0), 'W':(0,-1), 'N':(-1,0)..

Tistory

[Short Paper Review] Visual Instruction Tuning

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ LLaVA: Large Language and Vision Assistant, end-to-end 거대 멀티모달 모델. vision encoder와 LLM을 연결한 구조를 갖고 있다. 배경 인공지능 모델이 생성한 데이터를 기반으로 LLM을 Instruction tuning하는 것이 모델의 성능 향상에 큰 도움이 된다는 것은 잘 알려져 있다. 이런 방식을 통해 모델은 다양한 태스크를 두루 잘 처리할 수 있게 되었고, 덕분에 instruction tuning에 대한 관심이 뜨겁다. 그러나 multi-modal 분야(그중에서도 image-text)에 대해서는 자연어로 이미지를 간단히 설명하는 수준..

Tistory

[프로그래머스] 달리기 경주 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(players, callings): player_dict = {players[x]:x for x in range(len(players))} rank_dict = {x:players[x] for x in range(len(players))} for name in callings: player_dict[name] -= 1 # 뒤에 있던 애 순위 높이기 p..

Tistory

[프로그래머스] 추억 점수 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(name, yearning, photo): result = [] score_dict = {} for a,b in zip(name,yearning): # 이름:스코어 딕셔너리 score_dict[a] = b for case in photo: tmp = 0 # 케이스별로 점수 초기화 for idx in range(len(case)): if case[idx..

Tistory

[Short Papaer Review] Learning to Reason and Memorize with Self-Notes

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ 모델이 추론하는 과정에서 스스로 생성한 QA(note)를 참고해 보다 정확한 추론을 가능하도록 만든 모델 배경 지금까지의 인공지능 모델들은 multi-step reasoning에 대해 취약한 모습을 보이고 있다. 왜냐하면 여러 단계를 한 번에 압축하여 추론하므로 모델의 입장에서 여러 요소를 충분히 고려할 수 없게 되기 때문이다. 즉 여러 state가 주어졌을 때, state-traking 혹은 highly nonlinear 문제들을 풀어낼 수가 없는 것이다. 따라서 본 논문에서는 multi-step reasoning을 진행하는 과정에서, 주어진 문장에 대해 모델 스스로 질문 & 답변하고, 이..

Tistory

[Short Paper Review] Learning to Compress Prompts with Gist Tokens

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ 프롬프트를 Gist(요점) 토큰에 압축함으로써 모델의 태스크 처리 시간을 단축하고 메모리 효율성을 높일 수 있다. 배경 최근 LM(Language Model)을 활용하는 주된 방법 중 하나는 모델에 prompt를 제공하고 모델이 반환하는 answer를 사용하는 것이다. 태스크나 여러 상황에 따라 적절한 프롬프트를 구성하는 전략이 중요해졌고, 심지어 프롬프트 엔지니어라는 이름의 새직종이 생겨날만큼 많은 관심을 받고 있다. 그러나 모델이 입력으로 받을 수 있는 길이에 제한이 존재한다는 점을 감안하면, 길이가 꽤 되는 프롬프트를 반복적으로 사용하는 것은 꽤나 치명적인 문제가 될 수 있다. 본 논문..

Tistory

[Short Paper Review] LLaMA-Adapter V2: Parameter-Efficient Visual Instruction Model

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ LLaMA-Adpater의 두 번째 버전. 기존과 달리 이미지까지 더 잘 처리할 수 있는 multi-modality 보유 배경 어떻게 하면 LLM을 instruction follower로 만들 수 있을지, 즉 어떻게 instruction tuning을 잘 할 수 있을지에 대해 많은 관심이 쏠리고 있다. 이전에 LLaMA-Adapter와 같은 모델도 굉장히 효율적인 tuning 방법론을 제시했는데 이를 더욱 발전시킨 모델을 제시한다. V1과 비교했을 때 가장 큰 차이점은 이미지 관련 태스크도 굉장히 잘 처리할 수 있다는 것이다. 컨셉 1. bias tuning of linear layers V..

Tistory

[Short Paper Review] Evaluating Verifiability in Generative Search Engines

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 노션에 정리한 것을 그대로 긁어왔는데, 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ 최근 생성 AI를 이용한 다양한 검색 엔진이 존재한다. 이 검색 엔진의 검색 결과에 대한 신뢰도를 검증하고 엔진별로 비교한 논문. 배경 ChatGPT의 등장 이후로 LLM 기반의 검색 서비스가 핫하게 떠오르고 있다. 예를 들어 New Bing의 경우 최근 GPT-4 모델을 사용해서 검색을 하고 그 결과를 채팅 형식으로 반환하는 서비스를 제공하고 있다. 이러한 변화 덕분에 부동의 1위 검색 엔진이었던 구글의 입지가 심각하게 흔들리고 있고, 구글 역시 이와 같은 흐름에 뒤처지지 않기 위해 애쓰고 있음이 기사화되기도 했다. 따라서 단순한 챗봇을 넘어서 최신 ..

Tistory

[Short Paper Review] Are Emergent Abilities of Large Language Models a Mirage?

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 노션에 정리한 것을 그대로 긁어왔는데, 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ LLM에서 갑자기 등장하는 파워풀한 능력, emergent ability는 실재하는 것이 아니다. 연구자들의 편협한 metric 선택이 불러온 결과. 배경 LLM이 지닌 엄청난 능력이 주목을 받게 된 것은 GPT-3와 같이 파격적인 모델 파라미터 구성으로 학습을 진행한 시점부터였다. 흥미로운 것은 모델의 사이즈가 작았을 때 눈 씻고 봐도 찾을 수 없었던 능력이, 모델의 사이즈를 키우면서 ‘갑작스럽게’ 등장한다는 점이었다. 대표적인 예로 in-context-learning(이를 학습으로 볼 수 있는지에 대한 의견도 분분하지만) 등을 들 수 있다. 현재까지..

Tistory

Transforemrs(4) : Transformer Network

Transformer Details self-attention을 여러 번 중첩한 multi-head attention은 encoder / decoder 둘 다에서 쓰입니다. encoder부터 살펴보면, 주어진 입력 문장에 대해 multi-head attention을 수행하고 이를 feed forward합니다. 이 과정을 n번 반복합니다. (논문에서는 n=6으로 세팅했습니다) 즉, attention head를 8번 중첩해서 concat하고 forward하는 것을 6번 반복합니다. 이를 통해 입력 문장에 대해 각 단어(token) 간의 관계를 바탕으로 이해를 마칩니다. decoder는 문장의 시작을 알리는 토큰으로 시작합니다. 이를 시작으로 multi-head attention을 적용하여 구한 것을 다음 m..

Tistory

[Short Paper Review] Chameleon: Plug-and-Play Compositional Reasoning with Large Language Models

최근에 나온 논문을 읽어보고 간단히 정리했습니다. 노션에 정리한 것을 그대로 긁어왔는데, 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ LLM(GPT-4)을 주축으로 vision models, web search engines, Python functions 등 다양한 도구들로 구성된 통합 시스템 구축 배경 최근 LLM이 엄청난 퍼포먼스를 보이는 것은 사실이지만 명확한 한계를 보이는 것도 사실이다. 대표적으로 ‘최신 정보를 반영하지 못한다는 점’, ‘외부 도구를 이용할 수 없다는 점(오직 챗봇으로만 이용 가능)’, ‘수학적 추론 능력이 부족하다는 점’ 등을 예로 들 수 있다. 이러한 한계를 극복하기 위해서 LLM을 통합 시스템을 구축하는 데 사용하는 방법론을 제안한다. LLM이 문제를 ..

Tistory

2023(상반기) 삼성전자 DX SCSA 전형 서류 불합격 후기

2023.04.03(월), 삼성 상반기 신입 공채 서류 결과가 발표되었다고 하네요! 이번에는 정말 발표가 나든 말든.. 하고 있어서 아예 잊고 있었는데요, 심지어 떨어져서 알 길이 없었습니다 ㅋㅋㅋ IT 분야로 취업을 해야겠다 마음 먹은지 딱 1년이 지났네요. 지금까지 그래도 배우고 싶다, 성장하고 싶다는 걸 어필하는게 중요한 지원에서 떨어져 본 적이 없는데 신기하긴 합니다. 특히 이번에는 자소서랑 이력서를 좀 맛깔나게 잘 썼거든요 ㅋㅋㅋㅋ (혼자만의 착각..? c) 변수라면.. 제가 인문계열 전공자라서 애초에 SW 직군으로 지원을 할 수가 없더라구요. 그걸 성적입력, 에세이 작성 다 끝내고 제출할 때 알았더랍니다.. 안그래도 바뀐 UI 때문에 힘들었는데.. 원래 이번에는 AI 연구직 쪽으로 지원을 ..

Tistory

Neural Style Transfer(5) : Style Cost Function

Meaning of the "style" of an image 우선은 이미지의 "style"이 무엇인지에 대해 먼저 정의해야 합니다. 정의 : 채널 간 activation의 상관관계 정의가 굉장히 추상적인데요, 다른 채널의 결과를 겹쳐 놓았을 때, 동일한 위치에서 각 activation들이 어떤 상관관계를 가지고 있는지 파악하는 것으로 이해할 수 있습니다. Intuition about style of an image 위 예시에서 빨간색 채널과 노란색 채널의 상관관계를 비교합니다. 두 채널이 높은 상관관계를 지닌다는 것은 세로줄과 주황색이라는 특징이 겹칠 가능성이 높다는 뜻입니다. 반대도 동일하게 성립하는 것이므로, 생성된 이미지에서의 채널 간 관계를 비교할 수 있습니다. Style matrix 모든 채널..

Tistory

Neural Style Transfer(6) : 1D and 3D generalizations

Convolutions in 2D and 1D 우리는 이전까지 R,G,B 색상을 가지는 3차원 이미지에 대한 convolution을 살펴봤습니다. 그때의 방식을 동일하게 2D, 1D에도 적용할 수 있습니다. 필수차원만 잘 맞춰준다면 전체 차원수는 차이가 있지만 동일한 논리로 filter를 적용하여 convolution할 수 있습니다. 3D convolution 항상 계산해왔던 것처럼 height, width, depth, 그리고 channel수를 맞춰줍니다. 다음 layer의 마지막 차원은 이전 layer의 filter수로 업데이트 됩니다. 위 과정을 반복하면 됩니다. 출처: Coursera, Convolutional Neural Networks, DeepLearning.AI

Tistory

[BOJ] 1717 : 집합의 표현 [유니온파인드](Python)

문제 링크 https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\}, \dots , \{n\}$이 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작 www.acmicpc.net 소스 코드 import sys sys.setrecursionlimit(10**6) def main(): n, m = map(int, input().split()) parents = [x for x in range(n+1)] # 부모 노드 저장 def find(x): # 부모 찾기 if parents[x] != x: # 자기자신과 같아질 때까지 par..

Tistory

Face Recognition(5) : Face Verification and Binary Classification

Learning the similarity function 이전까지 배운 내용을 적용하면 위의 식으로 y hat, 즉 예측값을 구할 수 있습니다. 두 input으로 구한 output의 차, 그리고 이것을 제곱한 것이 loss function이 되었습니다. 우리는 그래서 이 loss function의 값에 따라서 일정 기준(threshold)가 넘냐 넘지 않느냐를 보고 0 또는 1로 예측합니다. 여기서 0과 1은 각각 동일 인물이 아님, 동일 인물임을 의미합니다. 두 output의 차 대신 카이제곱 분포를 사용할 수도 있다고 합니다. 결국 output의 차에 weight를 곱하고 bias를 더한 것을 sigmoid 함수의 input으로 사용하게 되면 0 또는 1의 y hat을 얻을 수 있게 됩니다. 만약 ..

Tistory

Neural Style Transfer(1),(2) : What is Neural Style Transfer?, What are deep ConvNets learning?

(1) What is Neural Style Transfer? Neural style transfer Neural style transfer는 쉽게 스타일 전이 정도로 이해할 수 있겠습니다. Style 이미지의 feature를 Content에 반영하여 새로운 이미지를 Generate하는 것이죠. (2) What are deep ConvNets learning? Visualizing what a deep network is learning layer 1에 있는 unit 하나를 골라서 이를 가장 크게 활성화시키는 9개의 이미지 패치를 반복적으로 찾아봅니다. 이때 가장 크게 활성화시킨다는 것은 활성화 함수에 가장 큰 영향을 준다로 이해할 수 있겠습니다. Visualizing deep layers 위 과정을 각..

Tistory

Neural Style Transfer(3),(4) : Cost Function, Content Cost Function

(3) Cost Function Neural style transfer cost function 스타일을 접목시켜 생성하는 이미지에 대한 cost function은 굉장히 독특하게 정의되네요. 기존 이미지 C와의 cost function과 스타일 이미지 S의 cost function에 각각 가중치를 부여한 것의 합으로 정의됩니다. Find the generated image G 이미지 G를 생성하는 방식은 이전의 CNN과 동일합니다. 다만 input이 없으므로 random하게 초기화하는 것에서만 차이가 존재합니다. 학습을 거듭함에 따라 gradient descent를 적용하여 cost function을 최소화하는 방향으로 최적화됩니다. (4) Content Cost Function content cost..

Tistory

Analysis of Algorithms(6) : Memory

Basics Typical memory usage for primitive types and arrays 자바에서 사용되는 기본 자료형에 대한 메모리 크기를 정리한 표입니다. privitive types는 고정적인 메모리 크기를 갖지만, 나머지는 가변적인, 즉 N과 M의 크기에 비례하는 메모리 크기를 갖습니다. Typical memory usage for objects in Java 간단한 예시를 통해 메모리가 얼마 정도 필요한지 계산하고 있습니다. primitive type 네 개가 각각 4바이트를 차지하기 때문에 합이 16바이트 입니다. 이것을 모두 감싸는 공간 object overhead와 합쳐 총 32바이트가 됩니다. 우측의 예시는 value라는 char 리스트를 만들기 때문에 2N + 24 바이..

Tistory

Face Recognition(1),(2) : What is Face Recognition, One Shot Learning

(1) What is Face Recognition Face recognition 데모 영상을 보여주셨는데 바이두의 얼굴 인식 출입 시스템이었다. 기존 얼굴 인식을 생각하면 그 사람의 얼굴이 찍힌 사진으로 남용이 가능하지 않겠느냐 하는 우려가 많았다. 근데 이미 저 영상이 촬영될 당시에도 실물인지 아닌지를 구분하는 기능이 존재했다. Face verification vs. face recognition 본 수업에서는 verification에 초점을 둔다고 하셨다. 난이도로 따지자면 이게 맞는지 아닌지를 구분하는 태스크뿐인 verification가 쉽다. 그리고 이것을 recognition에 적용하는 것은 또다른 문제이다. (2) One Shot Learning One-shot learning 만약 네 명의..

Tistory

Face Recognition(3) : Siamese Network

Siamese network 샴 네트워크는 두 개의 input이 encoding된 결과를 비교하여 그 차이의 정도를 학습합니다. 입력이 각각 x1, x2라고 할 때, 최종 output인 f(x1), f(x2)의 n2 norm을 구하게 됩니다. 즉, f(x1), f(x2) 차의 제곱이 손실함수라고 볼 수 있습니다. Goal of learning 만약 xi, xj가 동일한 사람의 사진이라면 두 output의 차는 거의 없을 것입니다. 반대로 동일한 사람이 아니라면 두 output의 차는 훨씬 크겠죠. 물론 처음에는 그렇게 학습이 되어있지 않겠지만 역전파를 통해 반복적으로 학습하는 과정에서 동일한 사람과 다른 사람을 구분하는 방식으로 학습될 것입니다. 출처: Coursera, Convolutional Neur..

Tistory

Face Recognition(4) : Triplet Loss

Learning Objective 학습 목표를 달성하기 위해 세 개의 값을 기준으로 loss를 구합니다. 이때 사용되는 각 input을 Anchor, Positive, Negative로 구성합니다. Anchor와 Positive는 동일한 인물에 대한 set, Negative는 다른 인물에 대한 set입니다. 따라서 전자의 차이는 작고 후자의 차이는 크기 때문에 대소 관계가

Tistory

Analysis of Algorithms(3) : Mathematical Models

Mathematical models for running time 1970년대에 프로그램의 작업 효율을 확인할 수 있는 수학적 모델이 고안되었다고 합니다. Cost of basic operations 예전에는 이런 표를 참고해서 프로그램을 만들었다고 하네요.. 기본 연산 명령을 수행하는데 걸리는 시간을 나노초 단위로 정리한 표입니다. Example: 1-Sum, 2-Sum 1-Sum과 2-Sum을 예시로 실제 명령이 몇 번 수행되는지를 분석한 결과입니다. 모든 명령에 대해 굉장히 세부적으로 분석이 되어 있고, 딱 봐도 '귀찮아..'라는 느낌을 줍니다. Simplifying the calculations 그래서 이러한 계산을 간단하게 정리하는 방법이 고안되었고 지금의 방식이 그걸 지켜오고 있는 거라고 생각..

Tistory

Analysis of Algorithms(4) : Order-of-Growth Classifications

Common order-of-growth classifications 알고리즘을 효율성에 따라 구분하면 위와 같습니다. 모델의 사이즈가 커져도 처리하는 시간이 크게 증가하지 않는 constant(상수), logarithmic(로그) 모델의 크기와 거의 비례하는 linear(선형), linearithmic 모델이 커지는 것보다 더 많은 시간을 필요로 하는 quadratic(이차), cubic, exponential(지수) Practical implications of order-of-growth Binary search demo 아주 효율적인 탐색 알고리즘인 이진 탐색(binary search) 알고리즘입니다. 이 알고리즘은 배열 내 값들이 오름차순으로 정렬되어 있다는 것을 전제로 삼습니다. 반복적으로 배..

Tistory

Analysis of Algorithms(5) : Theory of Algorithms

Types of analyses 알고리즘을 분석하기 위해서는 크게 세 가지로 나눠서 보는 것 같습니다. Best case : 처리하기 가장 좋은 형태의 input이 주어진 경우 Worst case : 처리하기 가장 어려운 형태의 input이 주어진 경우 Average case : random한 input이 주어지는 경우 Theory of algorithms 일반적으로는 주어진 문제를 해결하기 위한 최적의 알고리즘을 찾기 위해서, 우선 어려운 문제를 기준으로 접근해야 합니다. 즉, 최악의 상황을 가정하고 이를 개선하는 방식으로 접근하는 것이죠. Commonly-used notations in the theory of algorithms 일반적으로 우리에게 잘 알려진 것은 중간의 빅오 표기법이지만 세 개를 ..

Tistory

Analysis of Algorithms(1) : Analysis of Algorithms Introduction

이번 강의는 왜 알고리즘에 대한 분석을 해야 하는지, 그리고 효율적인 알고리즘을 짜는 것이 왜 중요한지에 대해 다룹니다. 사실 지금까지 알고리즘에 대한 인식은 그저 문제 풀이용, 두뇌 회전용이라고 생각했었는데 확실히 대학 수업이라 그런지 다르네요. Cast of characters 현실 세계에는 여러 역할과 각 역할에 맞는 요구사항들이 있습니다. 공부하는 학생은 그런 여러 입장을 모두 경험할 때가 있구요. Running time 실행 시간, 내가 어떤 작업을 수행하는데 걸린 시간이 얼마나 되는지를 파악하는 것은 오래전부터 있던 일인가봅니다. 그림에 나온 것처럼, 예전의 기계들이라면 '축이 몇 번 돌아가는지'가 기준이 되기도 했겠죠. Reasons to analyze algorithms 알고리즘을 분석하는..

Tistory

Analysis of Algorithms(2) : Observations

Example: 3-Sum & brue-force algorithm 배열 내의 세 원소 합이 0이 되는 경우의 수를 구하는 알고리즘입니다. 생각이 필요 없는 아주 단순한 풀이 방식을 생각하면 brute force 방식을 떠올릴 수 있을 것입니다. 이때 i, j, k가 원소의 개수 n만큼 탐색하는 방식입니다. 따라서 시간 복잡도는 무려 O(N^3)으로 엄청나게 비효율적입니다. Measuring the running time 나의 알고리즘이 작동하는데 얼마만큼의 시간이 소요되는지 측정하는 방법은 다양하겠지만... 직접 스톱워치를 재는 경우는 없겠죠? 대부분은 저런 코드를 사용해서 실행 시간을 측정하곤 합니다. 파이썬에도 time 모듈이 있어서 알고리즘의 효율성을 판단할 수 있습니다. Empirical & D..

Tistory

U-Net Architecture

U-Net 위와 같은 모델의 architecture 때문에 U-Net이라는 이름이 붙었다고 하네요. 원래는 의료 분야에 유용할 것이라는 생각이 있었는데, 예상과 달리 computer vision과 같은 분야에서 크게 빛을 발했다고 합니다. Conv, RELU를 실행하면 channel은 증가하고 height와 width는 줄어듭니다. Max Pooling을 실행하면 channel은 그대로지만 height와 width는 줄어듭니다. Trans Conv를 실행하면(파란색 블록) channel은 줄어들지만 height와 width가 증가합니다. 최종 결과는 h x w x n(class)로 input과 동일한 차원을 갖게 됩니다. 출처: Coursera, Convolutional Neural Networks, D..

Tistory

Union-Find(4) : Quick-Union Improvements

Improvement 1: weighting 기존의 quick-union의 속도 문제를 개선하기 위한 weighted quick-union입니다. 더 큰 트리가 위에 위치합니다. 즉, 작은 트리가 아래에 위치합니다 → worst case를 방지할 수 있습니다. 작은 트리의 루트를 큰 트리의 루트와 연결합니다. 우측의 그림은 기존의 union과 weighted 방식으로 개선된 union의 결과를 도식화 한 것입니다. Weighted quick-union: Python implementation class Weighted_Quick_Union_UF(n): id = [x for x in range(n)] sz = [1 for _ in range(n)] # tree 내 원소 개수 def root(i): whil..

Tistory

Union-Find(5) : Union-Find Applications

Union-find applications 네.. 뭐.. 이렇게 다양한 분야에 Union-Find 알고리즘이 사용될 수 있다고 하네요! Percolation 과제로 제시되는 문제는 percolation(여과, 투과)입니다. N * N 사이즈의 격자판이 존재합니다. p의 확률로 격자가 오픈되어 있고, 1-p의 확률로 격자가 닫혀있습니다. 격자의 맨 위부터 아래까지 연결되면 percolate라고 판정합니다. 이 알고리즘은 전기, 유동 액체, 사회적 상호작용 등에 적용 가능한 알고리즘이라고 합니다. Likelihood of percolation 공간이 open / closed(1-open) 될 확률에 따라 시스템이 percolate 할지 안할지 달라지겠죠. p의 값을 조정하면서 그 결과가 어떻게 되는지를 시각..

Tistory

Union-Find(3) : Quick Union

Quick-union [lazy approach] 이번엔 id 배열이 인덱스별로 root 노드를 가리키고 있습니다. 여기서 인덱스와 id 배열의 값이 동일한 것은 자기 자신이 곧 노드라는 뜻입니다. 따라서 p와 q가 연결되어 있는지는 두 노드의 root 노드가 동일한지를 비교하면 됩니다. root 노드를 찾아가는 과정은 재귀적입니다. root 노드의 root가 자기 자신이 될 때까지 과정을 반복하게 됩니다. 여기서 id 배열의 값을 업데이트 할 때는 관련된 모든 값을 변경할 필요가 없습니다. 단지 child가 되는 node의 root를 변경해주면 되는 것입니다. 마찬가지로 python 코드로 구현한 결과물은 다음과 같습니다. class Quick_Union_UF(n): id = [x for x in ra..

Tistory

Semantic Segmentation with U-Net

Object Detection vs. Semantic Segmentation 각 픽셀이 연결되어 있는지 그렇지 않은지를 구분하는 방식입니다. 특정 분야에서 효용성이 더 좋습니다. Motivation for U-Net 예시에서 볼 수 있는 것처럼 의료 분야에서 어떤 질병이 있는지 없는지를 판단하는데 큰 도움을 줄 수 있습니다. Per-pixel class labels label을 어떻게 설정하는지를 고민해봅시다. 위 이미지에서는 자동차인 부분은 1, 그렇지 않은 부분은 0이 될 것입니다. 만약 건물까지 구분하고 싶다면, 건물을 2로 할당할 수 있습니다. 여기에 도로까지 구분한다면 도로 부분은 3이 될 것입니다. bounding box를 예측할 때와 다르게 학습할 수 있습니다. Deep Learning fo..

Tistory

Transpose Convolutions, U-Net Architecture Intuition

Transpose Convolutions 일반적인 Convolution은 filter를 통해 계산하면 그 차원수가 줄어듭니다. 하지만 Transpose Convolution을 적용하면 오히려 차원이 커지는 것을 볼 수 있습니다. 위 예시에서는 2 x 2 input이 3 x 3 필터를 만나 4 x 4가 되었습니다. input은 2x2, filter는 3x3, padding은 1, stride는 2인 예시를 살펴봅시다. 필터의 모든 값은 input의 각 값을 변수로 받아 제곱을 계산합니다. 계산된 제곱은 패딩을 제외한 구역에 더해집니다. 만약 여러 계산이 중첩되는 경우 계산된 값을 더하여 누적하면 됩니다. 패딩에 해당하는 값들은 계산하지 않고 무시합니다. U-Net에서는 이런 방식을 이용하여 이미지를 다시 ..

Tistory

Region Proposals (Optional)

Region proposal: R-CNN 정확히 내용을 이해하지는 못했지만.. 맨 우측과 같이 Segmentation Algorithm에 대한 이야기를 하신 것 같습니다. 기존의 sliding window 방식을 떠올려보면 실제로 object(객체)가 존재하지 않는 수많은 지역에 대해서 연산이 수행됩니다. 굉장히 비효율적이라는 뜻이죠. 따라서 어떤 객체가 존재할만한 지역에 대해서만 sliding window를 적용할 수 있도록 하면 훨씬 빠른 연산이 가능할 것입니다. 맨 우측 사진의 박스, 즉 각 블록이 실제로 sliding window의 대상이 되는 것입니다. 이 블록은 대략 2,000여개 정도까지 반영된다고 합니다. 물론 그것보다 적을 수도 있겠지만요. Faster algorithms 객체 탐지와 관..

Tistory

Union-Find(1) : Dynamic Connectivity

Dynamic Connectivity Union Find 알고리즘을 이해하기 위해서는 Dynamic Connectivity에 대한 기본 개념이 필요합니다. union : 두 object를 연결합니다. connected : 두 object가 연결되어 있는지에 대해 응답합니다. 초기 세팅에 의하면 0과 7은 연결되어 있지 않습니다. 하지만 다른 object들이 연결됨에 따라 두 object 또한 간접적으로 연결되게 되었습니다. Modeling the connections is connected to, 즉 연결되었다는 표현은 크게 세 가지를 포함할 수 있습니다. 1) Reflexive : 자기 자신에게는 항상 연결되어 있는 셈이죠. 2) Symmetric(대칭적) : p가 q에 연결되어 있다면, q도 p에 연..

Tistory

Union-Find(2) : Quick Find

Quick-find [eager approach] 지난 시간부터 이어지는 개념을 생각해봅시다. 주어진 7개의 union에 따라 10개의 숫자들은 위와 같은 연결 구조를 띕니다. id라는 배열에서 같은 값을 지닌 인덱스들이 동일한 connected component에 속하는 것입니다. 예를 들어 0, 5, 6은 모두 값이 0이므로 같은 곳에 속하죠. 만약 두 개의 component를 union하면 어떻게 될까요? 기존의 값들을 모두 바꿔줘야 하기 때문에 번거롭습니다. 지금 예시에서는 1과 6을 연결하는데, 0, 5, 6 모두 값을 변경해야 하죠. 그렇기 때문에 두 object를 union할 때 진즉에 관련된 모든 값을 변경하는 방식을 취할 수도 있습니다. 관련된 코드는 자바로 작성되는데, 저는 자바를 잘 ..

Tistory

Intersection Over Union, Non-max Suppression

Intersection Over Union Evaluating object localization Intersection over Union(IOU)은 bounding box에 대한 예측이 정확했는지를 확인하는 지표입니다. 예측과 실제 정답이 겹치는 노란 부분 / 예측과 실제 정답의 합 위 분수식을 계산한 결과가 0.5 이상이면 'correct' 판정을 줄 수 있습니다. 이 threshold가 높아지면 높아질수록 더 정확한 예측이 가능할 것입니다. Non-max Suppression Non-max suppression example IOU로 bounding box를 예측하다 보면 위처럼 여러 개가 중첩되어 있을 수 있습니다. 이미지를 여러 개의 grid로 쪼개어 위치를 예측하기 때문이죠. 따라서 예측된 ..

Tistory

Anchor Boxes

Overlapping objects: 만약 위처럼 이미지 내에 물체가 겹치는 경우 Anchor box 개념을 이용할 수 있습니다. 쉽게 말하자면 축이 되는 box를 미리 정해두고 예측 벡터의 차원을 늘리는 것이죠. 위 예시에서는 Anchor box 두 개를 정해뒀습니다. 여기서 각 그리드에서 나온 예측 결과는 두 anchor에 대한 예측을 포함하고 있을 것입니다. 이런 방식으로 여러 물체가 겹쳐 있는 경우에 대해서도 bounding box를 정확히 예측할 수 있도록 유도할 수 있습니다. Anchor box algorithm 따라서 출력 차원은 anchor box의 개수에 비례합니다. 위 예시에서는 2개의 anchor box를 사용하고 있으며 분류하고자 하는 객체의 종류가 세 개이므로 위와 같은 차원으로 ..

Tistory

YOLO Algorithm

Training 지금까지의 내용을 종합한 YOLO 알고리즘에 대한 예시입니다. 이전 예시와 마찬가지로 anchor box는 두 개이고 class는 세 개이므로 출력 차원은 (3, 3, 16)이 됩니다. 기본적으로 anchor box 한 개는 Pc, x, y, h, w 다섯 개의 정보를 가지고 있습니다. 여기에 클래스의 개수 3을 더하면 각 anchor box는 8차원이 됩니다. 3 x 3 은 이미지를 9개의 cell로 쪼갰기 때문입니다. 실제로는 19 x 19 라고 이전 강의에서 언급되었습니다. Making predictions 이전 내용을 기억하실지 모르겠습니다만, Pc=0인 경우 bounding box나 class에 대한 결과는 무시됩니다. don't care라는 표현을 썼었습니다. 그렇지 않고 Pc..

Tistory

Landmark / Object Detection

1. Landmark Detection 사람의 얼굴은 여러 가지 특징을 갖고 있습니다. 우리는 이 특징들을 기반으로 윤곽을 잡는 등 인식의 정확도를 높일 수 있죠. 예를 들어 눈의 가장 자리, 코의 가장 자리, 입의 가장 자리 등을 캐치할 수 있습니다. 이를 landmark라고 부릅니다. 이 예시에서는 얼굴이라는 사물에 64개의 landmark가 존재하는 경우를 보고 있습니다. 따라서 출력 차원의 벡터는, '이 사진에 얼굴이 있는지 없는지'와 'x, y' 좌표 64개쌍을 포함합니다. 결과적으로 129 차원이 됩니다. 이와 같은 개념을 사람의 신체 구조를 따는데도 적용할 수 있습니다. 2. Object Detction Car detection example 이번에는 한 이미지 내에서 여러 개의 사물을 탐지..

Tistory

Convolutional Implementation of Sliding Windows

Turning FC layer into convolutional layers 지난 시간까지 알아본 것은 어떻게 이미지 내에서 사물/물체를 탐지할 수 있을까에 대한 것이었습니다. 그런데 한 이미지 내에서 여러 물체를 탐지하기 위해서는 sliding window 기법이 필요했습니다. sliding window 기법은 너무 많은 연산량을 필요로 한다는 문제점이 있었고 이를 해결하기 위해서 FC layer를 Convolutional layer로 바꾸는 기법을 소개하고 있습니다. 모든 노드 간의 연결이 업데이트 되상이 되어 파라미터 수가 굉장히 많은 FC와 달리, Convolutional layer는 필터만 업데이트 대상으로 파라미터 수가 굉장히 적습니다. 따라서 기존에 FC를 거치면서 나오는 출력 형태는 유사하..

Tistory

Bounding Box Predictions

Output accurate bounding boxes 이전의 sliding window 기법을 적용하면 연산 자체는 효율적이지만 위처럼 ground truth(실제 정답)에 해당하는 bounding box를 구할 수 없다는 문제점이 발생합니다. YOLO algorithm 이 알고리즘은 주어진 이미지를 19 x 19개로 나누고 각 grid마다 label을 부여해서 학습하는 방식입니다. 강의에서는 편의상 9개의 grid로 나누었습니다. 각 label은 [ Pc, bx, by, bh, bw, c1, c2, c3 ] 로 구성됩니다. (8차원의 output) Pc = 0 인 경우 이전과 마찬가지로 나머지 값들은 'don't care'합니다. 결과적으로 target의 output은 (3, 3, 8) 차원을 갖게 ..

Tistory

[BOJ] 2263 : 트리의 순회 [트리, 분할정복](Python)

문제 링크 https://www.acmicpc.net/problem/2263 2263번: 트리의 순회 첫째 줄에 n(1 ≤ n ≤ 100,000)이 주어진다. 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 주어진다. www.acmicpc.net 소스 코드 import sys sys.setrecursionlimit(10**6) def main(): n = int(input()) in_order = list(map(int, input().split())) post_order = list(map(int, input().split())) position = [0] * (n+1) for i in range(n): position[in_order[i]] = i #..

Tistory

[BOJ] 11660 : 구간 합 구하기 5 [누적합](Python)

문제 링크 https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 소스 코드 import sys def main(): n, m = map(int, input().split()) graph = [[0] * (n+1)] for _ in range(n): nums = [0] + list(map(int, sys.stdin.readline().strip().split())) graph.append(nums) for r..

Tistory

[Paper Review] BERT - Pre-training of Deep Bidirectional Transformers for Language Understanding

BERT.. 세상에 나온지도 벌써 몇 년이 지났지만 그 입지는 상당한 것 같습니다. 대부분의 NLP 관련 task에 이 녀석이 자리를 잡고 있으니 말입니다. 물론 지금은 트렌드가 많이 바뀌어서 Only Decoder 모델이 주름을 잡고 있지만, 그런 모델들은 사이즈가 너무 커서 fine-tuning 하기엔 무리가 있죠. 저처럼 딥러닝 햇병아리가 코랩 무료 버전의 환경에서 돌려볼 수 있는 모델은 아마 BERT류가 제일 퍼포먼스가 좋지 않나.. 결국 자그마한 대회에 하나 참여해서 공부를 하던 도중, 수없이 많은 BERT의 자손들을 만나게 되면서 BERT 이놈이 뭔지 다시 알아봐야겠다고 생각했습니다. 뭐든지 '그래 이거 끝나고 한꺼번에 정리해야지~'라고 한 것들은 항상 잊혀지기에 미루지 않고 '모델이 학습..

Tistory

Object Localization

What are localization and detection? 이번에 공부할 내용은 Image classification / Classification with localization입니다. 이는 나중에 배울 Detection에서와 달리 이미지 중앙에 큰 이미지 하나가 있고 이것이 자동차인지 아닌지 구분하는 것이라고 이해하면 쉽습니다. 나중에는 여러 개의 물체가 존재하는 상황에서 차를 인식할 수 있는지에 대해 배우게 됩니다. Classification with localization 만약 이미지를 보행자 / 차 / 오토바이 / 배경, 네 가지로 구분하는 태스크라면 마지막 출력층에서 softmax를 통해 4개 중 가장 확률이 높은 것을 정답으로 고르면 될 것입니다. 하지만 우리는 localization..

Tistory

[BOJ] 1967 : 트리의 지름 [그래프/트리](Python)

문제 링크 https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 소스 코드 import sys sys.setrecursionlimit(10**6) def main(): n = int(input()) visited = [False] * (n+1) distance = [0] * (n+1) graph = [[] for _ in range(n+1)] for _ in range(n-1): parent, child, weight = map(..

Tistory

[BOJ] 1991 : 트리 순회 [](Python)

문제 링크 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 소스 코드 import sys sys.setrecursionlimit(10**6) def main(): n = int(input()) tree = {} for _ in range(n): root, left, right = input().split() tree[root] = (left,right) pre_answer, in_answer, post_answer = [], [], ..

Tistory

[BOJ] 13549 : 숨바꼭질 3 [그래프이론](Python)

문제 링크 https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 소스 코드 import heapq def main(): n,k = map(int,input().split()) limit = 10**5 + 1 # 최댓값 INF = 10**9 # 비용 초기화 arr = [INF] * (limit+1) arr[n] = 0 hq = [] heapq.heappush(hq, (0,n)) while hq: # 다익스트라 cost..

Tistory

[BOJ] 1916 : 최소비용 구하기 [그래프이론](Python)

문제 링크 https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 소스 코드 import sys from heapq import heappush, heappop def main(): n = int(input()) m = int(input()) graph = [[] for _ in range(n+1)] distance = [10**9] * (n+1) # 최댓값으로 초기화 for _ in range(m): a, b, c ..

Tistory

[BOJ] 1167 : 트리의 지름 [그래프이론/트리](Python)

문제 링크 https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 소스 코드 import sys sys.setrecursionlimit(10**6) def main(): v = int(input()) graph = [[] for _ in range(v+1)] visited = [False] * (v+1) distances = [0] * (v+1) for _ in range(v): # 그래프 입력 받기 temp = list(map(int..

Tistory

[BOJ] 1753 : 최단경로 [그래프탐색](Python)

문제 링크 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 소스 코드 import sys import heapq def main(): V,E = map(int,sys.stdin.readline().strip().split()) # 정점, 간선 K = int(sys.stdin.readline().strip()) # 시작점 INF = int(1e9) # 초기값 graph = [[] for _ in range(V..

Tistory

[Kaggle/GoogleDrive] 캐글에서 구글 드라이브에 저장된 데이터 불러오기 가이

저는 지금 데이콘의 ChatGPT 활용 대회에 참여중입니다! 그런데 이 대회의 데이터는 train/test가 각각 약 4만, 약 8만여개에 달하더군요.. (test 데이터가 두 배인 경우는 처음 보는디 c) 어쨌든 모델을 구축해서 코랩 환경에서 학습을 진행하는데.. 학습 시간이 꽤 오래 걸린단 말이죠? 물론 자는 동안 돌려도 되지만 역시 코랩에서 돌리는 건 언제 런타임이 끊길지 모른다는 불안감.. 그래서 캐글 노트북 환경에 구글 드라이브 데이터를 불러와 학습을 돌리면 어떨까 생각해보았습니다. 검색해보니 캐글의 데이터셋을 구글로 불러오는 자료들은 많은데 그 반대는 적더라구요 c 열심히 구글링, 검색한 결과(New Bing이시여..️).. 구글 드라이브에 저장된 데이터를 캐글로 불러올 수 있게 되었습..

Tistory

[BOJ] 11404 : 플로이드 [그래프이론](Python)

문제 링크 https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 소스 코드 import sys def main(): n = int(input()) m = int(input()) INF = int(1e9) # 초깃값 graph = [[INF for _ in range(n+1)] for _ in range(n+1)] for a in range(1,n+1): for b in range(1,n+1): if a == b: # 자기 자신으로 갈 때는 0 gra..

Tistory

[BOJ] 15666 : N과 M (12) [백트랙킹](Python)

문제 링크 https://www.acmicpc.net/problem/15666 15666번: N과 M (12) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 소스 코드 def main(): n,m = map(int,input().split()) # 오름차순 정렬(중복 제거) nums = sorted(list(set(list(map(int,input().split()))))) answers= [] def dfs(arr): if len(arr) == m: # 길이가 m이면 종료 answers.append(arr[:]) return for i..

Tistory

[Paper Review] GPT-4 Technical Report, OpenAI

ChatGPT에 대한 관심이 아직도 엄청나게 뜨거운데, 벌써 GPT-4가 등장했습니다 AI에 큰 관심이 없던 사람들도 업무를 효율적으로 처리할 수 있게 되었고, 많은 개발자들이 API를 활용해서 여러 서비스들을 개발하고 배포중입니다. 아직까지도 서비스적인 측면에서 활용될 여지가 무궁무진하다고 생각하는데 기술의 발전 속도를 따라 잡기가 힘드네요.. c 이번 포스팅에서는 OpenAI에서 GPT-4와 함께 공개한 Technical Report를 간단하게 살펴보고, 그 내용을 최대한 요약해서 한글로 정리해보고자 합니다. 사실 Appendix(부록)까지 포함하면 90페이지가 넘기 때문에.. 결론 파트까지만 다뤄볼 예정입니다! 0. Abstract GPT-4는 이미지와 텍스트를 입력으로 받고 텍스트를 출력할 수..

Tistory

[BOJ] 17144 : 미세먼지 안녕 [시뮬레이션](Python)

문제 링크 https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 소스 코드 from copy import deepcopy import sys def main(): R,C,T = map(int, input().split()) # 행,열,케이스 machine = [] # 공기청정기 graph = [] # 전체 격자판 for i in range(R): temp = list(map(int, sys.stdin.readline().strip().split()..

Tistory

[BOJ] 15663 : N과 M (9) [백트랙킹](Python)

문제 링크 https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 소스 코드 def main(): n,m = map(int,input().split()) nums = list(map(int, input().split())) visited = [False] * n # 방문 여부 answers = [] def permuatation(nums,n,m,arr): if len(arr) == m: answers.append(arr[:]) # 정답 리스트에 추가..

Tistory

[BOJ] 9251 : LCS [다이나믹 프로그래밍](Python)

문제 링크 9251번: LCS (acmicpc.net) 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 소스 코드 a = input() b = input() def lcs(a,b): m,n = len(a),len(b) dp = [[None for _ in range(n+1)] for _ in range(m+1)] for row in range(m+1): for col in range(n+1): if row == 0 or col == 0: # 둘 중 하나가 글자가 아..

Tistory

[BOJ] 1932 : 정수 삼각형 [다이나믹 프로그래밍](Python)

문제 링크 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 소스 코드 import sys def main(): n = int(sys.stdin.readline().strip()) graph = [] dp = [[0 for _ in range(n)] for _ in range(n)] for i in range(n): graph.append(list(map(int,sys.stdin.readline().strip().split()))) dp[0][0] = graph[0][0] # 맨 처음값 if n == 1: # 한 개면..

Tistory

[프로그래머스] 배달 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 import heapq as hq def solution(N, road, K): graph = [[500001 for _ in range(N+1)] for _ in range(N+1)] for i in range(1,N+1): graph[i][i] = 0 for a,b,k in road: graph[a][b] = min(graph[a][b],k) graph[b][a] = mi..

Tistory

[BOJ] 1629 : 곱셈 [분할정복](Python)

문제 링크 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 소스 코드 a,b,c = map(int,input().split()) def div(a,b,c): if b == 1: return a % c tmp = div(a,b//2,c) if b % 2 == 1: return tmp**2 * a % c else: return tmp**2 % c print(div(a,b,c)) 해설 분할정복, 재귀 문제에 주어진 a,b,c의 범위는 최대 21억으로 일반적인 곱셈 연산을 수행하면 무조건 시간초과가 나게 되어있습니다..

Tistory

[BOJ] 2212 : 센서 [그리디](Python)

문제 링크 https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net 소스 코드 import sys n = int(input()) k = int(input()) centers = sorted(list(map(int,sys.stdin.readline().strip().split()))) # 센터 위치 오름차순 dists = sorted([centers[i]-centers[i-1] for i in range(1,n)],reverse=..

1 2 3 4