chanmuzi의 등록된 링크

 chanmuzi로 등록된 티스토리 포스트 수는 329건입니다.

SK Tech Summit 2023 Day 2 후기 (23.11.17 금) [내부링크]

오랜만에 재밌는 주제의 세션이 많은 행사를 다녀왔습니다!! 이유는 모르겠지만 최근 AI 관련 행사가 엄~~청나게 많이 몰려 있었는데 (삼성, 구글 등등).. 죄다 평일이라 딱 하루만 잘 골라서 가야 하는 상황이었습니다. (매일 참석하고 싶었지만 그건 제 마음이고.. 대표님의 마음은 조금 다를 수 있기 때문에.. ) 그중에서 다양한 기업들이 자신의 LLM 관련 서비스나 개발 관련 내용을 다루는 SK Tech Summit 2023의 2일차를 다녀오기로 결정했습니다. 11.16 (목) - 11.17 (금) 양일 간 진행되는 행사로, 1일차에는 SK의 자체 LLM인 에이닷 관련 소식이 주를 이루고 있었기 때문에 더 다양한 내용을 다루는 2일차로 마음을 정했죠. ( 세션 리스트 링크) 코엑스에서 행사가 진행되..

<Prompt, Agent> [SPP] Unleashing Cognitive Synergy in Large Language Models: A Task-Solving Agent through Multi-Persona Self-Collaboration (2023.07) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Microsoft Research] - multiple personas로 multi-turn self-collaboration을 통해 LLM을 cognitive synergist으로 변환, Solo Performance Prompting (SPP) - SPP를 통해 internal knowledge acquisition 능력을 향상시키고, hallucination을 줄이며, reasoning capabilities를 유지 배경 LLM은 여전히 knowledge-intensive & reasoning-intensive tasks에서 halluci..

<LLM, Zero-shot> [T0] Multitask Prompted Training Enables Zero-Shot Task Generalization (2022.03) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [BigScience] - 사전학습된 encoder-decoder 모델 T5를 explicit multi-task learning으로 fine-tuning한 모델, T0 - 다양한 태스크에 대한 zero-shot 성능 일반화 & prompt를 구성하는 word의 다양성 확보 (robustness) 배경 LLM이 새로운 태스크에 대해 뛰어난 zero-shot 성능을 보이는 것이 확인됨 그러나 학습 때 접하지 않았던 태스크에 대해 좋은 성능을 보이기 위해선 1) 충분히 큰 사이즈의 모델이 필요하고 2) prompt를 구성하는 단어에 영향을 받지 않게 만들어야 함 지금까지는 multitask ..

<Dataset, Instruction> AlpaGasus: Training A Better Alpaca with Fewer Data (2023.07) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Samsung Research] - strong LLM을 사용하여 낮은 품질의 데이터를 자동적으로 거르는 simple & effective data selection strategy. - 52K Alpaca 데이터셋으로부터 정제한 9K 고품질 데이터셋으로 학습한 모델, AlpaGasus - 다른 instruction-tuning data에도 적용 가능하며, 학습 속도는 빠르면서도 더 좋은 학습 결과를 보임 배경 언어 모델 학습에 있어서 데이터 품질의 중요성은 점점 더 높아지고 있는 추세 instruction 데이터셋을 사람이 직접 생성하는 것은..

<LK Lab, CoT> The CoT Collection: Improving Zero-shot and Few-shot Learning of Language MOdels via Chain-of-Thought Fine-Tuning (2023.10) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [KAIST] - new instruction-tuning dataset, CoT Collection - 1.84 million rationales across 1,060 tasks - 100B 이하 사이즈의 LM을 CoT Collection으로 instruction tuning하여, 4개의 domain-specific tasks에 대해 강한 few-shot learning 성능을 보임 배경 Chain-of-Thought (CoT) prompting을 이용하여 LM이 여러 태스크에서 훌륭한 성능을 보일 수 있도록 만..

<Retrieval> [DSI] Transformer Memory as a Differentiable Search Index (2022.02) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [Google Research] - string query를 관련 docids에 직접 매핑하는 text-to-text 모델을 사용하는 paradigm 제시, Differentiable Search Index (DSI) - dual encoder 모델과 같은 베이스라인을 압도했을 뿐만 아니라 zero-shot setup에서도 강한 일반화 능력을 보여줌 배경 Information Retrieval (IR) 시스템에 대해 'retrieve-then-rank' 전략이 주로 사용됨 유저의 query q와 관련성이 높은 문서 ..

<Retrieval> [GenRead] Generate rather than Retrieval: Large Language Models are Strong Context Generators (2023.01) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [Microsoft Cognitive Service Research], ICLR 2023 conference paper - GenRead, LLM이 question을 기반으로 contextual document를 생성하고, 최종 답변을 생성하기 위해 해당 document를 참조하는 방식 - 외부 knowledge source로부터 어떤 문서도 retrieve하지 않고 여러 태스크에서 SoTA 성능 달성 - retrieval & generation 형태로 결합도 가능 배경 knowledge-intensive task를..

<Retrieval> [DPR] Dense Passage Retrieval for Open-Domain Question Answering (2020.04) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [Facebook AI, University of Washington, Princeton University] - dense representation을 사용하여 효과적으로 implemented될 수 있다. - 적은 숫자의 question과 passage로 학습된 embedding과 simple dual-encoder framework 배경 Open-Domain Question Answering (ODQA) 문제를 풀기 위해 (1) context retriever (2) machine reader를 사용하는 two-..

<LK Lab, Retrieval> [RoSPr] Efficiently Enhancing Zero-Shot Performance of Instruction Following Model via Retrieval of Soft Prompt (2023.10) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [KAIST] - prompt tuning을 통해 얻은 soft prompt의 retrieval이 hard prompt를 사용하는 zero-shot task의 일반화에 도움이 된다는 것을 확인 - T0 모델의 성능을 향상시키기 위해 추가된 파라미터의 수는 전체의 0.007%에 불과함 - Retrieval of Soft Prompt (RoSPr) 배경 instruction tuning에서 모델 성능 향상시키는 방법은 크게 1) scaling the number of training datasets 2) scaling ..

<LK Lab, Instruction> [RoE] Exploring the Benfits of Training Expert Language Models over Instruction Tuning (2023.02) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [Minjoon Seo] - 단 하나의 task에 대해 fine-tuned된 expert LM이 300개 이상의 task로 학습된 MT (multitask-prompted fine-tuning) LM을 outperform - distributed approach의 장점: avoiding negative task transfer, continually learn new tasks, compositional capabilities 배경 instruction을 통해 여러 task에 fine-tuned된 모델을 multit..

<LK Lab, Retrieval> [ToC] Tree of Clarifications: Answering Ambiguous Questions with Retrieval-Augmented Large Language Models (2023.10) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [KAIST AI, Korea University, NAVER Cloud] - Ambiguous Question (AQ)에 대한 tree of Disambiguated Question (DQ)을 recursively construct, ToC - few-shot prompting을 통해 exernal knowledge을 이용 -> long-form answer를 생성 배경 기존에는 주어진 AQ에 대한 모든 DQ를 구하고, 이에 대한 long-form answer를 생성 한계 1) AQ는 multiple dimensi..

<LK Lab, Multi-modal> [ZeroTA] Zeor-Shot Dense Video Captioning by Jointly Optimizing Text and Moment (2023.01) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [KAIST] - dense video captioning을 zeor-shot으로 처리하는 novel mothod, ZeroTA - soft moment mask를 도입하고, 이를 언어 모델의 prefix parameters와 jointly optimizing - soft momnet mask에 대해 pairwise temporal IoU loss를 도입 - supvervised method에 비해 OOD 시나리오에 대해 강건함 배경 기존의 Dense video captioning은 비디오에 나타난 temporal ..

<LK Lab, Multi-modal> [SeViT] Semi-Parametric Video-Grounded Text Generation (2023.01) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [Minjoon Seo] - semi-parametric video grounded text generation model, SeViT - video를 외부 data store 취급하여 non-parametric retriever로 접근 - longer video & causal video understanding에서 두각 배경 기존 연구들은 naive frame sampling에 기반하여 sparse video representation의 한계를 지니고 있었음 Realted Works Video-Language M..

<LK Lab, Evaluation> [FLASK] Fine-Grained Language Model Evaluation Based on Alignment Skill Sets (2023.10) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [KAIST] - 각 instruciton에 대해 coarse-level scoring을 skill set-level scoring로 분해 - human & mode based 평가에 대한 fine-grained evaluation protocol, FLASK - fine-graininess of evaluation은 holistic view를 획득하는데 중요 배경 기존 LLM 평가 방식은 single metric이라서 LLM의 능력을 평가하기에 불충분 또한 surface form에 대해 sensitive하기 때문에..

<LK Lab, Evaluation> Prometheus: Inducing Fine-Grained Evaluation Capability in Language Models (2023.10) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [KAIST, Naver AI, University of Washington, MIT] - GPT-4의 평가 수준에 준하는 완전한 오픈소스 LLM, Prometheus - customized score rubric 기반으로 long-form text를 평가할 수 있는 13B 사이즈의 평가자 LLM, Prometheus - 1K score rubrics, 20K instructions, 100K responses로 구성된 데이터셋, Feedback Collection 배경 최근 LLM을 evaluator로 사용하고자 ..

<LK Lab, Instruction> [Flipped Learning] Guess the Instructoin! Flipped Learning Makes Language Models Stronger Zero-Shot Learners (2023.06) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [KAIST, LG AI Research] - input과 label이 주어지면 instruction을 예측하도록 하는 meta-training method, Flipped Learning - unlikelihood loss를 추가 (weighted sum with likelihood loss) - unseen labels을 지닌 task에서 큰 성능 향상을 보임 배경 기존 LM (Language Models)은 input과 instruction이 주어지면 label을 예측하는 방식으로 학습을 진행 학습 때와 다른 label을 지닌 데이터에 대한 추론 성능이 떨어짐. 즉 일반화 성능이 좋..

<LK Lab, Alignment> [ALMoST] Aligning Large Language Models through Synthetic Feedback (2023.10) [내부링크]

[Naver, KAIST, SNU] - human annotation이나 proprietary LLM에 의존하지 않고 합성 데이터를 이용하는 alignment learning framework - vanilla LLM으로부터의 output을 대조시키는 방식으로 reward modeling을 진행 - RM을 이용하여 high-quality demonstration에 대해 supervised policy를 학습 - model을 강화학습을 통해 optimize 배경 Alignment learning은 large language model의 성능 향상에 큰 영향을 주었지만 관련 데이터 확보나 학습 관점에서 비용이 너무 많이 든다는 문제점이 존재 본 논문에서는 합성 데이터를 생성함으로써 위 방식의 단점을 극복하고..

<LK Lab, Evaluation> Knowledge Unlearning for Mitigating Privacy Risks in Language Models (2022.12) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [KAIST, LG AI Research, Knokuk University, Seoul National University, University of Illinois Chicago] - LM이 지난 privacy risk를 줄여주기 위한 대안으로 knowledge unlearning을 제안 - target sequence에 대해 gradient ascent를 적용하는 것만으로도 모델의 성능 하락 없이 forgetting을 쉽게 달성할 수 있음 - sequential unlearning이 모든 데이터를 한꺼번에 처리하는 것보다 더 바람직한 결과로 이어짐 배경 사전 학습된 언어 모델이 이름,..

<LK Lab, Benchmark> TemporalWiki: A Lifelong Benchmark for Training and Evaluating Ever-Evolving Language Models (2022.04) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [KAIST, LG AI Research, Korea University] - LM이 이전의 지식을 그대로 보유하고 있는지, 그리고 최신의 지식을 습득했는지 확인할 수 있는 벤치마크 - TWiki-Diffsets, TWiki-Probes 두 개의 셋으로 구성 - diff data에 대해 LM을 continual learning 하는 것이 perplexity 관점에서 준수하다는 결과 배경 LM의 능력을 평가하는 데이터셋은 대부분 static train / test 데이터셋의 misalignment는 closed-boo..

<LK Lab, Retrieval> [Np Decoding] Nonparametric Decoding for Generative Retrieval (2023.05) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [KAIST AI, Kakao] - 현존하는 generative retrieval model에 모두 적용 가능한 Nonparametric Decoding (Np Decoding)을 제안 - Np Decoding은 nonparametric contextualized vocab embedding (external memory)를 사용 배경 Text Retrieval에서 bi-encoder를 사용하는 방식은 embedding space bottleneck과 large storage space 문제가 존재 최근 인기를 끌고..

<Retrieval> [RAG] Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2021.04) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [RAG] Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2021.04) [Facebook AI Research] - parametric memory는 사전학습된 seq2seq, non-parametric momory는 위키피디아의 dense vector index - 하나의 retrieved passage로 sequence 전체를 생성하는 방식 vs 각 토큰별로 다른 retrieved passage를 참고하는 방식 배경 사전학습된 Neural..

<LK Lab, Retrieval> REPLUG: Retrieval-Augmented Black-Box Language Models (2023.01) [내부링크]

관심있는 NLP 논문을 읽어보고 간단히 정리했습니다. (Language & Knowledge Lab의 Retreival 관련) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ [LK Lab] - Language Model은 블랙박스 취급하고 tuneable retrieval model로 증강 효과를 누리는 Retrieval-Augmented Language Modeling Framework, REPLUG - frozen 블랙박스 LM에 retrieved documents를 prepend하는 방식 - LM은 retrieval model을 supervise하는 데 활용될 수 있음 LLM은 뛰어난 능력을 가지고 있지만 hallucination을 보이거나 long tail에 해당하는 knowle..

<LK Lab, Retrieval> [GMR] Generative Multi-hop Retrieval (2022.10) [내부링크]

관심 있는 NLP 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [KAIST AI] - multi-hop 태스크에서 기존의 bi-encoder 방식이 지닌 한계를 입증 - retrieval target이 되는 text sequence 전체를 생성함으로써 multi-hop retrieval 태스크를 수행 - GPU memory & Storage footprint 효율성이 높음 배경 text retrieval 문제는 지금까지 주로 query와 관련성이 높은 paragraph 또는 document 하나를 찾는 것에 집중해왔음 이를 위해서 query와 retrieval sequence 둘 다 공통의 vector s..

10월 4주차 논문 요약: Ask Again, BitNet, Self-RAG, Meta-CoT, AutoDan, NEFTune, VeRA, Atlas [내부링크]

NLP 관련 논문을 읽어보고 간단히 정리했습니다(최근 논문 위주로!) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ Ask Again, Then Fail: Large Language Model's Vacillations in Judgement (2023.10) usechatgpt init success [Nanjing University] - Follow-up Questioning Mechanism을 제안 - Direct Form vs. Progressive Form - ChatGPT, PaLM2-Bison, Vicuna-13B 모델에 대해 실험 LLM의 답변에 의문을 제시하는 프롬프트를 추가로 제공하면, 기존의 판단을 철회하는 경향이 아주 짙음 모델의 답변을 신뢰할 수 있는지에 대한 ..

10월 3주차 논문 요약: GQA, LLM, LLMLingua, LLeMA, ToRA [내부링크]

최근(2023.10)에 나온 논문들을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints (2023.05) [Google Research] Multi-head Attention(MHA)만큼의 품질이 보장되고, Multi-query Attention(MQA)만큼의 속도를 낼 수 있는 Group-query Attention(GQA)를 제안 기존 Transformer 아키텍쳐에서 사용되는 Multi-head Attention의 경우 메모리 사용량이 지나치게 많이 요구되어 이를 적용하기가 점점 더 어려워지는 추세였음 이..

10월 2주차 논문 요약: Space and Time, RA-DIT, Mistral 7B [내부링크]

최근(2023.10)에 나온 논문들을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success Language Models Represent Space and Time (2023.10) [MIT] - LLM은 시공간에 대한 linear representation을 학습할 수 있다. 실험 결과에 따르면 모델이 생성하는(build) representation은 linear하다. 또한 모델 성능은 prompt 변화에 꽤 강건한 모습을 보인다. 도시나 자연적 랜드마크와 같은 다른 종류의 entity 전체를 아울러 이와 같은 경향이 나타난다. linear ridge regression probes Metric : R2 & Spearm..

<Retrieval> [Short Paper Review] Retrieval meets Long Context Large Language Models [내부링크]

최근(2023.10)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [NVIDIA] LLM with 4k context window + simple retrieval-augmentation → LLM with 16K context window 심지어 더 큰 윈도의 사이즈를 가진 더 큰 모델에 retrieval-augmentation을 적용해도 성능이 향상됨. 배경 LLM의 능력을 최대한 활용하기 위해 더 긴 길이의 텍스트를 모델이 처리할 수 있게끔 하는 연구들이 활발하게 이뤄지고 있습니다. 그중에서도 최근에는 모델의 입력 길이 자체를 확장하는 'long context window'에 관한 연구와 입력..

<LLM> [Short Paper Review] Can large language models provide useful feedback... [내부링크]

최근(2023.10)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Stanford University] GPT-4를 이용하여 Nature, ICLR 두 학회의 페이퍼를 review. 고품질 peer review를 받기 어려운 지역의 연구자들에게 유용할 것으로 보임. 배경연구 결과에 대해 peer review를 받는 것은 해당 분야의 발전과 직접적인 관련이 있습니다. 이미 오랜 시간에 걸쳐 많은 연구자들은 서로의 연구 성과를 review하며 각 분야를 발전시켜왔습니다. 그러나 최근 (특히) 인공지능 분야에 대한 관심이 뜨겁고 실제 연구 성과들도 엄청나게 쏟아져 나오는 상황에서 고품질의 review를..

<LLM> [Analogical Prompting] Large Language Models as Analogical Reasoners [내부링크]

최근(2023.10)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Google DeepMind, Standford Univ] LLM의 reasoning process를 자동적으로 guide하는 analogical prompting를 제시. labeling 작업이 필요하지 않아 generality & convenience, 특정 problem에 적용 가능하여 adaptability. 배경 언어 모델을 학습할 때 CoT(Chain of Thought) 방식을 채택하는 것이 모델 성능 향상에 큰 도움이 된다는 것은 이미 잘 알려져 있습니다. 어떤 문제를 해결할 때 단순히 정답만을 반환하는 것이 아니라,..

<Multi-modal> [LLaVA-1.5] Improved Baselines with Visual Instruction Tuning [내부링크]

최근(2023.10)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Microsoft Research] LLaVA에서 fully-connected vision-language cross-modal connector를 사용한 LLaVA-1.5 공개. data efficient(1.2M public data) & power(SoTA on 11 benchmarks) 배경 최근에는 LLM 뿐만 아니라 LMM, 즉 Large Multimodal Models에 대한 관심도 뜨겁습니다. 여기서도 마찬가지로 전체 모델을 tuning 하지 않고도 성능을 끌어 올리는 기법 등에 대한 연구가 많이 이뤄지고 있죠. 그중..

<Attention> [Attention Sinks] Efficient Streaming Language Models with Attention Sinks [내부링크]

최근(2023.09)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [MIT, Meta AI] initial token의 Key, Value를 attention 과정에서 keep하는 방식, Attention Sinks 유한한 길이의 attention window로 학습된 LLM이 무한한 길이의 sequence에 대해 일반화 할 수 있도록 하는 StreaingLLM. 배경 LLM이 여러 태스크에서 뛰어난 퍼포먼스를 보여주는 것은 맞지만, 입력이 특정 길이를 넘어서게 되면 이를 전혀 처리하지 못한다는 문제점을 갖고 있죠. 그런다고 입력 길이를 늘려주자니 attention 연산이 quadratic 하다 보..

<LLM> The Reversal Curse:LLMs trained on “A is B” fail to learn “B is A” [내부링크]

최근(2023.09)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success LLM의 한계, Reversal Curse를 확인. 순서만 뒤바꾸는 아주 단순한 논리적 연역 추론에 실패하는 현상을 나타냄. 배경 그렇게 뛰어나다고 알려진 LLM들이 가진 아주 단순한 허점에 대해 다룬 논문입니다. 이는 LLM들 대분이 auto-regressive 언어 모델이고, 이는 학습한 텍스트 내 구성 요소의 순서만 도치하더라도 제대로 추론하지 못하는 Reversal Curse를 보여줍니다. 즉, 학습 단계에서 'A는 B이다'라는 것을 배웠다고 하더라도, 추론 단계에서 'B는 무엇입니까?'라는 질문에 적절히 답변하지 못한다는 것..

<Benchmark> [MMHAL-BENCH] Aligning Large Multimodal Models with Factually Augmented RLHF [내부링크]

최근(2023.09)에 나온 (accept 전 preprint)논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Microsoft, MIT] (Factually Augmented) RLHF를 vision-language alignment에 적용. GPT-4를 이용하여 vision instruction tuning을 위한 데이터셋 확보. hallucination 수준을 파악하는 MMHAL-BENCH 개발. 배경 LLM의 부상과 함께 Large Multimodal Model(LMM) 역시 대규모의 image-text pair 데이터에 대한 사전학습을 바탕으로 큰 주목을 받기 시작했습니다. 그러나 multimoda..

<Benchmark> Struc-Bench: Are Large Language Models Really Good at Generating Complex Structured Data? [내부링크]

최근(2023.09)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success 대표 LLM들의 structured output 생성 능력을 테스트하기 위한 Struc-Bench를 제안. FormatCoT(Chain of Thought)를 활용하여 format instruction을 생성. 여섯 개 관점에서 모델의 능력을 나타내는 ability map 제시. 배경 (벌써 몇 주째 같은 이야기로 리뷰를 시작하는 것 같은데.. ) 최근 LLM이 다방면으로 엄청난 퍼포먼스를 보여주는 것은 사실이지만, 특정 분야나 태스크에 대해서는 여전히 뚜렷한 한계를 보여주고 있습니다. 그중 가장 대표적인 것 중 하나가 struct..

<LLM> [Qwen] Qwen Technical Report [내부링크]

최근(2023.09)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Qwen Team, Alibaba Group] 유사한 사이즈 모델 대비 우수한 성능을 보이는 Qwen model series를 공개. Qwen, Qwen-Chat, Code-Qwen, Code-Qwen-Chat, Math-Qwen-Chat 배경 최근 핫하게 떠오르는 Qwen 모델의 technical report가 있어 이를 살펴보고 간단히 정리해보고자 합니다. Qwen은 Qianwen이라는 중국 구절에서 따온 것으로, 'thousands of prompts'라는 의미를 담고 있다고 합니다. 위 모델 series 구성도에서 볼 수 있..

<Attention> LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models [내부링크]

최근(2023.09)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [MIT] 사전학습된 LLM의 context size를 확장하는 efficient fine-tuning 기법, LongLoRA. sparse local attention 방식 중 하나로 shift shoft attention(S^2-Attn)를 제안하고, trainable embedding & normalization을 통해 computational cost를 대폭 줄이면서도 기존 모델에 준하는 성능을 보임. Fine-tugning을 위한 3K 이상의 long context question-answer pair dataset, Lon..

<CoT> [CoVe] Chain-of-Verification Reduces Hallucination in Large Language Models [내부링크]

최근(2023.09)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Meta AI] LLM의 hallucination을 줄이기 위한 방법으로 Chain-of-Verification, CoVe를 제안. CoVe는 네 개의 단계로 구성됨. 배경 LLM이 사실이 아닌 것을 마치 사실처럼 표현하는 현상인 hallucination 문제가 심각하다는 것은 이미 잘 알려져 있습니다. 이 현상을 최소화하고자 하는 연구들도 많이 이뤄지고 있구요. 이러한 시도들을 크게 'training-time correction', 'generation-time correction', 'via augmentation'으로 구분할 ..

<Agent> Agents: An Open-source Framework for Autonomous Language Agents [내부링크]

최근(2023.09)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success 비전문가 유저도 쉽게 이용할 수 있는 autonomous agent 제작 프레임워크, AGENTS. planing, memory, tool usage, multi-agent communication, fine-grained symbolic control 등의 기능을 포함. 배경 최근에는 LLM의 능력을 이용하여 autonomous language agent를 만드는 연구 또한 활발히 이뤄지고 있습니다. 이를 접목시키기 가장 쉬운 분야를 떠올린다면 게임의 npc가 될 수 있겠죠. 스스로 주변 환경을 인식하고, 사고하고, 판단하고, 행동..

<Image> [ViT] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale [내부링크]

예전(2020.10)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Google Reserach, Brain Team] image patch의 sequence에 pure transformer를 적용하여 image classification을 수행. 타 모델 대비 적은 computational resource를 요하면서도 우월한 성능을 보임. 배경 transformer가 등장하며 NLP를 집어 삼키게 된 이후로, 이 아키텍쳐를 이미지 분야에 적용하고자 하는 여러 시도들이 있었습니다. 각 픽셀을 대상으로 self-attention을 적용하거나 지엽적으로 self-attention을 적용하는 등의 접근이..

<Evaluation> RAIN: Your Language Models Can Align Themselves without Finetuning [내부링크]

최근(2023.09)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [University of Sydney] 추가 데이터나 fine-tuning 없이 frozen LLM을 align. self-evaluation과 rewind mechanism을 활용. 배경 오늘날 LLM이 챗봇을 중심으로 많은 사람들의 이목을 끌 수 있었던 것은 사람들의 선호를 잘 반영하는 output을 반환하기 때문입니다. 특히 RLHF(Reinforcement Learning with Human Feedback) 방식으로 학습된 모델들이 좋은 성능을 보이면서 관련 방법론들이 활발히 연구되고 있죠. 하지만 아직까지도 사람의 선호를..

<Prompting> [OPRO] Large Language Models as Optimizers [내부링크]

최근(2023.09)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Google DeepMind] LLM에 대해 Prompting 기술을 활용하여 Optimization 하는 OPRO를 제안. Linear Regression, Traveling Salesman Problem / GSM8K, Big-Bench Hard Task 배경 원래 optimization, 최적화라고 하면 주어진 문제를 풀기 위해 정의된 objective fuction에 대한 최적화를 뜻합니다. 목표로 설정한 함수를 최적화하는 것은 solution을 반복적으로 업데이트함으로써 달성됩니다. 지금까지는 어떤 방식으로 solution..

LG Aimers 3기 오프라인 해커톤 후기(STAFF) [내부링크]

데이콘을 통해 운영되는 LG Aimers 3기 해커톤이 지난 주말(23.09.16~23.09.17) 간 오프라인으로 진행되었습니다. 올해 초에 진행되었던 2기 때에도 열정적인 참가자분들이 많아 너무 좋았다는 이야기를 들었어서 개인적으로 굉장히 기대가 되는 행사였어요! 손꼽아 기다리고 있었는데, 막상 금요일이 되니까 주말 출근이 너무 하기 싫어서 마음이 무거웠습니다 저도 이 분야에 입문한지 오래되지 않은 뉴비로서 이런 오프라인 해커톤에 참여해보고 싶다고 생각해왔는데 스탭으로 참여하게 될 줄은 정말 꿈에도 몰랐네요 ㅋㅋㅋㅋ 그래도 저에게도 굉장히 값지고 재밌는 시간이었어서 다녀온 후기를 좀 공유해보고자 합니다! 참고로 LG Aimers 공식 홈페이지에서 정보 확인하실 수 있고, 아마 이 상태라면 4기..

<LM> DeBERTaV3: Improving DeBERTa using ELECTRA-Style Pre-Training with Gradient-Disentangled Embedding Sharing [내부링크]

최근(2023.03)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Microsoft Research / Azure AI] DeBERTa의 MLM을 RTD로 대체하고, 새로운 gradient-disentangled embedding sharing 방식을 적용. multilingual 모델 mDeBERTaV3도 개발. 배경 지난 번에 소개한 모델 DeBERTa는 relative position을 더 잘 반영하는 disentangled attention과 absolute position을 반영하는 enhanced mask decoder(EMD)을 주요 특징으로 내세웠습니다. 본 논문에서 DeBERTa는..

<LM> DeBERTa: Decoding-enhanced BERT with Disentangled Attention [내부링크]

과거(2020.06)에 나온 논문을 읽어보고 간단히 정리했습니다. 캐글 프로젝트를 하면서 이 모델에 대해 공부를 한 번 하고 싶어서 빠르게 읽고 간단히 정리한 내용입니다! (버전 3가 올해에 나와 있어서 그것도 얼른 공부를 해야 될 것 같네요) 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Microsoft Research] disentangled attention mechanism과 enhanced mask decoder라는 새로운 기법을 적용. 기존 BERT 및 RoBERTa 모델의 단점을 개선한 새로운 architecture, DeBERTa를 제시. 배경 당시(2020년도)에는 self-attention을 기반으로 한 여러 모델들이 쏟아..

<Alignment> RLAIF: Scaling Reinforcement Learning from Human Feedback with AI Feedback [내부링크]

최근(2023.09)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Google Research] LLM을 요약 태스크에 대해 학습시킬 때 반영하는 '사람'의 선호 대신 'AI'의 선호를 반영하는 RLAIF 배경 ChatGPT와 같은 LLM들이 주목을 받게 된 데 가장 큰 기여를 한 것은 RLHF(Reinforcement Learning with Human Feedback)이라고 해도 과언이 아닐 것입니다. reward 모델이 사람의 선호를 학습하고, 이를 바탕으로 언어 모델을 추가 학습하는 방식입니다. 그런데 이러한 방식 역시 사람의 선호를 나타낼 수 있는 pair 데이터셋이 필요하기 때문에, L..

<Instruction> WizardCoder: Empowering Code Large Language Models with Evol-Instruct [내부링크]

최근(2023.06)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Microsoft] Evol-Instruct 데이터셋을 StarCoder 모델에 fine-tuning한 모델 WizardCoder. 모든 Open Source 모델을 압도, 여러 Closed Source 모델보다 우위. 먼저 읽으면 좋은 논문 : https://chanmuzi.tistory.com/378 배경 LLM이 학습하는데 도움을 주는 instruction dataset을 구축하기 위한 방법으로 제안된 Evol-Instruct를 Code 모델에 특화시키는 방식을 제안하고 있습니다. 위 링크의 요약을 확인해보시면 어떤 방식으로 ..

<Instruction> WizardLM: Empowering Large Language Models to Follow Complex Instructions [내부링크]

최근(2023.04)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Microsoft] 대량의 instruction data를 생성하는 방법론 Evol-Instruct을 제시. 이를 이용해 생성한 데이터셋으로 fine-tuning한 모델 WizardLM이 Alpaca, Vicuna를 압도. 배경 LLM이 instruction data를 활용하는 경우, 그 성능이 눈에 띄게 좋아진다는 것은 잘 알려져 있습니다. 우리에게 익숙한 ChatGPT도 이를 적극적으로 잘 활용하여 학습된 모델이죠. 예전에는 instruction data라고 해봤자, 특정 도메인에 한정되고(closed-domain) 아주 간단한..

<Multi-modal> PointLLM: Empowering Large Language Models to Understand Point Clouds [내부링크]

이 글은 최근(2023.08)에 나온 논문의 요약본을 ChatGPT로 번역한 것입니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success 개요 이 논문은 대형 언어 모델(Large Language Models, LLMs)이 3D 포인트 클라우드를 이해할 수 있도록 확장하는 새로운 연구 방향을 제시합니다. 이로써, 2D 시각 데이터 이상의 새로운 연구 영역이 열립니다. 중심 문제 기존의 대형 언어 모델은 자연어 처리에는 능숙하지만, 3D 구조를 이해하는 능력은 부족합니다. 2D 이미지를 위한 LVLMs는 활발히 연구되고 있지만, 3D로 확장되지 않습니다. 이러한 한계는 3D 환경에서의 객체 인식 및 상호 작용과 같은 작업에 그 응용을 제한합니다. 또..

<Multi-modal> FLAVA: A Foundational Language And Vision Alignment Model [내부링크]

예전(2021.12)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Facebook AI Research (FAIR)] 여러 modality를 '한 번에' 처리할 수 있는 foundation 모델 FLAVA. vision, language, cross/multi-modal vision-langue task 전부 처리. 배경 그렇게 오래 전도 아니지만 이때만 하더라도 multi-modal 모델들의 성능은 지금과 사뭇 달랐던 것 같습니다. 본 논문에서 지적하고 있는 기존 모델들의 한계는 결국 모델의 능력이 '특정 modality에 국한'되어 있다는 것입니다. 여러 modality를 동시에 잘 이해하고 ..

<LLM> Code Llama: Open Foundation Models for Code [내부링크]

최근(2023.08)에 나온 논문을 읽어보고 간단히 정리했습니다. 혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 ️ usechatgpt init success [Meta AI] LLAMA 2를 기반으로 학습된 CODE LLAMA 모델들을 공개. CODE LLAMA, CODE LLAMA - PYTHON, CODE LLAMA -INSTRUCT 세 버전. 각각 7B, 13B, 34B 파라미터 사이즈로 공개. 배경 거대언어모델이 사용한 학습 데이터셋에는 영어 다음으로 많은 비중을 차지하고 있는 것이 python이라는 말이 있습니다. 그만큼 프로그래밍 언어를 학습한 것이 모델의 일반적인 성능 향상에 도움이 된다는 것이 잘 알려져 있습니다. 이에 따라 프로그래밍 언어로 이뤄진 데이터셋을 학습하여 일반..

<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하는 것은 너무 많은 비용을 필요로 한다는 문제점이 있습니다...

<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를 갖추는 것은 많은 비용을 필요로 하기 때문에, 성능을 크게 높일 수 있는 방식이 알려져 있음에도 불구하고 데이터셋 확보에..

<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을 만들기 위한 사전 학습 전략을 제시하고 있습니다. ..

<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) 물론 아직까지 이것이..

<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을 학습..

<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를 다루는 모델을 개발하는 것은 더욱 어려운 일이구요. 그러다보니 최근에는 모델이 직접 어떤 태스크를 처리하는 것보다 다른 기술들을 활용하도록 하는..

<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의 아키텍쳐를 기반으로 삼고 엄청난..

<LLM> PolyLM: An Open Source Polyglot Large Language Model [내부링크]

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

<Adversarial Attack> Universal and Transferable Adversarial Attacks on Aligned Language Models [내부링크]

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

<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를 달성했다고 주장. 배경 트랜스포머 기반의 모델들은 그 뛰어난 성능 덕분에 많은 분야를 집어 삼키고 있지만, 지나치게 많이 요구되는 메모리 사용량과 연산량으로 인해 사용에 제약이 많습니다. 따라서 빠른 속도로 연산이 가능하면서도 준수한 성능을 낼 수 있는 모델에 대한 연구는 다방면으로 이뤄지고 있습니다. 모델의 성능과 관..

<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 수준을 벗어나는 연..

<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이 가진 일반화 능력을 포기..

<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를 오픈소스로 공개했죠. 물론 출시 초반에 모델의 가중치가 토렌트를 통해 공유되었던 것은 ..

ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) (사실은 OOM..?!) [내부링크]

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

<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로 배포되는 모델의 버전이 업데이트된다는 것이었죠. 사실 어떤 식으로 어떤 데이터들로 학습을 하는지에 대해서는 공식적으로 밝혀진 바가 없기에 미스테리로 남은 부분이지만, ..

<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를 적절히 조합하는 것이 중요한 것이죠. 그런데 이미..

<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을 언급하면 빠질 수 없는 이야기는 처리 가능한 입력 길이입니다. 이를 늘리기 위해서 다양한 연구가 이뤄지고 있는데, 실제로 참조해야 할 문서가 많아질수록 모델의..

TensorFlow Korea LLM Day 후기 (23.07.13 (목)) feat. 인공지능위크 2023 [내부링크]

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

<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은 그 능력이 엄청나지만 의외로 특정 분야에 한정된다는 문제점을 안고 있습니다. 엄청난 양의 데이터와 자원으로 한 번 학습되면, 이를 확장하는 것이..

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

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

<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, ..

<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)라고 할 수 있겠네요) 결국 모델이 처리할 수 있는 입력의 길이가 상당히 제한되고, 이것이 지금..

<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의 편향을 그..

[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인데요, 다른 분야에서 뛰어난 퍼포먼스를 보여준 것과 달리 이 태스크에 대해서는 문제를 굉장히 쉽게 준다고 하더라도 잘 맞히지 못했죠. ..

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

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

[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의 등장 이후로 정말 많은 개인(물론 이것도 자원을 아예 필요..

[프로그래머스] 연속된 부분 수열의 합 (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] # 오른..

[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을 적용하는 것입니다. 놀랄 정도로 우수한 성능을 보여준 것과는 별개로, 엄청난 수준의 자원을 필요로 한다는 것은 자명한 사실이죠. 논문의 저자는, ‘언어 모델이 학습하는 지식과 능력은 사전학습 동안 모두 습득되고, 이를 대화 형..

[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..

[Short Paper Reveiw] AutoML-GPT: Automatic Machine Learning with GPT [내부링크]

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

[프로그래머스] 두 원 사이의 정수 (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..

[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에 대해서만 학습이 가능하다는 문제점이 존재합니다. 이러한 문제점을 해결하기 위해 ‘적은..

[프로그래머스] 요격 시스템 (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..

[Short Paper Review] We're Afraid Language Models Aren't Modeling Ambiguity [내부링크]

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

[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..

[프로그래머스] 덧칠하기 (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]: # 현재 위치가 이..

[프로그래머스] 공원 산책 (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)..

[Short Paper Review] PaLM2 Technical Report [내부링크]

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

[프로그래머스] 추억 점수 (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..

[프로그래머스] 달리기 경주 (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..

[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)에 대해서는 자연어로 이미지를 간단히 설명하는 수준..

[Short Paper Review] Learning to Compress Prompts with Gist Tokens [내부링크]

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

[Short Papaer Review] Learning to Reason and Memorize with Self-Notes [내부링크]

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

[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..

[Short Paper Review] Are Emergent Abilities of Large Language Models a Mirage? [내부링크]

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

[Short Paper Review] Evaluating Verifiability in Generative Search Engines [내부링크]

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

[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이 문제를 ..

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..

2023(상반기) 삼성전자 DX SCSA 전형 서류 불합격 후기 [내부링크]

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

[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..

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

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 모든 채널..

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..

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 위 과정을 각..

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을 얻을 수 있게 됩니다. 만약 ..

Face Recognition(4) : Triplet Loss [내부링크]

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

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..

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 만약 네 명의..

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 바이..

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 일반적으로 우리에게 잘 알려진 것은 중간의 빅오 표기법이지만 세 개를 ..

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) 알고리즘입니다. 이 알고리즘은 배열 내 값들이 오름차순으로 정렬되어 있다는 것을 전제로 삼습니다. 반복적으로 배..

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 그래서 이러한 계산을 간단하게 정리하는 방법이 고안되었고 지금의 방식이 그걸 지켜오고 있는 거라고 생각..

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..

Analysis of Algorithms(1) : Analysis of Algorithms Introduction [내부링크]

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

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의 값을 조정하면서 그 결과가 어떻게 되는지를 시각..

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..

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..

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에서는 이런 방식을 이용하여 이미지를 다시 ..

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..

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..

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할 때 진즉에 관련된 모든 값을 변경하는 방식을 취할 수도 있습니다. 관련된 코드는 자바로 작성되는데, 저는 자바를 잘 ..

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에 연..

Region Proposals (Optional) [내부링크]

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

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..

Anchor Boxes [내부링크]

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

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로 쪼개어 위치를 예측하기 때문이죠. 따라서 예측된 ..

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) 차원을 갖게 ..

Convolutional Implementation of Sliding Windows [내부링크]

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

Landmark / Object Detection [내부링크]

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

Object Localization [내부링크]

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

[Paper Review] BERT - Pre-training of Deep Bidirectional Transformers for Language Understanding [내부링크]

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

[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..

[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 #..

[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 = [], [], ..

[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(..

[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..

[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 ..

[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..

[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..

[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..

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

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

[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..

[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[:]) # 정답 리스트에 추가..

[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()..

[Paper Review] GPT-4 Technical Report, OpenAI [내부링크]

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

[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: # 한 개면..

[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: # 둘 중 하나가 글자가 아..

[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=..

[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억으로 일반적인 곱셈 연산을 수행하면 무조건 시간초과가 나게 되어있습니다..

[프로그래머스] 배달 (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..

[BOJ] 1976 : 여행가자 [유니온파인드](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1976 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net 소스 코드 n = int(input()) m = int(input()) graph = [] for i in range(n): graph.append(list(map(int,input().split()))) plan = list(map(int,input().split())) parent = [x for x in range(n+1)] # 0부터 n까지 def find_parent(x): i..

[BOJ] 17142 : 연구소 3 [브루트포스/BFS](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 소스 코드 from itertools import combinations from collections import deque n,m = map(int,input().split()) graph = [[] for _ in range(n)] viruses = [] answers = [] walls = 0 for i in range(n): temp = list(map(int,input().split(..

[프로그래머스] 바탕화면 정리 (Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(wallpaper): files_lu,files_rd = [],[] for row in range(len(wallpaper)): for col in range(len(wallpaper[row])): if wallpaper[row][col] == '#': files_lu.append((row,col)) files_rd.append((row+1,col+1..

[BOJ] 12865 : 평범한 배낭 [다이나믹 프로그래밍](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 소스 코드 import sys n,k = map(int,sys.stdin.readline().rstrip().split()) bag = [[0 for _ in range(k+1)] for _ in range(n+1)] items = [(0,0)] for i in range(n): w,v = map(int,sys.stdin..

[BOJ] 1149 : RGB거리 [다이나믹 프로그래밍](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 소스 코드 import sys # 빠른 입력 graph = [] n = int(input()) for _ in range(n): graph.append(list(map(int,sys.stdin.readline().strip().split()))) dp = graph[0] for idx in range(1,n): pre_red,pre_green,pre_blue = d..

[BOJ] 15657 : N과 M (8) [백트랙킹](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 소스 코드 n,m = map(int,input().split()) nums = sorted(list(map(int,input().split()))) answers = [] def recipe(v): if len(v) == m: # m개를 다 뽑았으면 종료 answers.append(v[:]) return for idx in range(n): # 리스트 내 숫자보다 작은 경우는 ..

[BOJ] 15654 : N과 M (5) [백트랙킹](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 소스 코드 n,m = map(int,input().split()) nums = sorted(list(map(int,input().split()))) # 정렬 필수 answers = [] sequence = [] def permutation(): if len(sequence) == m: # m개를 다 뽑았으면 answers.append(sequence[:]) # 복사!! retu..

[BOJ] 1043 : 거짓말 [그래프](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 소스 코드 from collections import deque n,m = map(int,input().split()) trues = list(map(int,input().split())) knows = [False for _ in range(n+1)] # 진실을 아는 사람 체크 graph = [[] for _ in range(n+1)] # 사람 간 연결 그래프 parties = [] # 파티별 ..

[프로그래머스] 짝지어 제거하기 (Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(s): stack = [] for idx in range(len(s)): if not stack: # 스택이 비어 있는 경우 stack.append(s[idx]) else: # 스택의 마지막 글자와 동일한 것이 들어오는 경우 if stack[-1] == s[idx]: stack.pop() else: # 스택의 마지막 글자와 다른 글자가 들어오는 경우 s..

[프로그래머스] 대충 만든 자판 (Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/160586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def check(keylist,character): # 인덱스 반환 함수 return keylist.index(character) + 1 def solution(keymap, targets): answer = [] for target in targets: # 각 타겟에 대해 tmp_list = [] for idx in range(len(target)): # 타겟의 각 글자..

[Kaggle] OSError, Connection error? 인터넷을 연결하는 방법..(+ GPU 설정) [내부링크]

캐글에서 모델 짜는 연습을 해보려고 노트북 파일에 이것저것 끄적거리던 중... 충격적인 에러를 마주했습니다. from transformers import AutoModel model_name = 'bert-base-uncased' model = AutoModel.from_pretrained(model_name) 을 실행 시킨 결과.. 분명히 저는 이 코드를 캐글의 노트북으로 작성중이었는데 연결이 안된다는게 이해가 안갔습니다.. 내가 모델 이름을 잘못 입력했나..? c 그건 확실히 아닌 것 같고... 아! 혹시 Hugging Face 서버가 터졌나? (이전에도 서버가 터져서 유사한 이슈를 겪어봤습니다..) 원인을 알 수가 없었더랬죠... 구글링을 해보면 비슷한 이슈를 가진 사람들이 있었는데, 로컬에 파..

[프로그래머스] 둘만의 암호 (Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(s, skip, index): skip = [ord(x) for x in skip] # 생략할 번호 alpha_num = [x for x in range(97,123) if x not in skip] answer = [ ] for idx in range(len(s)): char_num = alpha_num.index(ord(s[idx])) # 리스트에..

[BOJ] 1929 : 소수 구하기 [정수론](Python)(feat. 에라토스테네스의 체) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 소스 코드 m,n = map(int,input().split()) sosu = [1 for _ in range(n+1)] sosu[1] = 0 for num in range(2,int(n**0.5)+1): if sosu[num]: # 배수로 제거되지 않은 숫자인 경우 # 이 숫자의 배수는 전부 0으로 바꿔준다 for multiple in range(num+num,n+1,num): sosu[multiple] = 0 # ..

SQuAD paper review(해석) [내부링크]

SQuAD는 Stanford Question Answering Dataset의 약자로, 스탠포드 대학에서 QA를 위해 제작한 데이터셋입니다. 논문을 직접 읽어보고 싶으시다면 SQuAD: 100,000+ Questions for Machine Comprehension of Text 라는 제목의 논문을 직접 보실 수 있습니다. (https://arxiv.org/abs/1606.05250) 저는 MRC(Machine Reading Comprehension)에 관한 프로젝트를 진행하면서 학습과 평가 데이터셋으로 사용되는 SQuAD에 대해 자세히 알고 싶어서 이 논문을 읽어봤습니다. Question Answering과 관련한 여러 논문에서 이 데이터셋을 모델의 성능을 평가하는 지표로 자주 활용합니다. 본 포스팅은..

[BOJ] 11053 : 가장 긴 증가하는 부분 수열 [DP](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 소스 코드 n = int(input()) arr = list(map(int,input().split())) dp = [1] * n # dp 테이블 초기화 for i in range(1, n): # 2번째 원소부터 for j in range(0, i): # 그 이전 원소들과 비교하여 if arr[i] > arr..

[프로그래머스] 카드 뭉치 (Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(cards1, cards2, goal): for word in goal: # 카드 뭉치 둘 다 남은 경우 if cards1 and cards2: word1,word2 = cards1[0],cards2[0] if word == word1: cards1.pop(0) elif word == word2: cards2.pop(0) else: return 'No..

[프로그래머스] 크기가 작은 부분문자열 (Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(t, p): answer = 0 width = len(p) # 비교 문자열 길이 huddle = int(p) # p의 정수값 for idx in range(len(t)-len(p)+1): if int(t[idx:idx+width])

[BOJ] 2606 : 바이러스 [그래프탐색](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 소스 코드 from collections import deque c = int(input()) graph = [[] for _ in range(c+1)] n = int(input()) for i in range(n): # 양방향 간선 추가 a,b = map(int,input().split()) graph[a].append(b) graph[b].append(a) # 이 문제에서는 정렬 불필요해..

[BOJ] 1195 : 킥다운 [브루트포스](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1195 1195번: 킥다운 첫 줄에는 첫 번째 기어 파트를 나타내는 1과 2로 구성된 문자열이 주어진다. 두 번째 줄에는 마찬가지로 두 번째 기어 파트를 나타내는 1, 2로 구성된 문자열이 주어진다. 여기서 1은 홈을, 2는 www.acmicpc.net 소스 코드 a = input() b = input() answer = len(a) + len(b) # 최악의 경우 # 길이가 긴 것을 a, 짧은 것을 b로 설정 if len(a) < len(b): a,b = b,a gap = len(a) - len(b) # 길이가 짧은 것이 왼쪽에 길게 늘어지는 경우 # 000002112112112 # 221211200000000 for zero in ..

[프로그래머스] 가장 가까운 같은 글자 (Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/142086?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(string): characters = set(list(string)) # 문자열을 구성하는 알파벳set # '알파벳 : -1'로 dict 생성 my_dict = {character:-1 for character in characters} answer = [] for idx in range(len(string)): # 처..

Google Cloud Platform(GCP) VM 인스턴스/버킷 생성하기, CLI로 파일 업로드/다운로드 하기 [내부링크]

cloud 시장에서는 사실 AWS가 Google Cloud Platform보다 많이 쓰이지만, GCP가 무료 크레딧을 제공해주기 때문에 실습해보기 좋다고 해서 강의 내용을 따라 실습을 진행해보았습니다. 1. GCP 가입하기 https://cloud.google.com/ 클라우드 컴퓨팅 서비스 | Google Cloud 데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요. cloud.google.com 구글 계정이 없는 분은 없으시겠죠? (생성하기가 워낙 쉬워서 다들 몇 개씩은 보유하고 계시니까요..!) 그럼 위 페이지에 접속하셔서 무료로 시작하기 버튼을 눌러 줍니다. 그러면 국가와 소속 기관을 고르고 서비스 약관에 동의하..

BERT와 BERT 파생모델 비교(BERT, ALBERT, RoBERTa, ELECTRA, SpanBERT) [내부링크]

자연어처리 분야에서 아주 큰 입지를 차지하고 있는 모델인 BERT와 BERT 기반의 파생모델들에 대해 공부한 내용을 정리해봤습니다. 구글 BERT의 정석(한빛미디어)라는 책과 각 모델 관련 논문, 그리고 인터넷의 여러 게시물들을 참고하여 최대한 간략하게 정리했습니다. 순서는 다음과 같습니다. 1. BERT 2. ALBERT 3. RoBERTa 4. ELECTRA 5. SpanBERT 실제로 자연어처리 분야의 여러 태스크를 수행할 때 자주 사용되는 RoBERTa, ELECTRA와 같은 모델들이 어떤 배경에서 등장하고 어떤 특징을 지니고 있는지 간단히 확인할 수 있도록 비교했습니다. 혹시 제가 잘못 알고 있거나 잘못 작성한 내용이 있다면 피드백 부탁드리겠습니다 c (참고로 노션에서 작성한 내용을 가져와 재구..

[프로그래머스] 문자열 나누기 (Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(string): answer = 0 standard,others = '','' standard_cnt,others_cnt = 0,0 for idx in range(len(string)): # 기준 문자열이 없으면 첫글자로 설정 if not standard: standard = string[idx] if string[idx] == standard: # ..

[BOJ] 10799 : 쇠막대기 [자료구조](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 소스 코드 question = input() stack = [] answer = 0 for idx in range(len(question)): if question[idx] == '(': # 열린 괄호는 추가 stack.append('(') else: # 닫는 괄호의 경우 stack.pop() if question[idx-1] == '(': # 레이저인 경우 answer += len(stack) ..

[프로그래머스] 명예의 전당 (1) (Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/138477 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 import heapq def solution(k, score): stage = [] answer = [] for idx in range(len(score)): # 리스트 내 원소를 대소비교하여 추가 heapq.heappush(stage,score[idx]) # 리스트길이가 k 초과 시 최솟값 pop if len(stage) > k: heapq.heappop(stage) #..

[BOJ] 1260 : DFS와 BFS [그래프 이론](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 소스 코드 from collections import deque n,m,v = map(int,input().split()) graph = [[] for _ in range(n+1)] for i in range(m): # 양방향 간선이므로 둘 다 그래프에 추가 a,b = map(int,input().split()) graph[a].append(b) g..

[프로그래머스] 기사단원의 무기 (Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(number, limit, power): # 범위 주의 numbers = [0 for x in range(number+1)] # 1부터 number까지 포함 for i in range(1,number+1): # 배수 인덱스에 +1 for j in range(i,number//i*i+1,i): numbers[j] += 1 # limit 초과시 power..

[BOJ] 1244 : 스위치 켜고 끄기 [구현](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 소스 코드 k = int(input()) switches = list(map(int,input().split())) n = int(input()) for i in range(n): sex,num = map(int,input().split()) # 성별,숫자 입력 if sex == 1: # 남자인 경우 for j in range(num-1,k//num*num,num): # 배수 인덱..

[네이버 부스트캠프 AI Tech 4기] 수료 기념 후기 (+ for 부캠 지원자) [내부링크]

간단 소감 작년(22년) 8월에 부스트캠프 테스트에 통과해서 9월부터 교육을 받기 시작했는데, 5개월이라는 시간이 훌쩍 지나 벌써 수료를 해버렸습니다... 정신 없이 보낸 시간들 속에 스스로 성장했는지조차 제대로 모르겠습니다 c 단순히 컴퓨터와 관련된 분야에서 일을 하고 싶다는 막연한 생각으로 뛰어든 부캠 생활은 순탄치만은 않았던 것 같습니다. 좀 더 적나라하게 말하자면 괴로웠던 것이 사실입니다. 스스로의 부족함을 깨닫는 것이 원동력이 될 때도 있지만 무기력해지는 원인이 되기도 했던 것 같아요. 처음 부캠 생활을 시작하던 저는 나름 자신감에 차있었습니다. 아직 모르는 것들은 공부하면 되고 남들이 걸어간 길을 나는 빠르게 쫓아갈 수 있다,고 생각했었죠 ㅋㅋㅋ.. 그게 얼마나 오만한 생각이었는지를 깨닫기까지..

[BOJ] 1966 : 프린터 큐 [자료구조](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 소스 코드 c = int(input()) for i in range(c): n,m = map(int,input().split()) # 입력 리스트, 입력 당시의 순서를 기록할 리스트 my_list = list(map(int,input().split())) order_list = [x for x in range(len(my_list))] cnt = 0 while True: # 맨 앞의 원소가..

[BOJ] 2504 : 괄호의 값 [자료구조](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X www.acmicpc.net 소스 코드 string = input() stack = [] score = 0 ratio = 1 # 이 비율에 따라 점수를 계산 for idx in range(len(string)): if string[idx] == '(': # 여는 괄호인 경우 ratio *= 2 stack.append(string[idx]) elif string[idx] == '[': # 여는 괄호인 경우 ra..

[프로그래머스] 과일 장수(Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(k, m, score): score = sorted(score) # 오름차순 정렬 answer = 0 # 전체 개수를 m으로 나눈 몫만큼 for i in range(len(score)//m): # m개씩 pop for j in range(m-1): score.pop() # 정렬했으므로 마지막으로 pop하는 것이 최솟값 answer += score.po..

[프로그래머스] 푸드 파이트 대회(Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/134240 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(food): # 딕셔너리에 숫자별 개수 저장 foods = {} for i in range(1,len(food)): foods[i] = food[i] // 2 answer = '0' # 큰 숫자부터 작은숫자까지 0을 감싸도록 한다 for tmp in reversed(foods.keys()): answer = str(tmp)*foods[tmp] + an..

[프로그래머스] 햄버거 만들기(Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/133502# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(ingredient): cnt = 0 stack = [] for exp in ingredient: stack.append(exp) # 지금까지 쌓인 재료가 4개 이상이고 뒤에서부터 4개로 햄버거가 될 때 if len(stack) >= 4 and stack[-4:] == [1,2,3,1]: cnt += 1 # 뒤에서 네 개를 pop for i in r..

[프로그래머스] 옹알이 (2)(Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/133499 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 import re def solution(babbling): # 각 원소에 속한 발음 가능한 단어를 숫자로 치환 for i in range(len(babbling)): babbling[i] = babbling[i].replace('aya','1') babbling[i] = babbling[i].replace('ye','2') babbling[i] = babbling[i].r..

[프로그래머스] 콜라 문제(Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/132267 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(a, b, n): answer = 0 # 가지고 있는 콜라병이 교환 가능한 동안에 while n >= a: # 빈 병 개수 추가 answer += (n // a * b) # 교환하지 못하고 남은 병 + 새로 얻은 콜라 n = (n % a) + (n // a * b) return answer 해설 단순 구현 문제 while문의 조건을 이용해 교환이 가능..

[프로그래머스] 개인정보 수집 유효기간(Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(today, terms, privacies): terms_dict = {} # 알파벳이 의미하는 기간을 dict 형태로 재가공 for term in terms: alphabet, month = term.split() terms_dict[alphabet] = int(month) y,m,d = today.split('.') # 년,월,일 today = i..

[프로그래머스] 숫자 짝꿍(Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 from collections import Counter def solution(X, Y): # 숫자 개수 세기 nums = Counter(X) & Counter(Y) if not nums: return '-1' # 공통 없는 경우 elif list(nums) == ['0']: return '0' # 0만 공통인 경우 nums_order = sorted(list(nums),..

[프로그래머스] 삼총사(Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/131705 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 from itertools import combinations def solution(number): nums = list(combinations(number,3)) cnt = 0 for num in nums: if sum(num) == 0: cnt += 1 return cnt 해설 combinations(조합) 함수를 이용한 간단한 풀이 combinations combin..

Quiz & Assignment [내부링크]

1. Hyperparameter tuning, Batch Normalization, Programming Frameworks hyperparameters의 숫자가 적으면 grid search를 해도 될까? 아니다. hyperparameter 숫자가 적다고 하더라도 특정 parameter가 다른 parameter에 비해 지배적인 영향력을 줄 수 있기 때문이다. 우선순위가 높은 hyperparameter 두 개를 고르시오 learning rate alpha, momentum의 beta(학습 속도에 영향을 주게 됨) hyperparameter search를 baby sit(판다 버전) 스타일로 할 것인가? 여러 모델을 parallel(캐비어 버전)하게 돌릴 것인가? 가지고 있는 자원(컴퓨터)에 달린 문제! 최..

Introduction to Programming Frameworks [내부링크]

1. Deep Learning Frameworks 이 강의가 제작되던 시기에도 이미 딥러닝 분야에서 활용할 수 있는 다양한 프레임워크들이 존재했다. 어떤 프레임워크를 사용할 것인지는 사용자의 선호에 따라 달라질 수 있다. 하지만 현재 오픈 소스인 것이 이후에는 어떤 이유에 의해서든지 아니게 될 수가 있으므로 장기적으로는(개인의 관점은 아닌듯하다) 어떤 프레임워크를 선택할 것인지에 대해 보다 신중한 판단이 요구된다. 2. TensorFlow Motivating problem Cost Function이 위와 같다고 했을 때 TensorFlow를 사용하면 W와 b를 간편하게 구할 수 있다. import numpy as np import tensorflow as tf w = tf.Variable(0, dtype..

Multi-class Classification [내부링크]

1. Softmax Regression Recognizing cats, dogs, and baby chicks 이전에 다룬 내용은 두 개의 class로 분류하는 것이었습니다. 이를 테면 고양이인지 아닌지를 구분하는 binary classification이라고 할 수 있습니다. 이번에는 두 개의 class가 아닌 여러 개의 class로 구분하는 상황을 가정해보겠습니다. 위 예시에서는 cat, dog, chick, others로 구분합니다. 따라서 neural network의 output layer는 [4,1]의 shape을 갖게 되고 이 벡터는 입력 x가 주어졌을 때 각 class에 해당될 확률을 뜻하게 됩니다. Softmax layer 여러 개의 class가 존재할 때 이를 분류하는 학습을 하는 netw..

Batch Normalization [내부링크]

1. Normalizing Activation in a Network Normalizing inputs to speed up learning gradient descent 과정에서 빠르게 local minima에 도달하는데 normalization이 도움이 된다는 것은 이전에 배웠다. 그렇다면 neural network에서, 즉 hidden layer가 여러 개인 경우에는 normalization을 언제언제 적용해야 할까? 다시 말하자면 input만 normalization을 해야할까? 아니면 activation function을 통해 나온 결과값에도 적용을 해야할까? 교수님은 둘 다 하는 것을 default로 생각하라고 하셨다. activation function의 결과가 어떻게 나올지는 확실히 예측할..

Hyperparameter Tuning [내부링크]

1. Tuning Process Hyperparameters 모델을 학습할 때 정해야 하는 여러 가지 hyperparameter가 존재한다. 교수님이 이 중 가장 중요하게 생각하는 것은 learning rate(alpha)이고, 나머지는 사용하는 optimizer 등에 따라 달라진다. 그렇다면 이 hyperparameters를 어떤 값으로 tuning하는 것이 좋은 방법일까? Try random values : Don't use a grid 예를 들어 두 개의 hyperparameter가 존재하는 경우 이를 격자처럼 딱딱 정해진 값으로 테스트 해보는 것은 바람직하지 않다. 위 그림에서 만약 hyperparameter 1이 hyperparameter 2에 비해 지배적인 영향력을 가지고 있다고 가정한다면, ..

2022(하반기) 삼성전자 DX SCSA 전형 면접 불합격 후기 [내부링크]

2022년 12월 9일 금요일 삼성전자 DX SCSA 면접 불합격 2022년 11월 18일 금요일에 응시한 종합 면접에서 불합격했습니다.. 삼성 하반기 공채의 마지막 면접으로 알고 있었는데, 마지막 순서로 면접에 응시를 했음에도 불구하고 무려 3주나 기다려 불합격 소식을 접하게 됐네요 c 신경을 쓰지 않으려 해도 나올 때가 됐는데.. 하면서 결과를 기다리게 되어서 참 힘들었는데 아쉽습니다. 면접 관련해서는 당연히도 보안 서약서도 작성하므로 공개할 수 없는 내용들이 많습니다. 전체적인 인상이나 흐름 정도만 정리할 것이고 개인적으로 면접을 준비하면서 느낀 점들을 적어보고자 합니다. 1. 인성검사 몇 문항인지 정확히 기억나지도 않습니다만 제한된 시간에 주어진 것들을 모두 체크하려면 고민할 시간 따위는 없습니다..

파이썬 정규표현식 연습(비밀번호 패턴, html 태그 제거) [내부링크]

오늘은 정규표현식에 대해 공부한 내용을 조금 정리해보고자 합니다. 사실 정규표현식 자체가 워낙 익숙치 않기도 하고 자주 사용되는 느낌은 아니라서... '필요할 때마다 검색해서 쓰면 되겠지~' 생각했는데 막상 쓰고 싶을 때 활용할 능력도 없었습니다.. 하지만 정규표현식은 크롤링과 자연어 전처리에서 필수적이라고 합니다. 인공지능 모델이 학습하기 위한 좋은 품질의 데이터를 마련하기 위해서 필요한 것이죠! 그래서 이번에 정규표현식을 활용했던 내용을 토대로 정규표현식에 관한 아주 기초적인 것들을 정리해보겠습니다. 메타 문자 . ^ $ * + ? { } [ ] \ | ( ) 메타 문자란 원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자를 뜻합니다. 이 문자들은 정규표현식에서 다른 문자들과 달리 조금 특..

F1 Score, Confusion Matrix, Precision & Recall (trade-off) 왕초보를 위한 설명 [내부링크]

여러 대회의 평가 metric으로 사용되는 F1 Score와 이를 이해하는데 필요한 여러 개념들을 정리한 글입니다. 부족한 것이 많아 잘못 이해하고 작성한 것이 있을 수 있으니 너그러이 이해해주시고 피드백 해주신다면 너무 감사하겠습니다. ️ (가장 중요한 내용들은 글의 최하단에 간단히 요약해두었으니 정리가 필요하신 분들은 마지막만 보셔도 좋습니다!!) F1 Score F1 Score는 어떤 실험이나 예측이 제대로 이루어졌는지 확인할 수 있는 지표입니다. precision과 recall의 조화 평균(harmonic mean)으로 구합니다. 이 수식을 이해하기 위해선 Confusion Matrix(혼동 행렬), 그리고 여기에 포함되는 precision(정밀도), recall(재현율)의 개념을 알아야 합..

Quiz & Programming Assignments [내부링크]

1. Optimization Algorithms (Quiz) minibatch, layer, example에 대한 notation 각각 { }, [ ], ( ) 기호를 사용한다. vectorization Batch gradient descent는 한꺼번에 모든 데이터를 묶어 학습하겠다는 것이다. 따라서 memory의 문제만 없다면 vectorization을 가장 많이 수행하는 학습법일 것이다. 그러나 batch gradient descent는 progress를 진행하기 전에 전체 training set을 처리해야 한다는 문제점이 있다. 한편 stochastic gradient descent는 여러 example을 vectorization 할 수 없다는 단점이 있다. iteration - cost(J) g..

Optimization Algorithms(4) - Learning Rate Decay [내부링크]

1. Learning Rate Decay Learning Rate Decay 일반적인 mini-batch를 이용하면 파란색과 같은 그래프가 그려진다. 즉, 어느 정도의 noise를 포함한 형태이면서 절대 global minimum에 convergence(수렴)하지 못하고 주변을 배회(wandering)하게 된다. 이를 해결하기 위해 제시된 것이 Learning Rate Decay로 학습이 진행됨에 따라 learning rate을 감소시키는 것을 말한다. 그러면 위 그림에서 초록색과 같은 그래프가 그려진다. 즉, 초반에는 큰 폭으로 학습이 진행되고 이후에는 그 폭을 줄이면서 global minimum에 convergence(수렴)하게 된다. Leraning rate decay epoch는 주어진 데이터를 ..

Optimization Algorithms(3) - Gradient Descent [내부링크]

1. Gradient Descent with Momentum Gradient descent example 빨간 점을 global minimum이라고 본다면 일반적인 Gradient Descent를 수행했을 때는 파란색 그래프와 같은 양상이 나타날 것이다. 우리는 위 아래로 흔들리는 폭을 줄이면서도 보다 큰 보폭으로 global minimum에 접근할 수 있도록 하는 방법을 떠올려볼 수 있다. 대표적인 방식 중 하나가 Momentum이다. 이는 gradient descent를 수행하는 매 step이 독립적인 것이 아니라 현재 step에 이전 step이 영향을 주는 것으로 받아들이는 방식이라고 볼 수 있다. 즉, exponentially weighted averages를 구하는 방식처럼 현재항과 이전항에 가..

Optimization Algorithms(2) - Exponentially Weighted Averages [내부링크]

1. Exponentially Weighted Averages (지수 가중 평균) Temperature in London 영국의 1년 날씨를 날짜에 따라 표시한 그래프다. 전날과 오늘의 관계를 수식적으로 표현하여 그래프가 그려지는 양상을 예측하고자 한다. Exponentially weighted averages V_t 로 표현된 수식이 Exponentially wieghted averages에 대한 수식이다. 이는 과거의 비중(가중치)을 베타로 표현하고 오늘의 비중을 세타로 표현하고 있다. 따라서 베타가 아주 큰 경우에는 과거의 기록을 더 많이 반영하게 되므로 그래프가 완만한 초록색 선으로 표현된다. 대신 말 그대로 과거의 기록을 더 많이 반영하기 때문에 실제 데이터보다는 약간 우측에 치우치게 된다. 반..

Optimization Algorithms(1) - Mini-batch [내부링크]

1. Mini-batch Gradient Descent Match vs. mini-batch gradient descent 많은 양의 데이터를 처리해야 하는 딥러닝은 연산 시간을 줄이는 여러 기법들이 필요하다. 그 중 하나가 여러 데이터를 일부씩 묶어 계산하는 방식인 mini-batch gradient descent이다. 만약 처리해야 하는 데이터의 개수가 5,000,000개라면 어떻게 될까? 이 많은 양의 데이터를 한꺼번에 forward하고 backward 하는 것은 엄청난 computing power를 필요로 할 것이고, 이것이 뒷받침된다고 하더라도 썩 좋은 시간적 효율을 보이진 못할 것이다. 따라서 우리는 이를 일정 개수(위 예에서는 1,000개)씩 묵어서 연산을 시도하기로 한다. 이때 묶인 각 b..

Quiz & Assignments [내부링크]

1. Practical aspects of Deep Learning (Quiz) examples의 수에 따라 train/dev/test set을 어떤 비율로 split 해야 하는가? 10,000개 정도로 작을 경우 : 60/20/20 20,000,000개 정도로 많을 경우 : 99/0.5/0.5 training, test set은 같은 source로부터 구해진 것을 사용해야 한다. 그렇지 않을 경우 학습이 제대로 이루어지지 않는다. 'high bias' 문제가 있는 경우 hidden layer 숫자를 늘려(deeper network) 해결을 시도할 수 있다. 'high variance' 문제의 경우 더 많은 train data를 확보하거나 regularization을 시도할 수 있다. Data augme..

Setting Up your Optimization(2) [내부링크]

4. Numerical Approximation of Gradients Checking your derivative computation 미분의 정의를 통해 접선의 기울기를 계산하는 과정을 이해해보자. x = θ일 때 아주 작은 값 ε = 0.01을 더하고 빼서 함수값을 구해본다. 본래 기울기는 'y의 변화량 / x의 변화량' 이므로 {f(θ+ε) - f(θ-ε)} / 2ε 이 기울기가 된다. 이는 함수 f(θ) = θ^3을 미분하여 구한 g(θ) = 3θ^2와 근사한 결과다. 실제 값을 대입해보면 미분값이 3.0001로 기존 도함수 g를 통해 구한 3과 0.0001 차이가 나는 것을 알 수 있다. 계산은 이와 같은 방식으로 이뤄진다. 이때의 error는 O(ε^2)로 표현된다. 이를 기존 미분 정의와 ..

Setting Up your Optimization Problem [내부링크]

1. Normalizing Inputs Normalizing training sets x = [x1, x2] feature로 구성된 training set의 분포를 살펴보자. 우선 모든 x를 x의 mean(평균)만큼 빼준다(subtract). 그러면 두 번째 그림처럼 x1 feature 축에 대해 분포가 정렬된다. 다음으로는 x의 분산을 구해 x 전체를 분산으로 나눠준다. 이때 이미 평균을 뺀 값이므로 x 제곱의 평균을 구하는 것이 바로 분산이 된다. (분산을 구하는 기존 식은 'x-m' 제곱의 평균을 구하는 것이기 때문) 그러면 마지막 그림처럼 분산을 반영한 분포로 변형된다. 이러한 변형을 train set에 대해 적용했다면 test set에도 동일한 평균과 분산값으로 변형을 해줘야 한다. 즉, 두 s..

Regularizing your Neural Network [내부링크]

1. Regularization Logistic regression High variance 문제가 있을 때 데이터를 늘리기 어려운 상황이라면 regularization을 적용할 수 있다. loss function으로 구한 cost function J를 최소화하는 logistic regression을 예시로 들어 내용을 살펴보자. 기존의 logistic regression에서는 J가 prediction과 target 간의 차이를 평균낸 것으로 정의된다. 여기에 lambda라는 일종의 hyper parameter와 전체의 개수 m으로 나눠준 값을 계수로 갖는 L2 norm을 곱한 값을 더해준다. 쉽게 말하면 '특정 계수와 L2 norm을 곱한 값의 평균'을 더해준다는 것이다. 이때 두 변수 w와 b에 대해..

Setting up your Machine Learning Application [내부링크]

1. Train / Dev/ Test sets Applied ML is a highly iterative process ML은 다양한 분야에 적용되고 있다. NLP, CV, Speech Recognitoin, 등.. 그러나 어떤 분야든지간에 Model에 대한 적합한 hyper parameter를 한 번에 구할 수는 없다. 전문가라 하더라도 위와 같은 cycle을 반복적으로 돌리면서 모델을 적절히 변경할 수 있게 되는 것이다. Train/dev/test sets 우리는 전체 데이터셋을 흔히 train/dev/test 셋으로 나눈다. train셋에서는 말 그대로 학습을 진행하고, dev셋에서는 우리가 학습시킨 알고리즘과 다른 알고리즘을 cross하여 비교할 수 있으며 test셋에서는 최고의 성능을 보였던 모..

2022(하반기) 삼성전자 DX SCSA 전형 GSAT 합격후기 [내부링크]

2022년 11월 1일 화요일 삼성전자 DX SCSA GSAT 합격 지난 10월 22일(토) 삼성 직무적성검사에 응시했습니다. 아무래도 삼성 GSAT의 컷을 궁금해하실 분들을 위해 결과적으로 말씀드리면, "수리 16/19, 추리 23/25, 총 39/44 (정답/풀이)" 난이도는 상반기 대비 쉬웠음 입니다. 저는 토요일 오전 시간대에 시험에 응시했는데, 확실히 상반기에 응시했을 때보다 난이도가 훨씬 낮다고 느꼈습니다. 특히 수리 영역을 풀이한 개수가 평균적으로 많이 올랐더라구요. 지난 번에는 18개 이상을 풀이하면 굉장히 잘 한 편에 속했는데, 이번에는 19개 혹은 20개를 풀이한 사람도 꽤나 많아 보였습니다. 다른 분들 풀이한 개수를 들어보면 40개 초중반도 적지 않게 있었구요. 참고로, 가채점 결과 ..

Non-linear regression [내부링크]

1. General non linear least squares non-linear function의 최솟값을 찾는 과정을 식으로 전개하면 위와 같다. 이때도 마찬가지로 loss에 해당하는 카이제곱을 구해야한다. 그러나 변수가 여러 개이므로 주어진 y식을 각 변수에 대해 편미분한 결과를 파악해두어야 한다. linear regression를 수행할 때와 마찬가지로 카이제곱 벡터가 0이 될때까지 기존의 값에서 카이제곱의 미분한 결과를 반복적으로 빼주어야 한다. 이때 dy / da_k는 y가 a1, a2로 구성된 식이므로 이를 계산하기 전 식을 나타내고 있다. 2. Fitting a non-linear function (Quiz) 비선형 함수를 적용할 수 있는 데이터 분포 고르기 카이제곱 식에 대해 올바른 설..

Into to linear regression [내부링크]

1. Simple linear regression 어떤 데이터들을 잘 설명하는 직선을 구할 수 있다. 데이터들을 기반으로 어떤 직선이 데이터의 분포를 가장 잘 표현할 수 있는지에 대해 고민하는 것이다. 이 직선으로 예측된 값이 실제값과 얼마나 떨어져있는지 확인하기 위한 식이 카이제곱이다. 실제값에서 예측값을 빼서 제곱한 값들을 모두 더한 것이 된다. 이 값이 곧 오차(loss)를 의미하게 되고 이를 최소화해야 우리가 원하는 최적의 직선을 얻을 수 있게 된다. 결국 이 오차를 끝까지 최소화하면 그 값은 0이 될 것이다. 따라서 카이제곱을 구성하는 변수인 m과 c에 대해 편미분을 수행하여 카이제곱벡터를 구하고, 이것이 영벡터와 같아지는 때가 언제인지 구하면 된다. 위 과정에서 c와 m에 대한 식을 정리할 수..

Lagrange multipliers [내부링크]

1. Constrained optimisation 이전에 다루었던 함수 f(x,y) = x^2y에 대해서 contour를 생성하면 오른쪽 그림과 같다. 우리는 gradient vector를 통해 최댓값을 갖는 x,y 지점에 이를 수 있다. 이때 최댓값에 이를 수 있는 x,y 쌍의 범위를 원의 형태로 제한(constraint)할 수 있고 이를 함수 g로 표현 가능하다. 위에서 살펴본대로 f의 값을 최대화하기 위해 제약(constraint) g 함수를 이용할 수 있다. 이때 두 벡터가 만나는 지점을 구하는 방정식에 Lagrange multiplier가 이용된다. 위 방정식을 통해 Lagrange multiplier를 구하고 이를 기존의 식에 다시 대입하여 x와 y의 식을 재구성한다. 결과적으로 f를 최대화,..

Fitting as minimisation problem [내부링크]

1. Welcome to Module 5! 최적의 평균과 분산을 구하는 방법에 대해 생각해보자. 어떤 함수에 대해 임의의 x값을 대입하고 그 미분계수를 통해 반복적으로 최적의 x값을 찾아나갈 수 있다. 이때 함수값을 미분계수로 나눈 값을 빼는 방식을 '반복(iterate)'하면 된다. 이런식으로 과정을 반복하는 방법을 'Newton-Raphson'이라고 부른다. 시작값을 잘못 설정하면 위와 같이 closed loop에 갇힐 수 있다. 혹은 너무 작은 미분계수를 갖는 점에서 시작하면 x의 변화량이 거의 없어서 의미 없는 학습을 반복하게될 가능성이 있다. 2. Newton-Raphson in one dimension (Quiz) 도함수 구하기 다항함수에 대해 미분을 수행한 결과를 직접 입력하면 된다. New..

Multivariable Taylor Series [내부링크]

1. Linearisation 기존 Taylor Series에서는 p로부터 얼마나 떨어져있는지를 기준으로 표현이 되었다. 이제 p를 델타 p 그리고 이것을 델타 x로 치환하여 표현한다. 실제 미분을 여러번 수행하면 그 결과값은 굉장히 작아지기 때문에 error로 보고 O로 묶어서 표현할 수 있게 된다. 심지어 f(x)에 대한 표현을 바꾸어 도함수를 기준으로 식을 정리하는 것도 가능하다. 2. Taylor series - Special cases (Quiz) odd function(기함수)은 원점대칭이고 even function(기함수)는 y축 대칭이다. 점근선이 존재하는 지점에서는 근사식을 구할 수 없다. 만약 그런 원함수에 대해 근사를 구하게 되면 approximation이 함수의 일부를 무시하거나 점..

Taylor series for approximations(2) [내부링크]

1. Power series details 기존과 달리 Taylor series에서는 x=0이 아닌 어떤 point에서 접근해도 상관 없다고 본다. 따라서 여기서는 x = p로 가정하고 접근한다. Taylor Series에서 p = 0을 대입하면 기존의 Maclaurin Series와 동일해지는 것을 확인할 수 있다. 위에 정리된 식처럼 만약 2차식을 미분하게 되면 미분 과정에서 계수 때문에 2!이 분모가 될 것임을 짐작 가능하다. 이 과정을 일반화한 것이 Taylor Series가 된다. 2. Applyting the Taylor series (Quiz) 여러 f(x)에 대해 x = 0(Maclaurin) 또는 x = p(Taylor) 의 근사 함수를 구하는 문제가 출제된다. 이를 위해서 분수함수의 미..

Taylor series for approximations(1) [내부링크]

1. Building approximations 1) 이 cooking book을 읽는 사람과 내가 비슷한 오븐을 쓴다고 가정 2) 치킨도 비슷하다고 가정 다른 조건들이 유사하다고 가정하면 변수들을 줄일 수 있고 이를 통해 간단한 식으로 근사할 수 있게 된다. 2. Power series Truncated series 주어진 함수 g의 변수를 하나씩 늘려나가면서 기존의 그래프와 얼마나 유사한지 확인하고 있다. 변수를 늘릴수록 기존의 그래프와 유사해지는 것을 볼 수 있다. 이런 방식으로 쭉 늘어놓은 함수의 모음을 truncated series라고 부른다. 3. Matching functions and approximations (Quiz) 기존의 그래프를 보고 적절한 근사를 고르는 문제들이 출제되어 있다...

Quiz & Programming Assignment [내부링크]

1. Key Concepts on Deep Neural Netoworks (Quiz) 어려운 내용은 아닌데 다 맞히기가 어려워서 몇 번이고 시도했다... cache는 forward를 진행하는 과정에서 backward 계산을 편리하게 하기위해 저장하는 변수값이다. 이때 저장되는 Z는 미분계수를 구하는데 사용된다. parameter에는 W,b가 포함된다. activation function, number of layers 등은 hyper parameter에 속한다. vecotirzation을 통해 explict한 for-loop를 줄일 수 있지만 각 layer에 대한 계산을 수행하는데 있어서는 for-loop를 제외할 수 없다. Z,A를 각 layer에 대해 계산하는 알맞은 코드를 고른다. 결과적으로 Z[1..

Deep Neural Network(3) [내부링크]

1. Parameters vs Hyperparameters What are hyperparameters? 최종적으로 parameter인 w,b를 결정하는데 영향을 주는 것들이다. learning rate 알파, iterations 횟수, hidden layer 개수 L, hidden unit 개수 n, activation function 종류 등 Applied deep learning is a very empirical process hyper parameter를 조정하면서 cost값이 작아지는 조건을 찾아나가는 것이다. 2. What does this have to do with the brain? Forward and backward propagation 교수님은 deep learning의 구조가 인..

Deep Neural Network(2) [내부링크]

1. Why Deep Representations? Intuition about deep representation CNN에서 이미지 분석 과정은 위와 같다. 작은 것들을(edge) 먼저 분석하고 이것으로부터 점점 큰 조각들을 합쳐 원래의 모습을 구성한다. speech recognition에도 적용 가능하다 low level의 speech sound phonemes words sentence, phrase Circuit theory and deep learning Informally: There are functions you can compute with a "small" L-layer deep neural network that shallower networks require exponentially..

Deep Neural Network(1) [내부링크]

1. Deep L-layer Neural Network What is a deep neural network? logistic regression은 shallow하다고 표현된다. 이와 대비되는 deep neural network는 그 성능히 월등히 좋은 것으로 알려져있다. Deep neural network notation 위 network는 input layer를 제외한 네 개의 layer로 구성된 4 layer NN이다. 기호의 위첨자로 사용하는 기호 l 에는 layer의 숫자가 들어간다. n은 각 layer의 unit 수를 나타낸다. a는 각 layer의 activation을 나타낸다. a[l]은 l번째 layer의 z에 l번째 활성화함수 g를 적용한 결과다. a[0] 는 input feature인..

PCA algorithm [내부링크]

1. Steps of PCA 1) subtract the mean from the data and send it at zero to avoid numerical problems 2) divide by the standard deviation to make the data unit-free 3) compute the eigenvalues and eigen vectors of the data covariance matrix 4) can project any data point onto the principal subspace 2. PCA in high dimensions 3. Steps of PCA 대충 pass 하려고 했는데 결국 거의 다 풀어낸..퀴즈였다..ㅜㅜ PCA는 결국 고차원의 데이터를 낮은 차원..

PCA derivation(2) - 복습必 [내부링크]

1. Finding the coordinates of the projected data determined the coordinates of the optimal projection with respect to the orthonormal basis that spans our principal subspace 2. Reformulation of the objective 3. Lagrange multipliers 4. Finding the basis vectors that span the principal subspace 출처: Coursera, Mathematics for Machine Learning: PCA, Imperial College London.

PCA derivation(1) - 복습必 [내부링크]

1. Vector spaces Group이라는 개념과 vector space에 대한 설명이 나와있는 pdf를 공부하도록 되어있다. 굉장히 불충분한 설명과 함께 다양한 기호들이 나열되어 있어서 무슨 뜻인지 하나도 이해가 되지 않는다. 아무래도 서칭을 통해 따로 공부할 필요가 있겠다... 2. Orthogonal complements 만약 n차원 벡터공간 V에 대하여 k차원 부분공간 W가 V에 속할 때, W의 orthogonal complement는 V에 속하는 (n-k)차원 부분공간이다. 그리고 W에 orthogonal하는 모든 V의 vector를 포함한다. 3. Problem setting and PCA objective 높은 차원에 있는 벡터를 낮은 차원의 벡터로 표현하는 것이 목표. 이때 최대한 re..

AI and Society(3) [내부링크]

1. Conclusion What you've learned What is AI? Building AI projects Building AI in your company AI and society 앞으로 공부를 더 해라! 2. Week 4 Quiz 현재 AI 기술의 한계 편향, 차별, adversarial attack에 취약, 설명하기 어려움 인공지능의 기술에 대해 지나치게 낙관/비관적이면 안된다. bias를 예방하는 방법 포괄적이고 덜 편향된 데이터 사용하기 bias를 평가하는 시스템 도입 기술적 해결 adversarial attacks yes대신 no로 인식하게 만들기 이미지를 미묘하게 바꾸고 개 대신 고양이로 인식하게 하기 스티커를 추가하여 원래 사물을 인식하지 못하게 만들기 각 지역별로 강점있는 ..

AI and Society(2) [내부링크]

1. Adverse uses of AI DeepFakes Synthesize video of people doing things they never did Undermining of democracy and privacy Oppressive surveillance Generating fake comments Spam vs. anti-spam and fraued vs. anti-fraud 2. AI and developing economies Developing economies 기술이 발전함에 따라 개발도상국들은 선진국이 이미 거쳐갔던 단계를 반복할 필요가 없다. 성장 단계에 있어서 일종의 '도약'이 가능한 것이다. How developing economies can build AI US and Chin..

AI and Society(1) [내부링크]

1. A realistic view of AI Goldilocks rule for AI Toop optimistic: Sentient / super-intelligent AI killer robots coming soon Too pessimistic: AI cannot do everything, so an AI winter is coming Just right: AI can't do everything, but will transform industries Limitations of AI Performance limitations Explainability is hard (but sometimes doable) Biased AI through biased data Adversarial attacks on..

Quiz & Programming Assignment [내부링크]

1. Shallow Neural Networks (Quiz) X는 각 column별로 하나의 training example인 matrix이다. tanh를 activation function으로 사용하면 그 범위가 -1부터 1까지이므로 데이터를 0을 중심으로 모이게한다. 따라서 학습을 보다 간단하게 만들어버려서 제대로 학습이 이루어지지 않는다. binary classification의 output layer activation function은 sigmoid가 적절하다. axis = 0을 기준으로 sum을 하면 행이 날아가고 열이 남는다.(행을 합쳐서 각 열별로 표시) 반대로 axis = 1을 기준으로 sum을 하면 열이 날아가고 행이 남는다.(열을 합쳐서 각 행별로 표시) weight와 bias를 0으로..

Shallow Neural Network(3) [내부링크]

1. Gradient Descent for Neural Networks 두 개의 hidden layers가 존재하는 neural network에 대해 gradient descent의 parameters는 네 개이다. w1, b1, w2, b2. 이를 cost function의 매개변수로 넣고 이 값들을 최적화하여 cost의 값을 최소화하는 것이 최종 목표이다. 값을 업데이트 하는 과정은 cost function을 각 변수로 편미분하여 구한 미분계수를 빼는 방식으로 진행한다. 이 반복은 적절한 값이 찾아질 때까지 계속된다. Formulas for computing derivatives forward/back propagation 의 공식이 나열되어있다. forward propagation은 앞에서 다룬 내..

Shallow Neural Network(2) [내부링크]

1. Activation Functions 이제는 activation function으로 sigmoid를 사용하지 않는다. 거의 모든 경우에 대해서 tan h를 activation function으로 사용하는 것이 더 좋기 때문이다. tan h는 sigmoid와 달리 non-linear한 내용에도 적용될 수 있다. 단, output layer의 activation function으로 sigmoid를 사용하는 것이 tan h를 사용하는 것보다 편리한 경우가 예외로 존재한다. 이때는 y(label)이 0 또는 1로 구분되는 이진분류인 경우인데, y hat의 범위가 -1에서 1인 것보다 0에서 1로 나오는 것이 더 좋기 때문이다. 따라서 hidden layer의 activation function은 sigmo..

Shallow Neural Network(1) [내부링크]

1. Neural Networks Overview What is a Neural Network? 앞선 강의들에서 배운 내용을 정리한 것이다. 입력 x를 가중치 w와 곱하고 편향 b를 더한 것을 z로 정의한다. 이 z에 시그모이드 함수를 적용하면 output이 된다. 만약 layer가 깊어지면 z가 새로운 입력이 되어 새로운 가중치 및 편향과 계산을 하게 된다. 변수의 우측 상단에 적힌 [ ] 안의 숫자는 몇 번째 layer에 속하는지를 나타내고 있다. 빨간색 화살표는 back-propagation을 뜻한다. 2. Neural Network Representation hidden layer: 어떤식으로 학습이 이루어지는지 우리가 직접 볼 수 없는 layer다. logistic regression에서는 a가..

Projections(2) [내부링크]

1. Full derivation of the projection 앞의 강의에서 다룬 투영행렬을 구하는 과정이 증명되어있다. 사실 강의에서 이미 그 과정을 보여주었기 때문에 특별한 내용은 없었다. 2. Example: projection onto a 2D subspace 3D 공간에 속하는 벡터 x를 2D의 부분공간에 대해 투영한 벡터를 구하는 예시다. 결과적으로 투영벡터도 부분공간 u의 기저벡터 b1,b2의 linear combination으로 표현되는 것을 확인할 수 있다. 3. Project 3D data onto a 2D subspace 3차원 공간의 벡터 x를 2차원 평면으로 표현되는 부분공간에 대해 내린 투영벡터를 구하는 문제(3개) 강의에서 설명된 공식을 잘 이용해야 한다. B.T와 B를 곱..

Projections(1) [내부링크]

1. Projection onto 1D subspaces 벡터 u의 기저벡터는 b이다.(다른 말로 표현하면 벡터 b로 표현할 수 있는 subspace 내에 u가 존재한다) 따라서 어떤 scalar lamda를 기저벡터 b에 곱해주면 파이 x u(x)가 되는 것이다. 이때 벡터 u 위의 벡터 x와 가장 가까운 지점을 구하면 x에서 u에 대해 수선을 내려야 한다. 수선의 정의는 직교(orthogonal)한다는 것이다. 따라서 벡터 b와 수선을 표현하는 벡터의 내적은 0이 된다. 위 정의를 이용하여 식을 정리해보면 람다에 대해 내적과 norm으로 정의할 수 있게 된다. 결과적으로 (b x b.T) / norm(b)^2 은 projection matrix가 된다. 2. Example: projection ont..

Neural Networks [내부링크]

1. Simple neural networks neural network를 이루는 작은 원 하나를 neuron이라고 한다. 그 구조는 활성화 함수인 시그모이드에 가중치 w와 입력 a를 곱하고 b를 더한 값을 집어넣는 것이다. 만약 입력이 여러개이고 이것이 여러개로 구성된 다음층으로 전달될 때는 위와 같은 구조를 가진다. 1번 layer에 속하는 neuron들이 0번 layer에 속하는 neuron들과 모두 연결되어있다. 그리고 그 연결은 위에서 설명한 가중치와의 곱 + 편향으로 구성된다. 이를 일반화하면 단순한 숫자(scalar)의 곱이 아닌 벡터의 곱으로 이해할 수 있게 된다. 가중치벡터 W와 입력벡터 a를 곱하고 여기에 편향벡터 b를 더한 결과를 시그모이드 함수에 집어넣는 것이다. 다양한 일들을 수행..

[프로그래머스] [3차] 압축(Python) [내부링크]

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/17684?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(msg): # {A:1,B:2, ... , Z:26} 딕셔너리 생성 alphas = {chr(x):x-64 for x in range(65,91)} results = [] tmp = '' # 쌓아갈 문자열 cur = 27 # 딕셔너리 번호 for i in range(len(msg)): tmp += msg[i] # 확인하는 ..

2022(하반기) 삼성전자 DX SCSA 전형 서류 합격후기 [내부링크]

2022년 10월 5일 수요일 삼성전자 DX SCSA 서류 합격 서류 제출은 지난 9월 14일 마감이었고, 한 달이 조금 지나지 않아서 서류 결과가 발표되었다. 사실 상반기에 도전해보면서 여기에 목을 매고 있는게 그닥 좋은 것도 아니라는걸 느꼈고, 이후 응시하는 GSAT에 필요한 역량도 많이 부족한 것 같지는 않아서 그냥 아예 까먹고 있었다. 오늘도 친구가 말해주지 않았으면 아예 모르고 지나갈뻔했다 ㅋㅋ.. 나는 삼성전자 DX에 SCSA 전형으로 지원했다. 컴퓨터공학 비전공자를 뽑아서 6개월 간 교육을 통해 성장시키고 3급 신입으로 채용 연계하는 전형이다. (내용만 들어도 경쟁률 엄청나게 치열할게 뻔한 그런 전형이다. 실제로 지난 상반기에 이 전형을 지원하며 알게된 사람들은 모두 떨어졌다) 개발에 관심을..

Chain rule intro. [내부링크]

1. Multivariate chain rule t에 관한 n개의 함수 x로 구성된 함수 f를 t에 대해 미분하는 것은 chain rule로 표현 가능하다. 이때 편미분벡터와 미분벡터를 내적하는 꼴이 된다. 2. More multivariate chain rul..

Building AI in Your Company(3) [내부링크]

1. Survey of major AI application areas (optional) Computer Vision Image classification/Object recognition Face recognintion Object detection Image segmentation Tracking Natural Language Processing..

Building AI in Your Company(2) [내부링크]

1. AI Transformation Playbook (Part 1) AI Transformation Playbook 1) Execute pilot projects to gain momentum 2) Build an in-house AI team 3) Provide broad AI training 4) Develop an AI strategy 5) De..

Building AI in Your Company(1) [내부링크]

1. Case study: Smart speaker Steps to process the command : AI pipeline 1) Trigger word/wakeword detection Audio : "Hey device" 2) Speech recognition Audio : "tell me a joke" 3) Intent recognition..

[BOJ] 17626 : Four Squares [DP](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/17626 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로..

Programming Assignments [내부링크]

1. Nerual Network Basics(Quiz) y hat은 input x가 주어졌을 때 y = 1일 확률이다. logistic loss는 y와 y hat 값이 주어지면 공식을 통해 그 값을 구할 수 있다. boradcasting은 두 행렬의 사이즈 중 일치하는..

Python and Vectorization(2) [내부링크]

1. Broadcasting in python Boradcasting example 세 개의 행 중에서 Carb가 차지하는 비중을 for-loop 없이 해결하는 코드를 작성해보자. 각 열의 값들을 모두 더하여 구한 값으로 각 원소들을 나눠준 뒤 100을..

Python and Vectorization(1) [내부링크]

1. Vectorization gradient descent를 통해 값을 update하는 과정의 속도를 빠르게 만들어주는 방식이 vectorization이다. 단순히 python의 for loop를 사용하는 것이 아니라 numpy의 dot를 통해 vector인 w와 x..

Logistic Regression as a Neural Network(2) [내부링크]

1. More Derivative Examples 미분은 x축의 방향으로 아주 조금 움직였을 때 y축에서의 변화가 어떻게 될지 보여준다. 위 예시에서는 a의 값이 0.001(아주 작은 값)만큼 움직이면 f(a)는 얼만큼 움직이게 되는지..

프로그래머스 인공지능 데브코스 4기 최종 합격 후기!!(비전공자) [내부링크]

2022.09.01 작성 2022.09.01(토) 프로그래머스 인공지능 데브코스 4기 합격 발표 금일 오후 2시 메일로 최종 합격이 안내되었다. 솔직히 모집 인원도 많지 않고(30명) 해놓은게 없어서 자신이 없었는데 어..

프로그래머스 인공지능 데브코스 4기 코딩 테스트 응시 후기(비전공자) [내부링크]

2022.08.27 작성 금일 오후 2시부터 4시 50분까지 코딩 테스트에 응시했다. 이번 기수 일정은 다음과 같다. 자세한 일정과 자격 조건, 수업 내용 등은 아래 링크에서 직접 확인 가능하다. https://school.prog..

네이버 부스트캠프 AI Tech 4기 최종 합격 후기!!(비전공자) [내부링크]

2022.08.26 작성 2022.08.26(토) 부스트캠프 AI Tech 4기 최종 합격 금일 오후 2시 합격 메일이 도착했다. 처음에는 메일 확인이 안돼서 설마 불합격인가 싶어 쫄렸는데 다행히도 합격이었다. 휴.. 드디어 제대로..

네이버 부스트캠프 AI Tech 4기 2차 테스트 응시 후기(비전공자) [내부링크]

2022.08.20 작성 1. 시험 난이도 - 평이 1차 테스트와 달리 2차 테스트에서는 8문항이 출제되었다. 그리고 1차 테스트에 비해서 난이도가 낮았던 것 같다. 코딩 테스트 경험이 적어서 일반적인 경우에 포함..

네이버 부스트캠프 AI Tech 4기 1차 테스트 합격 후기(BAT)(비전공자) [내부링크]

2022.08.11 작성 2022.08.11(목) 부스트캠프 AI Tech 4기 1차 테스트 합격 발표 오늘 오후 6시, 네이버 부스트캠프 AI Tech 4기 1차 테스트 결과가 발표 되었다. 여느 발표와 마찬가지로 여러 사람들의 똥줄..

네이버 부스트캠프 AI Tech 4기 1차 테스트 응시 후기(BAT)(비전공자) [내부링크]

2022.08.04 작성 2022.08.04(목) 부스트캠프 AI Tech 4기 1차 테스트 오늘은 내 생일이다. 동시에 부스트캠프 1차 테스트를 치른 날이기도 하고. 뭐 생일이야 매년 찾아오지만, 테스트를 내년에 또 보고 싶..

네이버 부스트캠프 AI Tech 4기 지원(비전공자) [내부링크]

2022.07.27 작성 2022.07.26(화) 네이버 부스트캠프 AI Tech 4기에 kdt 전형으로 지원 상반기의 취업 준비에서 대실패를 거둔 이후, 어떤 교육기관에서 프로그래밍을 배우면 좋을지 많은 고민이 있었다. 특히..

[SSAFY 8기] 싸피 8기 불합격 후기(비전공자) [내부링크]

2022.06.29 작성 6/29(수) 오후 2시, 문자로 Interview 결과를 확인하라는 안내를 받았다. 사실 면접 후기에서 남겼던 것처럼 싸피에서 공부할 내용과 내가 생각하는 방향성이 너무 달라서 좋은 결과가 있을 거..

[SSAFY 8기] 싸피 8기 면접 후기(비전공자) [내부링크]

2022.06.21 작성 6/20(월) 오후에 응시한 SSAFY 8기 면접 후기를 작성하고자 한다. SSAFY 8기 면접은 멀티캠퍼스 역삼에서 진행됐고 오후 4시 10분까지 집결해야 했다. 멀티캠퍼스는 건물에 들어서는 것부터 건물..

[SSAFY 8기] 싸피 8기 서류, 적성 합격 후기(비전공자) [내부링크]

2022.06.11 작성 비전공자로서 개발 관련 교육을 들을 수 있는 여러 기관 중 역시 삼성만한 곳이 없는 것 같다. 애초에 코딩테스트를 치를 수 있는 지식이 갖춰지지 않은 상태에서 지원은 가능한 다른 곳들과 달리..

Logistic Regression as a Neural Network(1) [내부링크]

1. Binary Classification binary classification(이진 분류)는 위와 같이 '~이다, ~가 아니다'로 구분하는 것이 예가 될 수 있다. 이미지는 Red, Green, Blue 세 가지의 정보를 담고 있는 세 개의 채널로 구성된..

2022(상) 삼성전자 DX SCSA 전형 불합격 후기 [내부링크]

2022.06.29 작성 6/29(수) 오후 6시, 삼성 계열사의 면접 최종 결과가 발표되었다. 면접을 보고 온지도 벌써 4주째였고 지원서를 넣은 시점을 기준으로는 세 달이 훌쩍 넘는 시간이 지나서야 최종 결과가 발표..

2022(상) 삼성전자 DX SCSA 전형, 면접 후기 [내부링크]

2022.06.05 작성 지난 5/27(금) GSAT 합격 발표 이후, 약 일주일 정도 후인 6/3(금)에 면접을 보게 되었다. 나는 GSAT를 응시한 5/14(토) 다음 날 부터 바로 면접을 준비했다. 개인적으로 다른 사람들과 같이..

2022(상) 삼성전자 DX SCSA 전형, 온라인 GSAT 합격후기 [내부링크]

2022.06.04 작성 4/19(화) 서류 합격 발표를 확인하고 약 한달 후인 5/14(토) 오전9시에 GSAT를 응시했다. 삼성은 GSAT를 온라인으로, 수리논리/추리 두 개의 영역으로 실시한다. 각 영역 별로 30분, 20/30 문..

2022(상) 삼성전자 DX SCSA 전형, 서류 합격후기 [내부링크]

2022.06.04 작성 3/20(일) 삼성전자 DX 부문 SCSA 전형으로 지원한 후, 4/19(화)에 서류 합불이 발표되었다. (서류 마감은 3/21(월)이었을텐데 어차피 바꿀 것도 없고 그냥 미리 제출한 것으로 기억한다) 서류 제..

정신 없는 시험 준비 [내부링크]

2022.05.10 작성 서류 합격 여부를 확인하기 전부터 공부를 시작했더니 굉장히 오랜 기간에 걸쳐서 시험 준비를 하고 있는 기분이 든다. 처음 생각으로는 코딩 공부도 병행하면서 해야지 했는데, 막상 문제들을 풀..

서류 통과 [내부링크]

2022.04.22 작성 지난 4월 19일, 처음으로 지원한 서류가 통과됐다. 주변 친구들의 도움을 많이 받아 작성했던 자소서 덕분이라고 생각했다. 발표되는 그 시점에도 나는 이후의 시험을 대비해서 공부를 하고 있었..

HTML 찍먹은 여기까지..! [내부링크]

2022.04.13 작성 코딩을 처음 접하는 입장에서 입문하기에 적절한 난이도라는 HTML 을 지금까지 공부해 보았다. 약 한 달 정도 되는 시간 동안 HTML과 CSS(일부)에 대해 공부한 내용을 블로그에 정리하며 복습했다..

GSAT 온라인 모의고사 [내부링크]

2022.04.11 작성 해커스잡 GSAT 온라인 모의고사 vol.6 에 응시했다 지난 첫 모의고사 풀이 이후, 해커스 GSAT 통합 기본서에 있는 모의고사 2회 분을 시간 재서 풀어보았었다. 그 외에도 유형 별로 구분 되어있는..

GSAT 첫 모의고사 [내부링크]

2022.03.29 작성 3.19(토)에 해커스 교재로 GSAT 공부를 처음 시작한 이후, 해커스에서 첫 온라인 모의고사를 치렀다 10일 동안 해커스 GSAT 통합 기본서로 유형을 나름 잘 다지고, 모르는 부분들을 강의로 잘 채..

첫 채용지원 [내부링크]

22.03.20(일) 내 생에 첫 채용 지원을 한 날 삼성전자 SCSA 전형, DX부문 지원 인적사항부터 성적입력(하나하나 다 입력해야 해서 엄청 귀찮음), essay까지 빠뜨린 것은 없는지, 더 잘 기입할 수는 없었는지 몇..

Inner products(2) [내부링크]

1. Inner product: angles and orthogonality 두 벡터 사이의 각도 내적을 통해 정의할 수 있다. cos w(두 벡터 사이각 크기) = 내적 / (norm(x) * norm(y)) 이는 결국 두 벡터가 가리키는 방향의 유사도(simliar..

Inner products(1) [내부링크]

1. Inner product: definition 내적은 이와 같이 정의된다. 벡터공간 v에 존재하는 세 벡터 x,y,z를 예시로, 내적의 세 가지 큰 특징을 알 수 있다. 1) Bilinear: 벡터의 합으로 표현된 벡터와 다른 벡터의 내적..

Dot product [내부링크]

1. Dot product 두 벡터가 있을 때, 두 벡터의 1) 길이 2) 사이의 각도 3) 거리를 구하기 위해서는 벡터 공간의 기하학적 특징(geometric properties in a vector space)과 관련이 있는 inner product(내적)가 필..

The sandpit game [내부링크]

1. The Sandpit 간단한 함수에 대해서는 값이 최대가 되는 좌표가 어디인지 파악하기가 쉽다. 위 그래프는 Jacobian vector를 통해 표현한 것이다. 그러나 대부분은 이렇게 간단하지는 않다. 앞서 다루었던 복잡..

Jacobians - vectors of derivatives [내부링크]

 1. The Jacobian J is a vector pointing the direction of steepest slope of this function. J는 여러 개의 변수로 구성된 함수 f의 각 변수에 대해 편미분한 것들을 모아놓은 벡터이다. x,y축에 따른 z의..

Moving to multivariate [내부링크]

1. Variables, constants & context time은 독립변수, speed는 종속변수다. 즉, speed가 time이 커짐에 따라 변화하는 것이지 그 반대가 아니라는 뜻이다. 우리는 이처럼 그래프가 지니는 의미를 파악하고 미분을..

Building AI Projects(3) [내부링크]

1. Working with an AI team Specify your acceptance criteria 95%의 정확도를 어떻게 측정할 것인가? 이전에는 AI팀의 퍼포먼스를 측정하기 위해 제공되는 데이터셋을 test set이라고 했다. 이는 통계적으로 확..

Building AI Projects(2) [내부링크]

1. Every job function needs to learn how to use data Sales 인공지능의 발전은 sales 분야를 비롯한 여러 분야에 변화를 일으키고 있다. Data science를 기반으로 해서 machine learning은 이런 분류 작업을..

Building AI Projects(1) - Workflow of a machine learning project [내부링크]

1. Workflow of a machine learning project Example: Speech recognition Key Steps of a machine learning project 1) Echo / Alexa 1. Collect data 실제로 돌아다니면서 사람을 만나 대화 내용을 기록하는 것..

Linear transformation of datasets [내부링크]

1. Effect on the mean 원래의 dataset에 2를 더하면 mean(평균)에 어떤 변화가 생길까? 아주 간단하게 평균값이 2만큼 더 커진 것을 확인할 수 있다. 원래의 dataset에 2를 곱하면 mean(평균)에 어떤 변화가..

Variances and covariances [내부링크]

1. Variance of one-dimensional datasets D1 데이터셋에 포함되는 데이터들은 파란색 점으로, D2 데이터셋에 포함되는 데이터들은 빨간색 사각형으로 표현된다. 두 데이터셋은 같은 평균값을 가지지만 그 분포가..

Mean values [내부링크]

1. Mean of a dataset 데이터가 늘어날수록 흐려진다(blur) mean은 데이터를 대표하는 값으로 데이터셋에 포함되지 않는 값이 mean이 될 수 있다. 어떤 데이터셋의 모든 원소를 더하고 그 개수로 나누어주면 me..

Introduction to Deep Learning [내부링크]

1. What is a Nerual Network? Housing Price Prediction size라는 input x를 받아 계산한 결과가 price라는 output y가 되고, 이것을 그래프로 표현한 것이다. input을 output으로 만들어주는 계산 과정이 포함..

Time saving rules [내부링크]

1. Product rule A(x)를 원래의 보라색 사각형을 제외한 나머지 세 부분을 합친 것으로 정의한다. 델타 x가 0으로 수렴하면 흰색 사각형의 면적은 0이 되므로 사라진다. 남은 초록색과 노란색 사각형의 면적에 대..

Gradients and derivatives [내부링크]

1. Rise Over Run( rise: y축 증가량, run: x축 증가량) horizontal line(수평선)은 속도가 동일함을 의미한다. accleration: local gradient of a speed-time graph, function of time in graph deceleration: n..

Back to basics: functions [내부링크]

1. Functions Fuction A relationship between some inputs and an output Calculus Study of how these functions change with respect to their input variables And it allows you to investigate and manipul..

Non-technical explanation of deep learning(Part 1,2 optional) [내부링크]

Part 1 Demand prediction nueral network의 가장 기본적인 형태 price, shipping cost, marketing, material 이라는 네 개의 input이 각각 affordability, awareness, perceived quality라는 요인에 영향을 주..

More examples of what machine learning can and cannot do [내부링크]

Self-driving car Can do: 센서를 통해 사물을 감지하고 다른 차가 어딨는지 파악할 수 있다. Cannot do: 사람이 뻗은 손 모양을 보고 이것이 stop, hitchhiker, bike turn left signal인지 구분할 수 없다. 인간..

What machine learning can and cannot do [내부링크]

Supervised Learing Anything you can do with 1 second of thought, we can probably now or soon automate. Exmaple(email) The toy arrived two days late, so I wasn't able to give it to my niece for her b..

What makes an AI company? [내부링크]

A lesson from the rise of the Internet Internet Era: shopping mall + website != internet company A/B testing short iteration time decision making pushed down to engineers and other specialized roles..

The terminology of AI [내부링크]

Machine learning vs. data science data science: 어떤 의사결정을 해야할지에 도움을 주는 분야 ex) 어떤 집을 사야하는가? science of extracting knowledge and insight from data machine learning filed of..

Machine Learning / What is data? [내부링크]

Machine Learning Supervised Learning Input(A): email, audio, English... Output(B): spam, text transcript, Chinese... Application: spam filtering, speech recognition, machine translation Why now? A..

Introduction [내부링크]

Introduction AI가 창출하는 가치는 매년 증가하고 있다. 다양한 분야에서 폭풍 성장중 Demystifying AI ANI(aritificial narrow intelligence) smart speaker, self-driving, car ... AGI(artificial general int..

Eigenvalues and eigenvectors: Assessment [내부링크]

1. Eigen values and eigenvectors 3,4 차원의 고윳값과 고유벡터는 계산기를 통해 구한다. loop가 존재하면 다른 페이지로 가는 것이 아니라 cycle을 형성하게 된다. loop가 두 개 존재하면 작은 행렬로 나눠서..

Making the PageRank algorithm [내부링크]

1. Introduction to PageRank 페이지 A,B,C,D의 연결 관계를 나타내는 행렬 L의 각 행을 구한 것이다. 연결된 페이지의 수를 분모로 삼아 다른 페이지로 이어질 확률을 벡터로 표현한다. 모든 페이지의 랭크가..

When changing to the eigenbasis is really useful [내부링크]

1. Changing to the eigenbasis T라는 사상이 주어진 벡터를 어떻게 이동시키는지는 매번 행렬 T를 곱해보아야 알 수 있다. 그러나 시행 횟수 n이 커질수록 이 계산은 매우 복잡해지므로 간단하게 만들고자 한다...

Getting into the detail of eigenproblems [내부링크]

1. Speical eigen-cases 1) uniform scaling 모든 벡터가 고유벡터 2) rotation non-zero pure rotation이 존재 적어도 몇몇의 고유벡터를 가지는 180도 pure rotation 정확히 반대 방향을 가리키고 있지만 여전히..

What are eigen-things? [내부링크]

1. What are eigenvalues and eigenvectors? eigenvectors(고유벡터) horizontal, vertical vectors are special horizontal vectors' length was unchanged 이 벡터들의 길이를 eigenvalue(고윳값)라고 한다. 이..

Recognising mapping matrices and applying these to data [내부링크]

1. The Gram-Schmidt process 선형독립인지 확인하고 싶으면 행렬식이 0인지 아닌지를 구해볼 것 위와 같은 방식으로 n개의 벡터를 정규화 하면 된다. 주어진 벡터를 이용해서 서로 수직인 벡터들을 만드는 방법..

Making Multiple Mappings, deciding if these are reversible [내부링크]

Orthogonal matrices 행과 열을 바꾼 것을 전치행렬이라고 한다. 전치행렬과 기존 행렬의 곱이 단위 행렬이 되는 경우, 이때의 행렬을 orthogonal matrix라고 한다. 즉, 전치행렬이 곧 역행렬이 되는 경우이고,..

Matrices transform into the new basis vector set [내부링크]

1. Matrices changing basis 검정색은 나의 기저벡터를, 파란색은 곰돌이의 기저벡터를 의미한다. 곰돌이의 기준을 나의 기준으로 표현하거나 그 반대를 시도한다. 곰돌이의 벡터를 나의 좌표계에서 표현하고,..

Matrices as objects that map one vector onto another; all the types of matrices [내부링크]

1. Introduction: Einstein summation convention and the symmetry of the dot product the summation convention gives you a quick way of coding up these sorts of operations 행렬곱의 규칙 두 행렬의 곱..

5.4. QR법 / 5.5. 역반복법 [내부링크]

5.4.1. QR법의 원리 QR법의 반복 고윳값을 구하고 싶은 행렬을 QR 분해한다. 분해한 결과를 역순으로 곱한다. 곱한 결과를 또 QR 분해한다. 분해한 결과를 역순으로 곱한다. 이를 반복하면 A_k는 A_0의 고윳값을..

5.3. 거듭제곱의 원리 [내부링크]

5.3.1. 절댓값 최대의 고윳값을 구하는 경우 적당히 고른 초깃값 벡터 v에 대해 A를 반복하여 곱한다. A의 절댓값 최대의 고윳값에 대응하는 고유벡터 x_1의 방향에 다가가는 것을 이용한다. 고윳값의 절댓값이 1..

5.2. 야코비법 [내부링크]

5.2.1. 평면 회전 전치행렬이 곧 역행렬이 된다. 5.2.2. 평면 회전에 의한 닮은변환 야코비법 이를 반복시행하면서 대각행렬에 다가가는 알고리즘 f(A)가 0으로 향한다는 것은 A가 대각행렬로 향한다는 것을 의..

5.1. 개요 [내부링크]

5.1.1. 손 계산과 차이점 특성방정식의 랭크를 정밀하게 구하는 것 자체가 어렵다 P^-1AP = 대각행렬 또는 상삼각행렬 꼴로 변형한다. 우변 행렬의 대각성분이 고윳값이 된다. 이 경우 고차랭크방정식을 푸는 과정..

4.7. 대각화할 수 없는 경우 [내부링크]

4.7.1. 먼저 결론 폭주 판정의 결론은 거의 변하지 않는다. 단, 특수한 경우 미묘한 문제가 발생한다. 4.7.2. 대각까지는 못하더라도 - 요르단표준형 대각화할 수 없는 정방행렬 A라도 대각에 가까운 요르단 표준..

Special matrices and Coding up some matrix operations [내부링크]

1. Determinants and inverses Determinant 공간이 얼마나 넓어졌는지를 나타내는 지표 2차원 기준 평행사다리꼴의 면적이 위 예시에 동일하다는 것을 확인할 수 있다. 즉, 행렬식이 같은 경우다. 2차원의 행렬식..

Matrix Inverses [내부링크]

1. Solving the apples and bananas problem: Gaussian elimination Inverses: solving the apples and bananas problems and Gaussian Elimination 역행렬이란? 문제를 간단하게 풀 수 있게 만들어 준다. 가우스..

Matrices in linear algebra: operating on vectors [내부링크]

1. How matrices transform space 행렬의 곱을 단위벡터와의 곱으로 변환할 수 있다. 이때 분배법칙을 이용한다. 2. Types of matrix transformation possible sorts of changes we can do with a matrix 3. Com..

4.6. 연속시간 시스템 [내부링크]

연속시간 시스템에 대해서도 폭주를 판정해야 한다. 4.6.1. 미분방정식 미분방정식 미지의 함수와 그 미분을 포함하는 등식을 보고, 이 등식이 성립하는 함수를 답하는 것 상미분방정식 하나의 변수 t의 함수 x(..

4.5. 고윳값, 고유벡터 [내부링크]

4.5.1. 기하학적인 의미 고유벡터: A를 곱해도 신축만 되고, 방향은 변하지 않는다. 고윳값: 이 신축률(몇 배가 되는가)이 고윳값이다. 실행렬 A에서 복소수가 고윳값, 고유벡터인 경우가 있다. 4.5.2.고윳값, 고..

4.4. 대각화할 수 있는 경우 [내부링크]

4.4.1. 변수변환 우선은 구체적인 예 x1, x2에 대한 식을 y1, y2로 치환하여 재배치 따라서 x1, x2도 폭주한다. 행렬로 바꿔 말하면 일반화 1. 힌트로 주어진 행렬 C를 사용하여 변수 x(t)를 다른 변수 y(t) = C..

4.2. 1차원의 경우 / 4.3. 대각행렬의 경우 [내부링크]

4.2. 1차원의 경우 어떤 문제에 대해 우선 쉬운 경우를 생각한다. 일반적인 경우도 변환하여 쉬운 경우로 귀착시킨다. 4.3. 대각행렬의 경우 단, a1, ... , an 중 하나라도 1보다 크면 폭주한다. 출처: 히라오카..

4.1. 문제 설정: 안정성 [내부링크]

마법의 상자 - input에 대응하는 output이 나온다. 제어 대상의 모델 신호 전달의 모델 예측 필터 자기회귀모델 이산시간: 어제, 오늘, 내일 연속시간: 미분방정식 적용 폭주 여부 현재값이 이전값보다 증가하는..

3.7. 역행렬을 LU 분해로 구하다 / 3.8. LU 분해의 순서 (2) 예외가 발생한 경우 [내부링크]

역행렬 실제로는 A의 역행렬 자체가 아니라 '어느 벡터 y에 대한 A의 역행렬 곱하기 y'를 구한다. 이는 연립일차방정식 Ax = y 를 푼 것으로 해석된다. 3.8.1. 정렬이 필요한 상황 대각 성분 중 0인 값이 존재하..

3.4. LU 분해의 순서 (1) 보통의 경우 / 3.5. 행렬식을 LU 분해로 구하다 / 3.6. 일차방정식을 LU 분해로 풀다 [내부링크]

3.4. LU 분해의 순서 앞 절의 설명한 LU 분해의 순서를 형식적으로 풀어낸 과정 분해를 했더라도 L, U를 각각 행렬로서 다루면 메모리를 비효율적으로 사용하게 된다. 비어 있는 장소나 1로 정해져 있는 장소 등..

3.3. LU 분해 [내부링크]

3.3.1. 정의 주어진 행렬 A에 대해 A를 하삼각행렬 L과 상삼각행렬 U의곱으로 나타내는 것 분해해서 무엇이 좋은가 처음부터 그런 분해가 되는가 분해된다고 해도 계산량은 어떤가 3.3.2 분해하면 뭐가 좋나요?..

3.1. 서론 3.2. 준비 운동: 덧셈, 뺄셈, 곱셈, 나눗셈 [내부링크]

3.1.1. 수치 계산을 얕보지 마라 주의할 사항 수치의 정도는 유한하다. 계산량 및 메모리 소비량을 줄여야 한다. 3.1.2. 이 책의 프로그램에 대해 소스코드를 내려받을 수 있다. 학습용으로 제공되는 것이고 본방..

[BOJ] 9019 : DSLR [DFS/BFS](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십..

[BOJ] 11659 : 구간 합 구하기 4 [누적 합](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연..

[BOJ] 1780 : 종이의 개수 [분할](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라..

[BOJ] 11286 : 절댓값 힙 [우선순위 큐](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아..

[BOJ] 1389: 케빈 베이컨의 6단계 법칙 [그래프 탐색](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구..

[BOJ] 1992 : 쿼드트리 [분할](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터..

Changing the reference frame [내부링크]

1. Changing basis Coordinate System(좌표계) 벡터는 기저 벡터의 합으로 표현된다. 이 벡터를 다른 기저 벡터의 합으로 표현할 수 있다. 단, 이 기저 벡터들은 서로 직교해야 한다(orthogonal to each other) 직..

Finding the size of a vector, its angle, and projection [내부링크]

1. Modulus & inner product 벡터를 단위벡터로 표현하기 벡터는 length(길이)와 direction(방향)을 가진다. 단위벡터 i,j 로 벡터 r을 표현할 수 있다. i 와 j 의 상수배를 제곱하고 루트를 씌우면 r의 크기(길..

Vector [내부링크]

1. Operation with vectors 집을 사는 상황을 가정 120평, 침실 2개, 화장실 1개, 집값 30만 이와 같은 현실 문제를 해결하는데 도움이 되는 개념이다 ex) Machine Learning, Data Science 덧셈(addition) 방향을..

The relationship between machine learning, linear algebra, and vectors and matrices [내부링크]

1. Motivations for linear algebra 바나나와 사과를 사러가는 쇼핑 상황 두 개로 연립 방정식을 구성(simultaneous equations) 선형 변수(linear coefficinets)를 가진 것으로 이해하기 행렬 문제로 변환할 수 있..

[BOJ] 5525 : IOIOI [문자열](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/5525 5525번: IOIOI N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I..

[BOJ] 6064 : 카잉 달력 [정수론](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T..

[BOJ] 1107 : 리모컨 [브루트포스](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다.  둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다...

[BOJ] 5430 : AC [구현/덱](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acm..

[BOJ] 16928: 뱀과 사다리 게임 [DFS/BFS](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의..

[BOJ] 14500 : 테트로미노 [브루트포스](Python) [내부링크]

문제 링크 https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된..