<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>becky-kwon.log</title>
        <link>https://velog.io/</link>
        <description>배우고 공부하고 기록하는 것을 멈추지 않는다.</description>
        <lastBuildDate>Thu, 06 Nov 2025 04:49:57 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>becky-kwon.log</title>
            <url>https://velog.velcdn.com/images/becky-kwon/profile/4228e21d-1b3f-4be1-9c51-3d770b7b8b2e/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. becky-kwon.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/becky-kwon" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[궁금해서써보았다] LangGraph - Agentic AI 시스템 구축해보기]]></title>
            <link>https://velog.io/@becky-kwon/%EA%B6%81%EA%B8%88%ED%95%B4%EC%84%9C%EC%8D%A8%EB%B3%B4%EC%95%98%EB%8B%A4-LangGraph-Agentic-AI-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0</link>
            <guid>https://velog.io/@becky-kwon/%EA%B6%81%EA%B8%88%ED%95%B4%EC%84%9C%EC%8D%A8%EB%B3%B4%EC%95%98%EB%8B%A4-LangGraph-Agentic-AI-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0</guid>
            <pubDate>Thu, 06 Nov 2025 04:49:57 GMT</pubDate>
            <description><![CDATA[<p>졸업까지 1학기가 정도 남은 시점에서 이미 졸업을 위한 논문은 충분히 썻고, 4편을 지금까지 submit 했기에 물론 아직 accept 은 2편 이지만, 이젠 뭘 할까 고민이 크다.</p>
<p>논문을 읽다가 영감이 좀 안 떠오르는 감도 있고, 11월이면 진행하던 현대차 산학과제를 마무리하면서, 한 2,3 달간은 정말 하고 싶은 거 해보고, 개인적으로 요즘 오픈소스 툴을 좀 써보고 싶다. 그리고 읽고 싶은 논문을 다시 좀 읽어보려고 한다.</p>
<p>11월 현차 과제를 진행할때는 Multi-modal RAG, AgenticRAG 쪽을 많이 봤었는데 다른 걸 좀 더 보고 싶다는 생각이 크다.</p>
<p>그래서 일단 해보고 싶은거를 좀 찾다가 &quot;TeddyNote&quot; 포스트를 링크드인에서 보고 좀 해보고 싶어서 유튜브 영상도 찾아보았고, 그 분의 LangGraph 실습을 좀 해보려고 한다. </p>
<p>솔직히 벌써 부터 재밌다 ㅋㅋㅋ Agentic 오픈소스 툴을 쓰는 거 너무 해보고 싶었다 ㅋㅋㅋ</p>
<hr>
<h1 id="langgraph를-활용한-agentic-ai-시스템-구축-에이전틱ai-밋업-2025-q1">LangGraph를 활용한 Agentic AI 시스템 구축 (에이전틱AI 밋업 2025 Q1)</h1>
<p><a href="https://youtu.be/edsshVochqM?si=ykcVfr3oizzWxN4K">유튜브 링크</a>에 들어가보면 확인할 수 있다.</p>
<p>하나씩 따라해볼 수 있게 핸즈온을 공개해두셨는데, 너무나도 감사함을 테디노트님에게 전하고 싶다. 꼭 이 영상을 보길 바란다🙏🏻 정말 좋은 영상이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Document RAG 환경 세팅] NVCC, CUDA, Python, Torch, Flash-Attn, Faiss-gpu 설치를 한 번에 하면서 겪은 온갖 오류와 최적의 환경 세팅 방법 제시]]></title>
            <link>https://velog.io/@becky-kwon/Document-RAG-%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85-NVCC-CUDA-Python-Torch-Flash-Attn-Faiss-gpu-%EC%84%A4%EC%B9%98%EB%A5%BC-%ED%95%9C-%EB%B2%88%EC%97%90-%ED%95%98%EB%A9%B4%EC%84%9C-%EA%B2%AA%EC%9D%80-%EC%98%A8%EA%B0%96-%EC%98%A4%EB%A5%98%EC%99%80-%EC%B5%9C%EC%A0%81%EC%9D%98-%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85-%EB%B0%A9%EB%B2%95-%EC%A0%9C%EC%8B%9C</link>
            <guid>https://velog.io/@becky-kwon/Document-RAG-%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85-NVCC-CUDA-Python-Torch-Flash-Attn-Faiss-gpu-%EC%84%A4%EC%B9%98%EB%A5%BC-%ED%95%9C-%EB%B2%88%EC%97%90-%ED%95%98%EB%A9%B4%EC%84%9C-%EA%B2%AA%EC%9D%80-%EC%98%A8%EA%B0%96-%EC%98%A4%EB%A5%98%EC%99%80-%EC%B5%9C%EC%A0%81%EC%9D%98-%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85-%EB%B0%A9%EB%B2%95-%EC%A0%9C%EC%8B%9C</guid>
            <pubDate>Tue, 22 Jul 2025 04:41:37 GMT</pubDate>
            <description><![CDATA[<p>나의 7월 3주차의 실망과 절망과 화와 열받음을 한 번에 담아 표현한 사진이다.</p>
<p><img src="https://content.api.news/v3/images/bin/79df93d34ccfe6d4878c16f8325231db" alt=""></p>
<p>한 3,4일 간 <a href="https://arxiv.org/pdf/2504.09795">CVPR 2025 Main으로 accept된 DocumentRAG 방법론인 VDocRAG</a> 을 서버에 불러와서 기업 RAG과제를 하던 중 환경 설정에 이마가 뜨거워지도록 에러를 때려잡았던 날이 있었다. 진짜 버리고 싶을 정도였고,, 그리고 가장 이 삽질과 사태의 문제는 저 VDocRAG 논문의 저자들이 github에 CUDA를 제대로 명시하지 않은게 컸다.</p>
<p>오죽하면 3일차에 고생고생하다가 ㅋㅋㅋㅋㅋㅋㅋ</p>
<p>저자들 github Issue에 CUDA가 당최 몇 버전을 쓰냐는 질문도 내가 직접 했을 정도다... 물론 CVPR 2025 된거 축하해요~ 라는 선플도 썼다 ㅋㅋ</p>
<p>결론적으로는 CUDA 버전을 내가 직접 다른 패키지와 python 버전들을 보면서 하나하나 역 추적 했는데 그 과정에서 앞으로 무슨 설치를 하든 확실한 Route가 생겼고 정리해두려고 한다.</p>
<h1 id="💡first-is-cuda-docker-second-is-python-using-venv-third-is-in-torch-and-other-libs">💡First is CUDA Docker, Second is Python using venv, Third is in Torch, and other libs.</h1>
<blockquote>
<p>💡 <strong>무조건 CUDA 버전을 맞추는 Docker 세팅을 먼저 하고, NVCC -V 찍었을 때 확실히 CUDA 버전이 정확히 찍히는지 확인하고, 그 다음에 Venv 가상환경에서 python을 up-down해서 맞추고, 그 다음에 torch, flash-attn, faiss, transformer 등을 설치해야 한다.</strong></p>
</blockquote>
<hr>
<p>내 모든 환경은 일단 docker에서 했고, 대부분의 연구자들이 docker환경일 거다.</p>
<h1 id="1️⃣-cuda-버전-확인">1️⃣ CUDA 버전 확인</h1>
<p>이 과정이 제일 중요하다. </p>
<p>CUDA 버전과 연결된 package가 워낙 많다보니 잘 찾고 결정해서 설치해야하는데, 일반적으로 많은 git hub들은 CUDA 버전까지 명시해준다..
하지만 내가 사용하려는 Document RAG 모델은 CUDA 버전 명시가 없어서... 난 requirements.txt 파일의 다른 패키지 버전을 보고 CUDA를 역 추적했다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/ffebfbe0-c1b2-498e-8428-25de856a43a5/image.png" alt=""></p>
<p>이런거 만 봐도 알겠지만....  CUDA 신중하게 잘 골라야 한다.</p>
<p>나의 경우는 requirements.txt가 다음과 같았다.</p>
<blockquote>
<p>deepspeed==0.14.5
accelerate==0.34.0
datasets==2.20.0
flash-attn==2.6.3
huggingface-hub==0.30.1
numpy==1.26.4
peft==0.11.1
pillow==10.4.0
torch==2.4.0
torchvision==0.19.0
tqdm==4.66.4
transformers==4.40.2
wandb==0.17.7
pyserini==0.44.0
faiss-gpu==1.7.2</p>
</blockquote>
<p>✅ 일단 flash-attn은 torch, python에 의존성이 ㅈㄴ 강하고 
✅ faiss-gpu는 python 버전이 너무 높으면 안된다는 github issue 들이 많고(python &lt;=3.10 권장)
✅ 그리고 내가 쓰는 GPU서버의 Driver에서 CUDA stable 권장 버전은 12.3 임</p>
<p>이 것들 고려해서 삽질하다보니,, 
<strong>CUDA 12.1</strong>이 내 환경에 맞다는 걸 이 <a href="https://github.com/pytorch/pytorch/blob/main/RELEASE.md#release-compatibility-matrix">사이트</a>에서 따져보게 되었다. 그럼 12.1 CUDA가 설정된 docker 컨테이너를 파주면 된다.</p>
<h1 id="2️⃣-docker-image-pull-및-docker-컨테이너-생성">2️⃣ Docker Image Pull 및 Docker 컨테이너 생성</h1>
<p>CUDA 버전도 맞으면서 python 버전도 맞고 torch 버전까지 다 맞는 도커를 찾을 수도 있겠지만 생각보다 docker hub에 가면 괜찮은것도 있고, 실제로 pull해서 docker run하면 제대로 안되는 것도 많다. 그래서 <strong>CUDA 버전 정도만 일단 딱 맞는지 보고 그걸 까는걸 추천한다.</strong> python이나 torch는 버전이 맞으니까라는 생각으로 CUDA가 안 맞는게 굳이 그 도커이미지를 받아서 CUDA toolkit 버전을 추가로 올리려고 하는 행위는 하지 않는게 좋다. 내가 2일 정도 그 짓을 하다가 시간 다 보냈는데 CUDA를 toolkit만 따로 올리고 하는 걸 이 <a href="https://xoft.tistory.com/86">포스팅</a> 보고 했는데 분명 CUDA toolkit를 올렸는데 flash-attn 설치를 하는데 온갖 CUDA관련 오류가 다 뜬다. 그냥 CUDA는 재조정이 답이 없다... </p>
<blockquote>
<p>그러니 CUDA 버전을 확실히 Docker Image로 맞추자!!!</p>
</blockquote>
<h2 id="docker-hub에서-docker-이미지-찾기">Docker Hub에서 Docker 이미지 찾기</h2>
<p><a href="https://hub.docker.com/">Docker Hub</a> 에서 CUDA 버전을 검색해서 찾으면 된다. 여기서 팁은 CUDA 12.1이면 검색어로 <code>cuda121</code> 이렇게 검색해야한다. 그 여러 도커 이미지를 pull, 그리고 이상해서 remove를 하다가 괜찮은 거 하나 발견했다. </p>
<p>이 <a href="https://hub.docker.com/r/isseyice/boltz-cuda121-torch231">도커 이미지</a> 괜찮은거 같다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/7cf7d1f8-8034-42e1-a796-c3c32471b4b7/image.png" alt=""></p>
<p>뱌로 <code>docker pull isseyice/boltz-cuda121-torch231</code> 해서 도커 이미지 다운을 했다. 이게 bash, python, cuda 등등 제대로 세팅이 된 친구들을 크기도 좀 크고 설치가 좀 걸리는게 당연하다. 아래 그림처러 설치가 쫘라락 된다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/3787f418-214a-4a93-bfec-0d4abd5a4844/image.png" alt=""></p>
<p>도커 이미지가 다운 되면, 아래처러 docker 컨테이너를 rag_becky로 하나 만들어주었다. 저 이미지로 컨테이너 만든거다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/04e6885b-5228-4f8b-b985-36c4ef78f673/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/a71a53a9-2d62-439b-8b1e-2946bebfe661/image.png" alt=""></p>
<p>제대로 만들어지면 이렇게 컨테이너가 이미지가 보일거다.</p>
<p>헤딩 컨테이너를 실행해서 새창에서 열어본다.</p>
<p>그리고 CUDA 버전이 내가 그렇게 바라던 12.1 이 맞는지 아래처럼 확인해보면, 정확히 12.1 의 CUDA가 깔끔하게 세팅된게 확인된다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/17636bf0-7b8e-45b4-acce-80d5231b03f8/image.png" alt=""></p>
<h1 id="3️⃣-python-version-updown-가상환경">3️⃣ Python version Up/down (가상환경)</h1>
<p>주로 요즘에 CUDA를 맞춰서 도커 이미지를 받으면 적절한 python 이 이미 들어가 있다. 그래서 내가 설치한 친구는 python이 몇인가 찍어보니 3.11.17 이었다...</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/ec572a02-305a-471d-87f5-0ea46b89b84e/image.png" alt=""></p>
<p>웬만하면 그냥 넘어갈거 같은데,,, RAG 모델들의 많은 모델들이 faiss-gpu 라이브러리를 쓴다. 이 라이브러리가 python 3.10이 이하가 권장이고 3.11부터 error reporting이 많았다...  그래서 가상환경을 만들면서 이 python버전을 좀 잡아주고자 하였다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/a001984a-0311-471e-8cdd-b09802882881/image.png" alt=""></p>
<p>다행이도 내가 다운 받은 도커 이미지에 conda가 설치되어있어서 가상환경을 쉽게 conda 명령어로 만들 수 있었다. 위에처럼 myenv 라는 가상환경을 만들었고, 바로 뒤에 파이썬 버전을 3.10으로 확실히 잡아주었다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/7db5197c-a6d5-46a3-a4cd-4e3699547906/image.png" alt=""></p>
<p>그러면 가상환경이 파지면서 온갖 관련 라이브러리가 설치되고, 위 화면처럼 마지막에 가상환경을 activate하라는 명령어가 보이면 제대로 가상환경이 파진거다.</p>
<p>그럼 가상환경을 activate 해보겠다.
<img src="https://velog.velcdn.com/images/becky-kwon/post/f22f3c82-608a-435f-8b69-6465904cebb2/image.png" alt=""></p>
<p>제대로 활성화가되사 <code>(base)</code>가 <code>(myenv)</code>로 바뀐게 보일거다. 내 가상환경으로 들어왔다는 거다. 그리고 그 안에서 조정해준 python 버전을 다시 찍어보면 </p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/529878f6-29ad-453f-b379-b87541ae7d0e/image.png" alt=""></p>
<p>이렇게 가상환경으로 설정한 python 3.10 버전이 맞게 깔렸다.</p>
<h1 id="4️⃣-적절한-torch-설치">4️⃣ 적절한 Torch 설치</h1>
<p>지금까지 일단 상황은 여기까지 온거다.</p>
<blockquote>
<p>✅ CUDA 12.1 
✅ Python 3.10
❌ Torch 등 라이브러리</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/0ffed080-b73a-4a12-ba58-cfdfc9242436/image.png" alt=""></p>
<p><code>pip list</code>로 설치된 라이브러리를 보면 뭐가 없다... 걍 이건 기둥만 있는데,, 여기에 이제 여러 패키지를 설치해줘야 한다.</p>
<p>우선적으로 만든 가상환경에 적절한 torch를 설치해야한다. torch의 경우 내가 가져오려는 논문 저자들이 requirement.txt에서 <code>torch==2.4.0 torchvision==0.19.0</code> 라고 명시를 했기에 <a href="https://pytorch.org/get-started/previous-versions/">pytorch 공식 홈</a>에서 torch install 코드를 찾으면 된다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/7c19bbe1-15dd-495a-b663-d864dcae4b33/image.png" alt=""></p>
<p>저 공식홈에서 conda안에서 설치하는 코드를 해주면 되고, 내 <code>CUDA0-12.1</code>과 <code>torch-2.4.0</code> 에 해당하는 명령어를 찾아서 bash 터미널에 실행하면 된다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/925246ee-56ce-4462-afdb-c92e51b08b9a/image.png" alt=""></p>
<p>그 결과 Torch와 torch 관련 라이브러리가 한참 설치된다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/a62478d9-65fb-4438-8309-d82861da2456/image.png" alt=""></p>
<p>원하는 버전이 정확히 설치되었다.</p>
<h1 id="5️⃣-최종-requirementstxt-설치">5️⃣ 최종 requirements.txt 설치</h1>
<p>이제 거의 다왔다 여기까지 온거다.</p>
<blockquote>
<p>✅ CUDA 12.1 
✅ Python 3.10
✅ Torch 2.4.0
❌ Project 요구 추가 패키지 설치 (flash-attn, transformer 등 등 )</p>
</blockquote>
<p>CUDA, Python, Torch 정도 맞춰 놨으면 기타 파일은 무리 없이 쭉 install 될거다. 
내 프로젝트 디렉토리로 와서 git에서 반든 프로젝트 파일에 있는 requirements를 설치해줄건데, <code>pip install -r requirements.txt</code> 해서 쫙 설치해주면 된다.</p>
<hr>
<p>4-5일정도 여러 삽질하느라 힘들었는데 내가 이 세팅을 내 로컬, 연구실 서버 다 해봤지만, 이 route가 가장 베스트다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[2025 ACL in Vienna 준비] 논문 읽기1]]></title>
            <link>https://velog.io/@becky-kwon/2025-ACL-in-Vienna-%EC%A4%80%EB%B9%84-%EB%85%BC%EB%AC%B8-%EC%9D%BD%EA%B8%B01</link>
            <guid>https://velog.io/@becky-kwon/2025-ACL-in-Vienna-%EC%A4%80%EB%B9%84-%EB%85%BC%EB%AC%B8-%EC%9D%BD%EA%B8%B01</guid>
            <pubDate>Sat, 12 Jul 2025 15:26:59 GMT</pubDate>
            <description><![CDATA[<p>ACL Industry Track에 냈던 <a href="https://arxiv.org/abs/2503.20252">논문</a>이 정말 운 좋게 되었다. Main Track은 아니지만, 내가 1저자로 작성한 첫 논문이 accept 되어서 매우 좋다. Logical Anomaly를 VLM을 통해서 탐지하고, 그 이상의 이유를 자연어로 설명할 수 있는 논문이다. 이 논문은 아이디어를 내고 사실상 2,3달만에 논문이 나왔다. Prompting이 많이 필요했던 논문이었고 사전학습된 좋은 vlm 을 가져다 쓰는게 성능면에서 가장 주요했다. 본 논문이 accept 됨과 동시에 비슷한 시기에 내가 작성한 현대자동차 미래기술 연구과제 공모가 합격되어 우리 연구실과 과제를 대략 8개월 정도 하게 되었다. 과제는 RAG과제이고, 예전부터 multi-modal RAG를 공부하고 싶었기데 잘 되었다고 본다. 이 과제를 내가 하나부터 마지막까지 따 왔기에 교수님이 ACL 학회를 다녀올 수 있게 해주셨다. 그래서 7월 중순말에 비엔나를 가게 되었고, 떠나기전에 9월 ICLR를 목표로 DocumentRAG를 분야를 꼭 내고 싶다는 목표를 가지고 있다. 5,6월에 정신적으로 좀 힘들었어서 연구를 하는데 어려움이 있었고, 이제는 좀 뭔가 힘있게 밤새서 하고 싶다는 생각이 다시 들기 시작했다. </p>
<p>ACL에 가기전에 생긴 목표가 있는데, 2025 ACL에 나온 모든 Retrieval 논문을 다 보고 가려는 거다. 일단 내 연구에 도움이 되려는 게 크지만, 도대체 Main을 쓰는 분들은 어떤 분이실까 궁금해서 이다. Poster/Oral 상관없이 너무 궁금하다. 그래서 이번에 비엔나 학회에서 꼭 돌아다니면서 찾아보고 싶다.</p>
<p>그래서 velog에 이번 ACL 2025에 나온 Retrieval 논문을 빠짐없이 정리하려고 한다. 내 주제에서 벗어난 경우, 좀 먼 얘기는 걍 간단하게 적고 관심있는 건 좀 깊게 적겠다.</p>
<p>참고로, </p>
<ul>
<li><code>retriev</code>가 들어간 논문(<code>Retriever</code>, <code>Retrieval</code>이 들어간 제목)은 99편 정도 되는데, 여기의 모든 제목을 다 하나씩 열어서 보되, 몇개만 구체적으로 정리할거다.</li>
<li>이게 끝나면 ICLR 2025, CVPR 2025를 좀 보려고 한다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[📖논문 리뷰] Zero-shot-CoT: Large Language Models are Zero-Shot Reasoners (2022)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Zero-shot-CoT-Large-Language-Models-are-Zero-Shot-Reasoners-2022</link>
            <guid>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Zero-shot-CoT-Large-Language-Models-are-Zero-Shot-Reasoners-2022</guid>
            <pubDate>Sat, 21 Dec 2024 16:40:58 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/26134bfd-e912-48c0-bc63-fa95c7353fd6/image.png" alt=""></p>
<hr>
<p><strong>본 논문은 NeurIPS 2022 Main Conference Track에 publish 된 논문으로 아마 많은 분들이 &quot;Zero-Shot CoT&quot;라고 알고 있는 논문이다.</strong></p>
<p>✒️ <a href="https://proceedings.neurips.cc/paper_files/paper/2022/file/8bb0d291acd4acf06ef112099c16f326-Paper-Conference.pdf">Large Language Models are Zero-Shot Reasoners(⭐NeurIPS-2022-Main)</a></p>
<p>Zero-shot-CoT의 시작 논문으로 정말 똑똑하면서 기발한 논문이다. 단순히 “Let’s think step by step”이라는 문장을 정답 직전에 추가해주는 것만으로도 LLM의 성능이 크게 향상되는 것을 발견한 논문이다. </p>
<p>비록 task-specific하게 human annotator가 추가한 기존의 CoT 논문, 즉 Few-shot-CoT를 뛰어넘지는 못했다. 하지만, Few-shot Learning보다 훨씬 강력한 성능을 보였고, LLM이 Zero-shot으로도 Reasoning을 수행하는 능력이 상당히 높다는 것을 확인하게 해준 논문이다.</p>
<p>사실상 내용은 너무 간단해서, 금방 정리해볼 수 있었다.</p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[[📖논문 리뷰] Automatic Chain of Thought Prompting in Large Language Models (2024)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Automatic-Chain-of-Thought-Prompting-in-Large-Language-Models-2024</link>
            <guid>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Automatic-Chain-of-Thought-Prompting-in-Large-Language-Models-2024</guid>
            <pubDate>Sat, 21 Dec 2024 16:34:57 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/8280f263-d64a-49a9-b506-3a0cdcc9fd37/image.png" alt=""></p>
<hr>
<p><strong>본 논문은 ICLR 2023 poster에 publish 된 논문으로 아마 많은 분들이 최근에 봤을 논문이다.</strong></p>
<p>✒️ <a href="https://openreview.net/forum?id=5NTt8GFjUHkr">Automatic Chain of Thought Prompting in Large Language Models(⭐ICLR-2023-Poster)</a></p>
<p>아마 <a href="https://arxiv.org/pdf/2205.11916">zero-shot CoT 논문</a>을 읽어 본 사람이라면 지금 소개하는 논문도 굉장히 재밌게 봤을 것이다. 또한, 굉장히 의미있는 논문으로 벨로그에 정리할 필요성이 꼭 있는 논문이라고 본다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[📖논문 리뷰] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (2022)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Chain-of-Thought-Prompting-Elicits-Reasoning-in-Large-Language-Models-2022</link>
            <guid>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Chain-of-Thought-Prompting-Elicits-Reasoning-in-Large-Language-Models-2022</guid>
            <pubDate>Mon, 09 Dec 2024 14:53:07 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/696db66b-6a7b-4eac-bdc0-3c47197ba53e/image.png" alt=""></p>
<p>최근에 Prompting, Chain-of-Thought를 활용한 Few-shot reasoning을 통한 논문을 내려고 작업하고 있다. 그러면서 제대로 꼼꼼히 읽으려고 보고 있고, 정리해 보았다.</p>
<p>*<em>본 논문은 NeurIPS 2022 Main Conference Track에 publish 된 논문으로 아마 많은 분들이 CoT라고 알고 있는 논문이다. *</em></p>
<p>✒️<a href="https://proceedings.neurips.cc/paper_files/paper/2022/file/9d5609613524ecf4f15af0f7b31abca4-Paper-Conference.pdf">Chain-of-Thought Prompting Elicits Reasoning in Large Language Models(⭐NeurIPS-2022-Main)</a></p>
<p>43페이지가 되는 Appendix까지 매우 자세하게 정리된 논문으로서 공부하는 분들은 하나하나 번역하면서 끝까지 읽어보길 추천한다. 특히 Appendix에 실제로 어떻게 few-shot exampler text(위의 그림에서 파랑색 부분)을 구성했는지 다 공개해서 정말 좋았다.</p>
<hr>
<h1 id="abstract">Abstract</h1>
<h2 id="주요-방법론-chain-of-thought-cot">[주요 방법론] Chain of Thought (CoT)</h2>
<ul>
<li>중간 추론 단계를 제공해 few-shot inference 시 추론의 방향성을 간접적으로 전달하는 방식으로, 대규모 언어 모델의 복잡한 추론 능력을 크게 향상.</li>
<li>몇 개의 Chain of Thought 예제 텍스트인** &quot;Exemplars&quot;를 프롬프트에 제공하여 모델의 추론 능력을 강화**</li>
</ul>
<h2 id="실험-결과">[실험 결과]</h2>
<ol>
<li>세 가지 대규모 언어 모델에서 실험 진행 : GPT-3(InstructGPT) - [350M, 1.3B, 6.7B, 175B]</li>
<li>Chain of Thought Prompting이 <strong>Arithmetic Reasoning</strong>, <strong>Commonsense Reasoning</strong>, <strong>Symbolic Reasoning</strong> 작업에서 성능 향상을 보임</li>
<li><strong>여러 Benchmark에서 Stardard Prompt를 능가함</strong><ul>
<li>PaLM 540B 모델에 8개의 체인 오브 쏘트 예제를 프롬프팅으로 제공</li>
<li><strong>수학 단어 문제(GSM8K) 벤치마크</strong>에서 최신 성능(SOTA)을 달성</li>
<li>Fine-tuned GPT-3 with a verifier를 능가하는 정확도</li>
</ul>
</li>
</ol>
<hr>
<h1 id="chain-of-thought-prompting--〈input-chain-of-thought-output">Chain-of-Thought Prompting : 〈input, chain of thought, output&gt;</h1>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/f67e5d8a-7499-4011-9d03-90dee1933656/image.png" alt=""></p>
<p>위의 하이라이트된 부분이 <code>chain of thought</code>에 해당되는 prompt text이다. 위와 같은 텍스트들은 모델이 추론하는 과정에서 그 추론 과정을 유도하도록 하는 역할을 하고 있다.</p>
<blockquote>
<h3 id="chain-of-thought-프롬프트의-주요-특징-및-장점">Chain-of-Thought 프롬프트의 주요 특징 및 장점</h3>
</blockquote>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/7307a91d-0439-4680-836e-1d66fca10e62/image.png" alt=""></p>
<blockquote>
</blockquote>
<p><strong>1. 복잡한 문제를 중간 단계로 분해 가능</strong>
체인 오브 소트는 다단계 문제를 중간 단계로 분해하도록 모델을 유도합니다. 이를 통해 추가적인 계산 리소스를 할당하여 더 복잡한 추론이 필요한 문제를 해결할 수 있습니다.
<strong>2. 모델의 행동을 해석할 수 있는 창 제공</strong>
체인 오브 소트는 모델이 특정 답에 도달한 경로를 해석할 수 있게 해줍니다. 이를 통해 추론 과정에서 어디서 오류가 발생했는지 디버깅할 수 있는 기회를 제공합니다. (다만, 모델의 계산 과정을 완전히 특성화하는 것은 여전히 해결되지 않은 과제입니다.)
<strong>3. 다양한 작업에 적용 가능</strong>
체인 오브 소트 추론은 수학 문제, 상식적 추론, 심볼릭 조작과 같은 작업에 사용할 수 있으며, 원칙적으로 인간이 언어로 해결할 수 있는 모든 작업에 적용할 수 있습니다.
<strong>4. 대형 언어 모델에서 간단히 활용 가능</strong>
충분히 큰 크기의 기존 언어 모델에 체인 오브 소트 예제를 포함시키는 것만으로 이러한 추론 능력을 쉽게 유도할 수 있습니다.</p>
<hr>
<h1 id="experiment">Experiment</h1>
<h2 id="✅-model--setting">✅ Model + Setting</h2>
<ul>
<li><p>사용한 pre-trained LLM 종류 (크기 다양)    </p>
<ul>
<li>Instruct GPT(GPT3) [350M, 1.3B, 6.7B, 175B]</li>
<li>LaMDA [422M, 2B, 8B, 68B, 137B]</li>
<li>PaLM [8B, 62B, 540B]</li>
<li>UL2 [20B]</li>
<li>Codex </li>
</ul>
</li>
<li><p>모든 경우에 대해서, <strong>greedy decoding</strong> 사용, 다음 토큰이 될 확률이 가장 높은 토큰을 선택하는 방법을 사용함 </p>
</li>
</ul>
<h2 id="standard-prompting--chain-of-thought-prompting">Standard prompting &amp; Chain-of-thought prompting</h2>
<p>산술추론 Task에 CoT를 적용해 실험하였고, SoTA 달성을 할 수 있었다.논문에서는 Few-Shot Prompt를 <code>Standard Prompting</code>이라고 부르면서 Base Prompt로 하였다. 그리고 CoT Prompt를 추가한 경우를 <code>Chain-of-thought Prompting</code>이라고 하여 실험을 하였다. </p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/094c7be0-0f98-4e65-ac75-1e2bfd8983ca/image.png" alt=""></p>
<p>위의 경우가 <strong>1shot</strong>의 예시, 즉 <strong>input-output 예시가 1개 들어간 경우</strong>이다. 이렇게 구성한 경우가 가장 <strong>Base Prompt</strong>이다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/0e5d50a6-c640-44b2-b630-8c44907f99a3/image.png" alt=""></p>
<p>위의 경우가 같은 일단 <strong>1shot</strong> 이지만, <strong>chain-of-thought text가 들어간 거로 Chain-of-thought Prompting</strong>이다.</p>
<blockquote>
<h2 id="🤔-chain-of-thought-prompt에-해당되는-추론-과정을-담은-예시-text는-어떻게-만든거지-어디서-왔을까">🤔 Chain-of-thought Prompt에 해당되는 추론 과정을 담은 예시, text는 어떻게 만든거지? 어디서 왔을까?</h2>
<p>저렇게 추론을 유도하기 위해 chain-of-thought text를 넣어주는 건 알겠는데, 문제는 <strong>&quot;어디서 저 CoT Text를 가져왔을까?&quot;</strong>라는 거다. 실제로 CoT 방법론을 사용할 경우를 생각하더라도 저 CoT Text를 구하는게 문제이기 때문이다. 
정답은 논문에 적혀 있는데, <strong>그냥 사람이 직접 만들었다(manually composed)</strong>라고 적혀있다. 실제로 <strong>8개의 예시에 대한 CoT Text를 만들었</strong>는데 Appendix에 아래와 같이 기재되어 있었다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/d4af4e25-bf40-4b0a-8f72-164c7bae83f2/image.png" alt=""></p>
<p>위의 8개의 example에 있는 CoT 예시글을 만들어서 8shot 으로 prompt에 넣어준 것이다. 산술추론에 해당되는 benchmark는 모두 저 8개의 few shot eaxampler 가 들어간거다</p>
<p>물론 AQuA까지 해서 4개 더 있다.
<img src="https://velog.velcdn.com/images/becky-kwon/post/4640fd50-9659-4664-a051-db8b9cd31aa5/image.png" alt=""></p>
</blockquote>
<hr>
<h2 id="1-arithmetic-reasoning">(1) Arithmetic Reasoning</h2>
<p>우리가 아는 산술 문제인데, 약간 수식적인 느낌보다는 텍스트로 상황을 말하면 계산된 답을 말하도록 하는 QA형식의 데이터셋을 주로 가지고 실험했다.</p>
<h3 id="benchmark">Benchmark</h3>
<p>아래와 같은 Benchmark 데이터셋을 사용했다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/c5913463-6d42-43e1-ac90-09a9b5ab9bf6/image.png" alt=""></p>
<h3 id="results">Results</h3>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/ac09fcce-7ddf-4239-935f-f380e8a080c2/image.png" alt=""></p>
<p>일단, 당연히 CoT를 적용한 프롬프트가 더 좋은 결과를 낸건 맞다. 하지만, 이 논문의 산술 추론 실험 결과에서 꼭 봐야 할 부분이 있다.</p>
<blockquote>
<p>*&quot;First, Figure 4 shows that chain-of-thought prompting is an <strong>emergent ability of model scale</strong> (Wei et al., 2022b). That is, chain-of-thought prompting <strong>does not positively impact performance for small models</strong>, and <strong>only yields performance gains when used with models of ∼100B parameters</strong>. We qualitatively found that models of smaller scale produced fluent but illogical chains of thought, leading to lower performance than standard prompting.&quot;*</p>
</blockquote>
<p><strong>➜ 100B 이상의 모델 파라미터 크기를 가지고 있는 경우에 한 해서, CoT Prompting이 Standard Prompting 보다 효과가 있다는 것</strong> 
<strong>➜ CoT Prompting은 큰 LLM 모델에 적용한 경우에 산술 추론을 하는데 좋은 퍼포먼스를 보인다는 점</strong></p>
<blockquote>
<p>*&quot;Second, chain-of-thought prompting <strong>has larger performance gains for more-complicated problems.</strong> For instance, for GSM8K (the dataset with the lowest baseline performance), performance more than doubled for the largest GPT and PaLM models. On the other hand, for SingleOp, the easiest subset of MAWPS which only requires a single step to solve, performance improvements were either negative or very small(see Appendix Table 3).&quot;*</p>
</blockquote>
<p><strong>➜ CoT Prompting은 복잡한, 더 어려운 문제를 해결하는 경우에 강점이 있음</strong></p>
<blockquote>
<p>*&quot;Third, <strong>chain-of-thought prompting via GPT-3
175B and PaLM 540B compares favorably to prior state of the art, which typically finetunes a task-specific model on a labeled training dataset.</strong> Figure 4 shows how PaLM 540B uses chain-ofthought prompting to achieve new state of the art on GSM8K, SVAMP, and MAWPS (though note that standard prompting already passed the prior best for SVAMP). On the other two datasets, AQuA and ASDiv, PaLM with chain-of-thought prompting reaches within 2% of the state of the art (Appendix Table 2).&quot;*</p>
</blockquote>
<p><strong>➜ CoT Prompting을 적용한 PaLM(540B), GPT3(175B)는 Fine-tuning 모델보다 더 좋은 성능을 내 SoTA를 달성</strong></p>
<p>또한 어떤 경우에 오답을 말했는지도 체크하고자 GSM8K 데이터셋 실험 결과를 뽑아 보았는데, </p>
<ul>
<li>정답 Tracking : 50문제 중 일단 정답은 50개 다 맞았지만, 그 중 2개는 우연히 맞은 케이스였음</li>
<li>오답 Tracking : 50문제 중 일단 오답은 50개로 다 틀렸는데, 46%는 계산 오류, 기호 매핑 오류, 추론 단계 missing 이였고, 54%는 semantic understanding or coherence 라는데 약간 논리적으로 말이 안되는 추론을 한 경우라고 보면 될 거 같다.</li>
</ul>
<p>또, 논문에서도 설명하지만 PaLM 62B에서 틀렸던 문제는 모델 사이즈를 키워서 PaLM 540B에서는 맞췄다고 한다. 특히 one-step missing 이나 semantic understanding error 들을 큰 모델은 해결했다고 한다.</p>
<h3 id="ablation-study">Ablation Study</h3>
<p>다른 종류의 prompting 도 해보는 실험을 했다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/8b44ff9d-98fb-4559-a026-a34f862f3381/image.png" alt=""></p>
<p>1) Equation only </p>
<ul>
<li>수식만 prompting에 주는 실험</li>
<li>좋지 않은 성능을 보이는데, 결국 <strong>자연어적인 추론 단계를 넣어주는게 핵심</strong>임을 보임</li>
</ul>
<p>2) Variable compute only </p>
<ul>
<li>CoT의 성공 요인이 단순히 &quot;더 많은 계산 리소스를 사용하는 것&quot; 때문인지, 아니면 &quot;중간 계산 과정을 자연어로 표현하는 것&quot;에 있는지를 구분하려는 목적임</li>
<li>모델에게 체인 오브 생각 방식 대신, 문제를 푸는 데 필요한 문자 수만큼의 점 <code>(.)</code>을 출력하게 했는데, 예를 들어, 어떤 수식을 푸는 데 필요한 문자 수가 10이라면, 모델이 <code>..........(10개의 점)</code>을 출력하게 함</li>
<li>결과적으로, 점<code>(.)</code>만 출력하도록 한 모델의 성능이 기존의 베이스라인 모델과 거의 동일하게 나왔고, 이 결과는 <strong>단순히 계산 리소스(점 출력 = 토큰 수)가 많아진다고 해서 성능이 향상되는 것은 아니라</strong>는 점을 보여줌</li>
</ul>
<p>3) Chain of thought after answer</p>
<ul>
<li>CoT 방식이 &quot;단계별 사고 과정&quot;이 아니라, 모델이 이미 학습한 지식을 더 잘 활성화시키는 효과 때문인지 확인하고자 함</li>
<li>이 실험에서는 CoT의 순서를 바꾸어, 답을 먼저 출력한 뒤 체인 오브 생각을 작성하도록 모델을 설정했습니다.<ul>
<li>기존 방식: 문제 → CoT(중간 계산) → 최종 답</li>
<li>변형 방식: 문제 → 최종 답 → CoT(중간 계산)</li>
</ul>
</li>
<li>답을 먼저 출력하고 CoT를 뒤에 작성한 모델의 성능이 기존 베이스라인 모델과 거의 동일하게 나왔는데,<strong>CoT 방식이 단순히 사전 학습된 지식을 활성화하기 위한 도구로만 작동하는 것은 아님</strong></li>
</ul>
<h3 id="robustness-of-chain-of-thought">Robustness of Chain of Thought</h3>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/a5808c0a-1179-4610-8303-d88b53c35605/image.png" alt=""></p>
<ul>
<li>8개의 CoT prompting의 글을 작성한 annotator를 변경해도, 일단 기존 Standard Prompting 보다는 나은 결과를 모든 경우에서 보인다, 그렇기에 <strong>언어적 스타일에 크게 의존하지 않는다</strong>는 것을 확인함</li>
</ul>
<h2 id="2-commensense-reasoning">(2) Commensense Reasoning</h2>
<p>사전학습된 모델의 지식을 바탕으로, 일상 생활에서 경험할 수 있는 간단한 문답을 어느정도로 답변할 수 있는지를 보는 거다. </p>
<h3 id="benchmark-1">Benchmark</h3>
<p>아래와 같은 Benchmark 데이터셋을 사용했다.</p>
<ul>
<li><p>CSQA </p>
</li>
<li><p>StrategyQA </p>
</li>
<li><p>Date understanding and sports understanding from BIG-Bench</p>
</li>
<li><p>SayCan</p>
</li>
<li><p>math는 exampler를 8개+4개 만들어서 1shot 예제로 넣었다면, 여기선 벤치마크별로 6~10개를 만들었고, 아래와 같다.</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/7d2ca3d3-d71e-45a4-bdf2-7de1c5c557d5/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/06384858-103d-404f-ab01-30b9d5176fca/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/a6714bdc-ee67-4fcb-85d5-b313b0ab4370/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/587b64fb-e3e3-4574-b775-567085f3c619/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/d910779b-8d45-4d66-b904-d2ae9561ccbe/image.png" alt=""></p>
<h3 id="results-1">Results</h3>
<p>결론적으로, Commonsense Reasoning 에서도 CoT Prompt가 효과가 있음을 확인할 수 있었다. 또한, 모델 스케일이 클 때 퍼포먼스가 나온다는 것도 동일했다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/a7dd0ef2-abf2-466e-998b-e00f1c544acb/image.png" alt=""></p>
<h2 id="3-symbolic-reasoning">(3) Symbolic Reasoning</h2>
<p>Symbolic Reasoning 인간에게는 비교적 쉬운 문제(예: 수식 계산, 논리 연산 등)지만, 언어 모델에게는 까다로울 수 있는 작업을 말한다. 기존의 Standard Prompting 방식에서는 이러한 심볼릭 추론 작업에서 언어 모델이 종종 한계를 보이는데, 단순히 정답을 맞히기보다 단계별 사고가 필요한 문제들이 많기 때문이다. 하지만 CoT는 이를 해결했다.</p>
<h3 id="tasks">Tasks</h3>
<p>아래의 두가지 Task로 Symbolic Reasoning 실험을 수행함</p>
<p>(1) <strong>Last Letter Concatenation</strong></p>
<ul>
<li>문제 정의: 주어진 이름에서 각 단어의 마지막 글자를 추출해 연결하는 작업 (예: <code>&quot;Amy Brown&quot;</code> → <code>&quot;yn&quot;</code>)</li>
<li>기존의 &quot;첫 글자 추출(First Letter Concatenation)&quot; 작업보다 더 어려움 (예: <code>&quot;Amy Brown&quot;</code> → <code>&quot;AB&quot;</code>는 체인 오브 생각(CoT) 없이도 언어 모델이 쉽게 수행 가능)</li>
<li>마지막 글자를 추출하는 작업은 더 많은 추론 과정과 작업 메모리가 필요하므로 어려운 문제로 간주</li>
<li>데이터 생성 방법: 미국 인구조사 데이터(name census data)의 상위 1,000개의 이름에서 무작위로 이름(이름과 성)을 결합해 생성</li>
</ul>
<p>(2) <strong>Coin Flip</strong></p>
<ul>
<li>문제 정의: 주어진 사람들이 동전을 뒤집거나(Flip) 뒤집지 않는 행동을 수행한 후, 동전의 최종 상태를 추론 
  (예: <code>입력</code>: &quot;A coin is heads up. Phoebe flips the coin. Osvaldo does not flip the coin. Is the coin still heads up?&quot; -&gt; <code>출력</code>: &quot;no&quot;)</li>
<li>각 사람의 행동(뒤집음/뒤집지 않음)을 추적해야 하므로 논리적 추론 과정이 필요</li>
<li>단순한 논리 문제처럼 보이지만, 여러 단계의 조건을 기억하고 처리해야 하므로 모델에겐 까다로운 작업</li>
</ul>
<p><strong>in-out domain 으로 나누어서 실험을 진행</strong>함</p>
<ul>
<li><strong>In-Domain Test</strong>: 훈련 데이터와 동일한 단계 수를 요구하는 테스트</li>
<li><strong>Out-of-Domain (OOD) Test</strong>: 훈련 데이터보다 더 많은 단계(복잡한 문제)를 요구하는 테스트 세트</li>
</ul>
<p>실제로 작성한 CoT Prompt는 태스크 별로 아래와 같다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/fdfd376d-620e-4768-8a5d-74cd5f441e36/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/bf74c712-ca2f-4b27-8394-9e08aafdea5e/image.png" alt=""></p>
<h3 id="results-2">Results</h3>
<p>결론적으로, Symbolic Reasoning 에서도 CoT Prompt가 효과가 있음을 확인할 수 있었다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/960397e0-14b5-418b-8be4-2c90b4567d91/image.png" alt=""></p>
<ol>
<li><p><strong>In-Domain 평가</strong>:</p>
<ul>
<li><strong>PaLM 540B 모델</strong>:<ul>
<li>체인 오브 생각(CoT) 프롬프팅으로 <strong>거의 100% 정답률</strong> 달성.</li>
<li>동전 뒤집기(Coin Flip) 작업은 CoT 없이도 PaLM 540B에서는 성공했지만, LaMDA 137B는 CoT가 필요.</li>
</ul>
</li>
<li><strong>작은 모델의 한계</strong>:<ul>
<li>작은 모델은 CoT를 제공받아도 심볼릭 작업 수행에 실패.</li>
<li>심볼릭 조작 능력은 <strong>100B 이상의 대규모 모델</strong>에서만 나타남.</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>OOD 평가</strong>:</p>
<ul>
<li><strong>표준 프롬프팅</strong>: 두 작업 모두 실패.</li>
<li><strong>CoT 프롬프팅</strong>:<ul>
<li>대규모 모델에서 <strong>길이 일반화(length generalization)</strong> 가능.</li>
<li>성능은 In-Domain보다 낮지만, 더 긴 작업에서도 CoT가 효과적임.</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>결론</strong>:</p>
<ul>
<li>CoT는 대규모 모델에서 추론 능력을 크게 향상시키며, 훈련 데이터에서 보지 못한 길이나 복잡성을 가진 문제도 해결 가능.  </li>
<li>그러나 이러한 능력은 <strong>충분히 큰 모델 규모(100B 이상)</strong>에서만 발현.</li>
</ul>
</li>
</ol>
<hr>
<h1 id="discussion">Discussion</h1>
<h2 id="🦄-연구-성과">🦄 연구 성과</h2>
<ol>
<li><p><strong>CoT의 성능 개선</strong>:</p>
<ul>
<li>CoT 프롬프트는 산술 추론(arithmetic reasoning)에서 기존 방식보다 큰 성능 향상을 보임.</li>
<li>다양한 주석자, 예제, 언어 모델에 대해 일관되게 효과적임.</li>
</ul>
</li>
<li><p><strong>적용 가능성</strong>:</p>
<ul>
<li>CoT는 다단계 추론(multi-step reasoning)을 요구하는 작업에 일반적으로 적용 가능.</li>
<li>심볼릭 추론(symbolic reasoning)에서는 훈련 시 예제보다 더 긴 시퀀스 입력에 대해서도 성능을 유지하며 OOD(Out-of-Distribution) 일반화를 가능하게 함.</li>
</ul>
</li>
<li><p><strong>간단한 구현</strong>:</p>
<ul>
<li>CoT는 별도의 모델 파인튜닝 없이, 기존의 사전 학습된 언어 모델에 프롬프트를 통해 바로 적용 가능.</li>
</ul>
</li>
<li><p><strong>모델 스케일의 중요성</strong>:</p>
<ul>
<li>CoT 추론은 모델 크기 증가와 함께 나타나는 경향이 있음.</li>
<li>기존 프롬프팅 방식의 성능 한계를 넘어서, 모델이 해결할 수 있는 작업의 범위를 확장.</li>
</ul>
</li>
</ol>
<hr>
<h2 id="😅-한계점">😅 한계점</h2>
<ol>
<li><p><strong>진정한 &#39;추론&#39; 여부</strong>:</p>
<ul>
<li>CoT가 인간의 사고 과정을 모방하지만, 모델이 실제로 &quot;추론(reasoning)&quot;을 하고 있는지는 여전히 미해결된 질문.</li>
</ul>
</li>
<li><p><strong>주석 비용</strong>:</p>
<ul>
<li>Few-shot 설정에서는 CoT를 수작업으로 추가하는 비용이 적지만, 대규모 데이터셋에 적용하거나 파인튜닝하려면 주석 비용이 크게 증가할 가능성.</li>
<li>이를 해결하기 위해 <strong>합성 데이터 생성</strong>이나 <strong>제로샷 일반화</strong>가 대안이 될 수 있음.</li>
</ul>
</li>
<li><p><strong>정확하지 않은 추론 경로</strong>:</p>
<ul>
<li>CoT는 올바르지 않은 추론 과정도 생성할 수 있어, 정답과 오답이 혼재될 위험.</li>
<li>모델의 사실적(factual) 생성 능력을 개선하는 것이 앞으로의 과제.</li>
</ul>
</li>
<li><p><strong>모델 크기의 한계</strong>:</p>
<ul>
<li>CoT는 대규모 모델에서만 유의미한 성능 향상이 나타나, 실제 애플리케이션에 적용하기엔 비용이 높음.</li>
<li>소규모 모델에서도 추론 능력을 유도할 수 있는 방법에 대한 추가 연구가 필요.</li>
</ul>
</li>
</ol>
<hr>
<h2 id="🔥-앞으로의-연구-방향">🔥 앞으로의 연구 방향</h2>
<ol>
<li><p><strong>모델 스케일 증가와 추론 능력</strong>:</p>
<ul>
<li>모델 크기를 더욱 키울 경우, 추론 능력이 얼마나 더 향상될 수 있을지 탐구.</li>
</ul>
</li>
<li><p><strong>다른 프롬프트 방식</strong>:</p>
<ul>
<li>CoT 외에도 언어 모델이 해결할 수 있는 작업 범위를 확장할 수 있는 새로운 프롬프트 방식을 탐구.</li>
</ul>
</li>
<li><p><strong>합리적인 추론 과정 보장</strong>:</p>
<ul>
<li>CoT가 생성하는 추론 경로의 정확도를 높이는 방법 연구.</li>
</ul>
</li>
<li><p><strong>소규모 모델에서의 적용 가능성</strong>:</p>
<ul>
<li>작은 모델에서 CoT를 유도할 수 있는 효율적인 방법 개발.</li>
</ul>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[📖논문 리뷰] A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications (2024)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-A-Systematic-Survey-of-Prompt-Engineering-in-Large-Language-Models-Techniques-and-Applications-2024</link>
            <guid>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-A-Systematic-Survey-of-Prompt-Engineering-in-Large-Language-Models-Techniques-and-Applications-2024</guid>
            <pubDate>Sat, 07 Dec 2024 09:23:20 GMT</pubDate>
            <description><![CDATA[<p>Prompt Engineering 리뷰를 보면서 CoT(Chain-of-Thought)의 기반을 다지려고 본 리뷰 페이퍼입니다. 다른 <a href="https://chasuyeon.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-A-Systematic-Survey-of-Prompt-Engineering-in-Large-Language-Models-Techniques-and-Applications">블로그</a>에 굉장히 잘 정리되어 있으니 참고하길 바랍니다.</p>
<p>저는 이 논문에 정리된 여러 굵직한 논문들만 따로 각각 정리할 것이기에 여기선 간단히 그림만 넣겠습니다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/bdf66545-9783-47ee-8183-3f95ebb84ac5/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/899cc87f-7366-41fd-826f-a83a4662d787/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Fine-Tuning과 Prompt Engineering, Prompt Tuning, PEFT에 대한 이야기]]></title>
            <link>https://velog.io/@becky-kwon/Fine-Tuning%EA%B3%BC-Prompt-Engineering-Prompt-Tuning-PEFT%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%EC%95%BC%EA%B8%B0</link>
            <guid>https://velog.io/@becky-kwon/Fine-Tuning%EA%B3%BC-Prompt-Engineering-Prompt-Tuning-PEFT%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%EC%95%BC%EA%B8%B0</guid>
            <pubDate>Fri, 06 Dec 2024 09:41:42 GMT</pubDate>
            <description><![CDATA[<p>대학원을 다니면서 공부를 하나하나 다시하고 있다. 특히 산학 프로젝트를 하면서 실무 데이터를 다루면서, overfitting이나 유난히 낮은 성능을 올리기 위해서 여러 생각을 해봤다. 그러면서 지금까지도 많이 되고있는 Fine-Tuning 방법론도 찾아보았고, 더 나은 답변을 뱉을 수 있는 방법론을 몇 개 찾아보면서 개념을 정리해보았다.</p>
<hr>
<h1 id="fine-tuning">Fine-Tuning</h1>
<p>Model Tuning이라고 한 때 부르기도 했지만, 일반적으로 현재에 와서 Fine-Tuning의 의미는 특정 down-stream task에 맞춰진 input, output 데이터셋을 사용해서 model의 모든 가중치, parameter를 조정하는 겁니다. Transfer Learning이라고 하기도 합니다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/0b0a08ee-7f56-4816-ac47-4c7e78f4eb48/image.png" alt=""></p>
<blockquote>
<p><strong>Transfer Learning의 학습 방법</strong></p>
</blockquote>
<ol>
<li>Pre-trained model의 아키텍처와 파라미터를 복사하여 새로운 Target model(Fine-Tuning model)을 생성합니다. 이 과정에서 출력층(output layer)은 제외됩니다.</li>
<li>Pre-trained model에서 전달된 파라미터는 Pre-trained 데이터셋에서 학습된 지식을 포함하고 있으며, 이 지식이 Fine-Tuning을 위한 Target 데이터셋에도 적용될 수 있다고 가정합니다. Pre-trained model의 output layer은 Pre-trained 데이터셋에 특화되어 있으므로 Target model(Fine-Tuning model)에서는 사용하지 않습니다.</li>
<li>Fine-Tuning 데이터셋의 카테고리 수와 동일한 출력을 갖는 새로운 output layer을 Target model에 추가합니다. 이 output layer의 파라미터는 랜덤으로 초기화합니다.</li>
<li>Fine-Tuning 데이터셋으로 Target model을 학습시킵니다. 이 과정에서 새로운 output layer은 처음부터 학습됩니다. 나머지 레이어의 파라미터는 Pre-trained model에서 가져온 사전 학습된 가중치를 기반으로 Fine-Tuning 데이터셋에 맞게 미세 조정됩니다.</li>
</ol>
<p>그래서 <a href="https://huggingface.co/docs/trl/sft_trainer">SFT(Supervised Fine-tuning Trainer)</a> 사용해서 Full FineTuning 시켜본 사람은 경험해볼 수 있는데, 특정 task에 fine-tuning을 한 후에는 그 목적이 된 task에 대해서는 제대로 일을 하는 LLM이 될 수 있지만, 기존 Pre-trianed 상태에서 잘했던 기본적인 대화를 다시 시켜보면 이상한 말을 간혹 뱉기도 합니다. 즉, Task Mismatch의 상황에 대응이 안된다는 겁니다. </p>
<p>그렇다보니, Pre-trained 상태의 모델을 최대한 잘 활용해서 최고의 성능을 뽑아내는 것과, 아니면 fine-tuning처럼 모든 parameter을 건들지 않고 적절히 일부의 parameter만 tuning을 하는 방법들이 연구되어 왔습니다.</p>
<hr>
<h1 id="prompt-engineering">Prompt Engineering</h1>
<p>Prompt Engineering은 LLM 모델에게 제공할 prompt를 구성하는 방법론입니다. 성능이 좋은 LLM일수록, 모델사이즈가 큰 LLM 모델을 쓸수록, prompt에 대해서 어느 정도는 좋은 결과를 줄 것이지만, Question Answering이나 (mathematical) Reasoning 등의 복잡한 테스크를 줄수록 LLM을 사용하는 것에 한계가 있을 것입니다. 
따라서 복잡한 테스크에서 조금이라도 더 효율을 높이기 위해서는 좋은 prompt를 사용하는 것이 필요합니다. 또한 원하는 형태의 답변을 낼 수 있도록 유도함으로써 LLM의 답변을 이용하는 다른 툴에서도 효과적으로 LLM을 사용할 수 있게 할 수 있습니다.</p>
<h2 id="prompt-engineering-의-효과">Prompt Engineering 의 효과</h2>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/4171518f-5552-4ca8-bba6-f5776e674ee7/image.png" alt=""></p>
<p>그림에서 보면, stardard prompt를 주었을 경우에는 답변을 하지 못하지만, 파란색으로 쳐진 추론 과정을 추가해주면, LLM이 이에 따라 비슷한 방식의 추론을 통해 답변을 냅니다. 그 답변은 정답인 것을 확인할 수 있습니다.</p>
<p>단순히 추론을 위한 간단한 설명을 넣어주었을 뿐인데, 이제는 정답을 말할 수 있는 것입니다.</p>
<h2 id="soft-prompting-와-hard-prompting">Soft Prompting 와 Hard Prompting</h2>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/cce9c321-026c-478c-8e8f-51f477e701c0/image.png" alt=""></p>
<p>🤔🤔 LLM은 결국 임베딩으로 우리의 prompt에 대한 response를 생성하는데, <em><strong>굳이 prompt를 자연어 text로 줄 필요가 있을까?</strong></em> 라는 생각도 해볼 수 있습니다. </p>
<p>초기에는 사람이 직관적으로 이해할 수 있는 <strong>Hard Prompt(Discrete)가 주로 연구</strong>되었습니다. Hard Prompt는 주어진 태스크에 맞게 사람이 직접 모델과 상호작용하며 적절한 프롬프트를 탐색하는 과정을 포함합니다. 하지만 이렇게 정의된 하드 프롬프트는 <strong>Suboptimal(비최적화)</strong> 하다는 문제가 존재합니다. 이는 인공지능 모델이 이산적인 값이 아닌 연속적인 값으로 학습할 수 없기 때문입니다. </p>
<p>이러한 한계를 극복하기 위해, <strong>연속적(Contiunous)이고 조정 가능한(Tunable) Soft Prompt가 등장</strong>했습니다. Soft Prompt는 학습 가능한 파라미터로 구성되며, 모델의 학습 과정에서 최적화가 가능합니다. 이로 인해 관련 연구가 활발히 이루어지고 있으며, 더 나은 성능과 유연성을 제공하는 방식으로 발전하고 있습니다.</p>
<p><code>앞선 예시에서 우리가 사용하는 자연어,text로 prompting 을 추가해준 경우는 Hard Prompting 에 해당합니다.</code></p>
<h3 id="🔖-soft-prompt--❄️pre-trained-model---fine-tuning-효과">🔖 Soft Prompt + ❄️Pre-trained Model -&gt; Fine-tuning 효과</h3>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/633b050e-8aa0-4b92-951a-92ee221d9c24/image.png" alt=""></p>
<p>soft prompt로 가장 대표적인 방법론으로 prefix-tuning과 prompt-tuning 이 있습니다.
둘다 사전학습 모델을 그대로 가져와서 앞에 추가 prompt 임베딩을 추가해서 그 부분만 학습해서 특정 task에 맞출 수 있는 방법론입니다.</p>
<p>✒️ <a href="https://arxiv.org/abs/2101.00190">Prefix-Tuning: Optimizing Continuous Prompts for Generation(⭐2021-ACL-Long)</a>
✒️ <a href="https://arxiv.org/abs/2104.08691">The Power of Scale for Parameter-Efficient Prompt Tuning(⭐2021-EMNLP-Main)</a></p>
<h2 id="chain-of-thought-등-prompt-engineeringprompting-method">Chain-of-Thought 등 Prompt Engineering(Prompting) method</h2>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/9e29dc85-bfca-46e7-b506-e41983666724/image.png" alt="">
위의 texamony diagram of prompt engineering 은 Prompt Engineering에 대한 전반적인 최신 동향을 리뷰한 <a href="https://arxiv.org/pdf/2402.07927">논문</a>에서 가져왔는데, 기존에 알고 있던  Chain-of-Thought(CoT)같은 거 말고도 prompting method 가 꽤 많을 것을 확인할 수 있습니다. </p>
<hr>
<h1 id="🤗-peft-parameter-efficient-fine-tuning">🤗 PEFT (Parameter-Efficient Fine-Tuning)</h1>
<p>PEFT는 대규모 사전학습 모델을 다양한 다운스트림 애플리케이션에 효율적으로 적응시키기 위한 라이브러리입니다. <strong>기존 방식처럼 모델의 모든 파라미터를 미세 조정(Fine-Tuning)하지 않고,</strong> <strong>추가적인 소수의 파라미터만 조정하여 학습</strong>합니다.</p>
<p>이 방식은 다음과 같은 장점을 제공합니다</p>
<ul>
<li>컴퓨팅 및 저장 비용 절감: 조정해야 할 파라미터의 양이 극히 적기 때문에 대규모 모델을 훈련하고 저장하는 데 드는 비용이 대폭 감소합니다.</li>
<li>풀튜닝과 유사한 성능: 모델의 일부만 튜닝하더라도 완전 미세 조정(Fully Fine-Tuning)된 모델에 버금가는 성능을 달성할 수 있습니다.</li>
</ul>
<p><strong>=&gt; 이러한 효율성 덕분에 PEFT는 소비자 하드웨어에서도 대규모 언어 모델(LLMs)을 훈련하거나 저장하는 것이 훨씬 더 접근 가능해졌습니다.</strong></p>
<h2 id="lora-low-rank-adaptation">LoRA (Low-Rank Adaptation)</h2>
<p>✒️ <a href="https://arxiv.org/pdf/2106.09685">LORA: LOW-RANK ADAPTATION OF LARGE LAN-GUAGE MODELS(⭐ICLR-2022-Poster)</a></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/796b9cef-0cdd-427b-8916-ba1f8a8691e8/image.png" alt=""></p>
<p>대표적인 PETF 방법론 중에 하나인 LoRA는 모델의 파라미터를 직접 수정하지 않고, <strong>reparametrizatioin 을 통해 저차원 행렬(보조 가중치)로 기존 parameter 임베딩을 구조화해서 학습</strong>합니다. 이를 통해 원본 모델의 구조를 유지하면서 메모리와 계산 비용을 절감할 수 있습니다. 원본 파라미터를 동결(Freeze)하여 모델의 무결성을 유지하기에, 기존 pre-trained model의 성능을 유지하면서 추가 파라미터만 학습합니다.</p>
<h2 id="parameter-efficient-tuning--prefix-tuning-prompt-tuning-p-tuning">parameter efficient tuning : Prefix Tuning, Prompt Tuning, P-Tuning</h2>
<p>Prefix Tuning, Prompt Tuning, P-Tuning 등 이 해당됩니다.</p>
<p>전자인 두 가지는 앞서 대략 설명했었고, P-Tuning만 간단하게 정리하자면,</p>
<p>✒️ <a href="https://arxiv.org/abs/2103.10385">GPT Understands, Too(⭐Journal: AI Open, 5, 208-215.)</a>
✒️ <a href="https://aclanthology.org/2022.acl-short.8/">P-Tuning v2:: Prompt Tuning Can Be Comparable to Fine-tuning Across Scales and Tasks(⭐2022-ACL-Short)</a></p>
<p>GPT에 P-Tuning을 적용하여 큰 성능 향상을 보이면서, P-Tuning은 2021년에 발표된 논문 &quot;GPT Understands, Too&quot;에서 처음 제안되었습니다. 
<img src="https://velog.velcdn.com/images/becky-kwon/post/821f47ad-e129-43f8-9ecb-e2a5b0f4867c/image.png" alt=""></p>
<p>이 <a href="https://soundprovider.tistory.com/entry/2021-GPT-Understands-Too-P-tuning">블로그</a>를  P-Tuning이 잘 정리되어 있는데 한 번 확인해보길 바랍니다. 
위의 그림에서 $h_i$는 trainable embedding tensor(Prompt Encoder output)로 논문의 설명대로라면 <strong>원래의 언어모델이 표현할 수 있는 vocabulary 의 한계를 넘어 continuous space상에서 존재하는 prompt를 얻을 수 있게 된다</strong>고 합니다. 
<img src="https://velog.velcdn.com/images/becky-kwon/post/698dc43e-5ccd-40d9-9dda-dc0875363d12/image.png" alt=""></p>
<p>Prompt Encoder로는 LSTM을 사용했고, 언어모델의 parameter는 고정시켜두고 원래의 loss function $L$을 사용하여 continuous prompt $h_i(0≤i&lt;m)$ 미분을 통해 optimize합니다. 현재의 soft-prompt인데, 당시 NLU task에 대해서 높은 성능 향상을 보였고, Fine-tuning보다 같거나 더 좋은 결과를 보여주고 있습니다.</p>
<p>P-Tuning v2는 기존 P-Tuning(2021)에서 prompts가 input embedding에만 들어가는데, tunable parameters 너무 적고 model prediction layer까지 대체 거리가 얼마인데 input embedding에만 prompting 하면 그 역할이 다 희석된다는 문제를 제기하면서 등장하였습니다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/a60ba684-3cda-417c-80f9-53fa7e2d2ff7/image.png" alt=""></p>
<p>기존 P-Tuning 과 달리 <strong>모든 layers에 prefixed tokens가 prompting</strong> 됩니다. 그래서 tunable parameter가 0.01%에서 0.1-3%까지 증가하기에, 모델의 capa는 늘고, parameter-efficiency는 유지되면서 <strong>deeper layer까지 prompting이 들어가서 model prediction에 더 직접적인 영향을 끼칠수 있도록</strong> 된 겁니다.</p>
<h2 id="추가-논문">추가 논문</h2>
<h3 id="📖-few-shot-parameter-efficient-fine-tuning-is-better-and-cheaper-than-in-context-learning-neurips-2022-main">📖 Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning (NeurIPS-2022-Main)</h3>
<p>✒️ <a href="https://arxiv.org/abs/2205.05638">Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning(⭐NeurIPS-2022-Main)</a></p>
<p>Few-shot ICL은 사전학습된 언어 모델이 새로운 작업에 대해 그래디언트 기반 훈련 없이도 수행할 수 있도록 설계된 기법입니다. <strong>Few-shot ICL과 PEFT를 정밀 비교하여 소수의 파라미터만 학습하여 모델이 새로운 작업을 수행할 수 있도록 하는 접근 방식인 PEFT가 정확도와 비용 효율성 측면에서 우월하다는 점을 입증</strong>했습니다.</p>
<h3 id="📖-warp-word-level-adversarial-reprogrammingacl-2021-long">📖 WARP: Word-level Adversarial ReProgramming(ACL-2021-Long)</h3>
<p>✒️ <a href="https://arxiv.org/abs/2101.00121">WARP: Word-level Adversarial ReProgramming(⭐ACL-2021-Long)</a></p>
<p>WARP는 Prompt Engineering과 Adversarial Reprogramming을 결합하여 NLP 태스크를 해결하는 효율적인 방법입니다. 이 기법은 기존 Fine-Tuning보다 적은 파라미터로 높은 성능을 달성하며, 모델 본체(Transformer Layers)를 수정하지 않고 프롬프트와 Verbalizer를 학습하는 데 초점을 맞춥니다.</p>
<blockquote>
<p><strong>WARP의 학습 과정</strong>
<img src="https://velog.velcdn.com/images/becky-kwon/post/09f26c10-48fd-4656-9cd2-297368691ce0/image.png" alt=""></p>
</blockquote>
<ol>
<li>입력 시퀀스에 <code>[P_1], ..., [P_N]</code> 및 <code>[MASK]</code> 삽입</li>
<li>MLM 헤드를 통해 <code>[MASK]</code> 출력 벡터 생성</li>
<li>Verbalizer 임베딩과 비교하여 가장 가까운 클래스를 예측</li>
<li>크로스 엔트로피 손실을 계산하여 프롬프트와 Verbalizer를 학습</li>
</ol>
<p>추가적인 디코더 없이, <code>[MASK]</code> 토큰의 출력 벡터를 활용합니다. Verbalizer <code>[V_1], [V_2], ..., [V_C]</code>는 클래스 레이블과 매핑된 워드 임베딩으로 구성됩니다.출력 벡터와 Verbalizer 임베딩 <code>[V_1], [V_2], ..., [V_C]</code> 간의 유사도를 계산해 클래스를 예측합니다. Verbalizer를 기반으로 생성된 로짓에 대해 크로스 엔트로피 손실을 계산하여 학습합니다.</p>
<p>예를 들어, 입력 문장 &quot;Oil prices rise&quot;에서 <code>[MASK]</code>에 대한 출력이 Verbalizer &quot;entailment&quot;에 가장 가깝다면, 해당 문장은 Entailment 클래스로 분류됩니다.
<strong>=&gt; 학습 가능한 파라미터는 프롬프트와 Verbalizer 임베딩뿐이며, 기존 Fine-Tuning보다 훨씬 적은 수의 파라미터로 작업 수행 가능한다는 것</strong>을 보였습니다.</p>
<h3 id="📖-visual-prompt-tuningeccv-2022">📖 Visual Prompt Tuning(ECCV-2022)</h3>
<p>✒️ <a href="https://arxiv.org/abs/2203.12119">Visual Prompt Tuning(⭐ECCV-2022)</a></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/49f2ad35-1ced-4d40-9738-e676c443e782/image.png" alt="">
Visual Prompt Tuning(VPT)은 대규모 ViT 모델을 효율적으로 학습하기 위한 파라미터 효율적 튜닝 기법입니다. 기존의 Full Fine-Tuning 방식은 모델의 모든 백본 파라미터를 업데이트하는 데 반해, <strong>VPT는 입력 공간(Input Space)에 학습 가능한 파라미터를 추가하면서 백본 파라미터는 동결(Frozen) 상태로 유지</strong>합니다. 이렇게 <strong>추가되는 파라미터는 전체 모델 파라미터의 1% 미만</strong>으로, 매우 적은 자원을 사용하면서도 높은 성능을 제공합니다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/4ce9f16f-f784-475d-8139-283d465cbd56/image.png" alt="">
본 논문에서는 visual-prompt tuning을 하는 두 가지 방법을 제시했습니다.</p>
<ol>
<li><strong>VPT-Deep</strong>: Transformer Encoder를 거칠 때 마다 learnable한 visual prompt를 두고 학습</li>
<li><strong>VPT-Shallow</strong>: 제일 처음 input 시에만 learnable한 visual prompt를 두고 학습</li>
</ol>
<p>VPT는 다양한 다운스트림 태스크에서 기존의 파라미터 효율적 튜닝 기법보다 뛰어난 성능을 보여주며, 일부 태스크에서는 Full Fine-Tuning을 초과하는 결과를 기록합니다. 특히, <strong>데이터 스케일과 모델 크기에 관계없이 안정적인 성능 향상을 제공</strong>하며, 태스크별 저장 비용을 크게 줄일 수 있습니다. 이는 적은 리소스로도 대규모 모델의 강력한 성능을 활용할 수 있는 혁신적인 접근법입니다.  Computer Vision 분야에서 Prompt Tuning을 활용하는 최초의 연구 사레입니다.</p>
<p>참고한 <a href="https://2na-97.tistory.com/entry/Paper-Review-Visual-Prompt-Tuning-ECCV-2022-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0">블로그</a>에 설명이 정말 잘 되어있습니다.</p>
<hr>
<p>오늘도 끝~</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[📖논문 리뷰] AnomalyGPT: Detecting Industrial Anomalies Using Large Vision-Language Models (2023, AAAI 2024) ]]></title>
            <link>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-AnomalyGPT-Detecting-Industrial-Anomalies-Using-Large-Vision-Language-Models-2023-AAAI-2024</link>
            <guid>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-AnomalyGPT-Detecting-Industrial-Anomalies-Using-Large-Vision-Language-Models-2023-AAAI-2024</guid>
            <pubDate>Mon, 14 Oct 2024 13:56:22 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/ea1b1052-0233-460b-9060-e7efec3b0e79/image.png" alt=""></p>
<p>기말 프로젝트를 모빌리티 분야의 파손 진단 AI 분야를 하려고 한다. promptAD 같은 논문이랑 어떻게 보면 비슷한 분야의 논문인데 한 번 읽어보려고 한다. 실제로 <a href="https://anomalygpt.github.io/">AnomalyGPT</a>에 가면 해볼 수 있는데 이상탐지라는 도메인에 특화된 ChatBot라고 보면 좋을 거 같다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[End-To-End Self-tuning Self-supervised Time Series Anomaly Detection (2024)]]></title>
            <link>https://velog.io/@becky-kwon/End-To-End-Self-tuning-Self-supervised-Time-Series-Anomaly-Detection-2024</link>
            <guid>https://velog.io/@becky-kwon/End-To-End-Self-tuning-Self-supervised-Time-Series-Anomaly-Detection-2024</guid>
            <pubDate>Tue, 02 Jul 2024 06:49:15 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/57fdd784-3cd7-4915-849a-8675c68acbc3/image.png" alt=""></p>
<p>arxiv에 올라온 논문이고, 현재 하고 있는 task 관점에서 읽어보면 도움이될거 같아서 정리하게 되었다.</p>
<h1 id="0-abstract">0. Abstract</h1>
<p>TSAD의 두 가지 과제는 <strong>레이블이 지정된 데이터 없이도 다양한 유형 의 시계열 이상(스파이크, 불연속성, 추세 변화 등)을 탐지할 수 있는</strong> 다재다능(vesatile)하고 비지도(unsupervised) 모델입니다</p>
<ul>
<li>Self-supervised 모델은 다양한 증강(augmentation)을 통해 입력 데이터를 변환하여 훈련을 위한 가상 이상 현상(pseudo anomalies)을 생성하여 비지도 TSAD를 해결합니다. <em><strong>-&gt; 그러나 그 성능은 증강의 선택에 민감하여 실제로 선택하기 어렵고, 레이블이 없는 TSAD에 대한 데이터 증강 튜닝에 대한 연구는 문헌에 없습니다.</strong></em></li>
</ul>
<p>❗*<em>TSAP for TSA “on autoPilot”, which can (self-)tune augmentation hyperparameters end-to-end 를 제안 *</em>
-&gt; differentiable augmentation architecture와 unsupervised validation loss을 기반으로 증강 유형과 이상 유형 간의 정렬을 효과적으로 평가합니다
-&gt; TSAP 가 (discrete) augmentation type과 associated (continuous) hyperparameters를 효과적으로 선택하는 능력을 보여줍니다. 
-&gt; 다양한 TSAD 작업에서 SOTA 자체 지도 모델을 포함한 기존 baseline 을 능가합니다.</p>
<hr>
<h1 id="1-introduction">1. Introduction</h1>
<p>✅ 최근 자기 지도 학습(SSL)에 대한 진전은 AD 분야를 변화시켜 기존의 비지도(또는 단일 클래스) 학습 접근 방식에 비해 상당한 개선을 제공했습니다. 
✅ SSL 기반 AD의 핵심은 데이터 증강 기능입니다. 이러한 기능은 입력이 증강되는지 여부를 예측하는 것과 같이 이상 탐지기의 (자체) 감독 학습을 위한 가상 레이블을 만드는 데 사용됩니다.
<strong>=&gt; ❗이러한 모든 접근 방식에서 SSL 기반 AD의 성공은 증강된 데이터가 실제 이상 현상을 얼마나 모방하는지에 따라 크게 달라집니다</strong></p>
<p>✅ 레이블 없이 데이터 증강 함수를 조정하는 방법은 거의 없지만 한계가 있습니다. 
    1) 일부는 미분 불가능한 검증 손실에 의존합니다. 
    2) 엔드투엔드 학습 프레임워크에 적합하지 않습니다. 
    예를 들어, 이미지 도메인에서 CutOut augmentation은 (연속적인) 하이퍼 매개변수를 어떻게 조정하더라도 의미적 클래스 이상치(예: 고양이 대 자동차)을 모방할 수 없습니다. 주로 이산 선택(즉, 증강 유형)의 불일치 때문입니다. 
✅ 이러한 노력 중 어느 것도 우리 작업의 초점인 시계열 데이터에 대한 이상 탐지를 다루지 않습니다.</p>
<blockquote>
<p>🤔 <strong>CutOut augmentation</strong></p>
</blockquote>
<ul>
<li>cutout은 오직 CNN의 입력층 유닛만 생략한다. 반면 원래의 dropout방식은 중간 특성층에서도 유닛을 확률적으로 생략한다.</li>
<li>cutout에서 생략되는 영역은 개별 픽셀 단위가 아니라, 연속된 영역이다. 연속된 영역의 생략은 이어지는 특성맵으로 전파되고, 컨텍스트에 의해 생략정보가 복구되지 못하게 한다.</li>
<li>cutout 방식은 일부의 특정 표현특성에만 의지하지 않고, 이미지 전체의 컨텍스트를 네트워크가 사용하게 한다. 한편, cutout 방식은 입력층에서 드롭아웃에 공간적인 사전확률을 적용하는 것으로 해설될 수 있다.</li>
<li>cutout 방식을 제안하는 가장 큰 이유는 컴퓨터 비전 작업에서 자주 맞닥뜨리게 되는 object occlusion 문제 해결을 위해서다. ( 두 개 이상의 객체가 맞물려서 한 객체의 일부가 가려지는 문제) occlusion을 시뮬레이션하는 새로운 이미지를 생성함으로써, 실제 이미지에서 나타나는 상황을 모델이 더 잘 준비할 수 있다. 그 뿐 아니라 모델이 판단을 내릴 때, 더 많은 이미지 컨텍스트를 고려하도록 학습시킬 수 있다. </li>
<li>cutout 영역의 크기는 영역의 모양보다 더 중요한 하이퍼 파라미터다. cutout 영역의 모양은 단순함을 위해 정사각형 모양의 패치로 수행되었다. 입력 이미지에서 임의로 선택된 한 픽셀을 중심점으로 놓고, 이 점 주위로 cutmask를 위치시켰다. 이렇게 되면 마스크 영역이 항상 입력 이미지 안에 위치하는 것은 아니다. </li>
</ul>
<ol>
<li><p>문제
우리의 연구는 학습 시점에 레이블을 지정하지 않고 SSL 기반 TSAD에서 데이터 증가의 이산적 및 연속적 하이퍼파라미터를 조정하려는 최초의 시도입니다.</p>
</li>
<li><p>새로운 TSAD 방법
다양한 시계열 이상 유형 목록을 수용 하고 증강된 데이터와 레이블이 지정되지 않은 테스트 데이터의 정렬 을 정량화하는 미분 가능한 검증 손실을 통해 관련 하이퍼파라미터(크기, 지속 시간 등)의 자동 조정을 가능하게 하는 TSAP을 제안합니다.</p>
</li>
<li><p>효과성
증강 유형과 (연속적인) 하이퍼 매개변수를 신중하게 선택함으로써 당사의 자체 조정 TSAP는 SOTA NeuTraL-AD를 포함한 기존의 비지도 및 자체 지도 접근 방식보다 성능이 뛰어납니다. 다양한 TSAD 작업에서 학습 가능한 증강을 채택합니다.</p>
</li>
</ol>
<hr>
<h1 id="2-preliminaries">2. Preliminaries</h1>
<ul>
<li><p>2.1 Time Series Anomaly Detection
<img src="https://velog.velcdn.com/images/becky-kwon/post/ad78dea4-8bf5-46ce-89f0-952e8782d35b/image.png" alt=""></p>
</li>
<li><p>2.2 Self-supervised Anomaly Detectors
<em>(데이터 증강 함수를 사용하여 정상 데이터로부터 의사 이상 데이터를 생성하고, 이를 식별하기 위해 탐지기를 학습시키는 것)</em> 
<img src="https://velog.velcdn.com/images/becky-kwon/post/119d4467-2060-4f06-8be8-2752db488dec/image.png" alt=""></p>
</li>
</ul>
<ul>
<li><p>2.3 Data Augmentation on Time Series
<img src="https://velog.velcdn.com/images/becky-kwon/post/009c0cf2-95a5-4500-8667-bdb8b525f830/image.png" alt=""></p>
</li>
<li><p>2.4 Wasserstein Distance
<img src="https://velog.velcdn.com/images/becky-kwon/post/03f32df4-d20a-4061-8ff9-c46dd49c0251/image.png" alt=""></p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[📖논문 리뷰] Unmasking the abnormal events in video (2017)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Unmasking-the-abnormal-events-in-video-2017</link>
            <guid>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Unmasking-the-abnormal-events-in-video-2017</guid>
            <pubDate>Mon, 03 Jun 2024 07:34:43 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/7c75be05-349b-410f-902e-5ea57c061c64/image.png" alt=""></p>
<p>비디오의 각 장면(Scene)이 비정상적인지 여부를 판단하는 알고리즘
텍스트 저자 검증에 사용된 언마스킹(Unmasking, Koppel et al.) 기법을 비디오 프레임에 적용
언마스킹(Unmasking)은 두 데이터 간의 유사도를 측정하기 위해 가장 구별력 있는 특징(discriminant feature)을 제거하면서 분류 정확도(Classification Accuracy)가 감소하는 정도를 관찰하는 방법</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[📖논문 리뷰] Kernel Principal Component Analysis (1997)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Kernel-Principal-Component-Analysis-1997</link>
            <guid>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Kernel-Principal-Component-Analysis-1997</guid>
            <pubDate>Sun, 02 Jun 2024 10:18:27 GMT</pubDate>
            <description><![CDATA[<p>기본적인 PCA 공부를 다시 해봣다... 앞서 정리하고 있던 이상탐지 리뷰 논문에서 이상탐지 방법론 중에 하나로 PCA를 통한 차원축소 후, 이 차원 축소 PC 값을 이상탐지에 사용하는 걸 얘기하고 있었다. 오랜만에 기억도 되살릴 겸 정리해보고 있다.</p>
<h1 id="pcaprincipal-component-analysis">PCA(Principal Component Analysis)</h1>
<p>애정하는 <a href="https://ratsgo.github.io/machine%20learning/2017/04/24/PCA/">rastgo&#39;s blog</a> 에 잘 정리되어 있어서, 따로 정리하지 않고 쏵 오랜만에 읽어 보았다.</p>
<p>중요한 점을 정리하자면,</p>
<p>✅ 선형변환한 데이터의 분산이 클 수 있게(즉 데이터가 PC 축에 최대한 퍼지도록) PC 축을 잡아야 한다.
✅ PCA 수행 방법 :</p>
<ul>
<li>1) 기존 데이터 X 의 공분산행렬 계산</li>
<li>2) 공분산행렬의 고유값과 고유벡터 계산</li>
<li>3)고유값의 크기 순서대로 고유벡터를 나열</li>
<li>4) 정렬된 고유벡터 가운데 일부 선택</li>
<li>5) 해당 고유벡터와 X내적</li>
</ul>
<p>✅PCA의 목적은 원데이터 행렬 X의 분산을 최대한 보존하는 데 있기 때문에 Z의 분산 또한 최대화되어야 합니다. 
<img src="https://velog.velcdn.com/images/becky-kwon/post/06b4a6b1-b6e2-48cb-a6b6-75e9c60bb354/image.png" alt=""></p>
<p>✅ 공분산행렬 Σ의 서로 다른 고유벡터끼리는 서로 직교(orthogonal)함을 확인할 수 있습니다. 
✅ 원데이터를 공분산 행렬의 고유벡터로 사영하기 전에는 변수 간 연관성이 있었더라도 PCA 변환에 의하여 좌표축이 바뀐 데이터들은 서로 무상관(uncorrelated)이게 됩니다.</p>
<h1 id="kernel-principal-component-analysis">Kernel Principal Component Analysis</h1>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/70f26a08-9e2b-495b-be63-657186ae1d7b/image.png" alt="">
<img src="https://velog.velcdn.com/images/becky-kwon/post/51ada4a7-9a86-4f4a-a9d2-b06b2dc42d65/image.png" alt=""></p>
<ul>
<li>Kernel PCA의 기본 아이디어: 표준 내적 대신 비선형 커널 함수 𝑘를 사용함으로써, 고차원 공간 𝐹에서 PCA를 암묵적으로 수행합니다. 이 고차원 공간 𝐹는 입력 공간과 비선형적으로 관련되어 있습니다.</li>
<li>커널 함수의 역할: 비선형 관계를 고려하여 데이터의 구조를 더 잘 반영할 수 있도록 합니다.</li>
</ul>
<p>1) Linear PCA: 입력 공간에서 표준 내적을 사용하여 주성분을 찾습니다.
2) Kernel PCA: 비선형 커널 함수를 사용하여 입력 공간을 고차원 피처 공간으로 매핑하고, 그 공간에서 PCA를 수행합니다.</p>
<h2 id="간단-수식">간단 수식</h2>
<p>우선 데이터를 기존 D차원에서 더 고차원인 M차원으로 변환한 ɸ(x)를 상정합니다. ɸ(x)에 PCA를 적용하면 아래와 같이 식이 전개됩니다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/6dd7cd14-bc28-40f7-8822-986853265f42/image.png" alt=""></p>
<p>마지막 식을 ɸ(x)에 대해 풀면 연산이 굉장히 복잡해지지만, 커널트릭은 이를 ‘커널 함수’라고 불리는 k(x, x) 로 대체해 매우 간단한 연산으로 치환시킵니다. 중간 유도과정은 생략하고 우리가 찾고자 하는 주성분 v를 구하는 식으로 정리하면 아래와 같습니다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/01b15c95-d2d6-4595-b4ae-2da0d222fbb5/image.png" alt=""></p>
<p>즉, 커널함수를 통해 ɸ(x)를 명시적으로 구하지 않고서도 데이터를 고차원으로 옮긴 후 PCA를 적용한 값을 구할 수 있다는 게 커널PCA의 핵심입니다.</p>
<p>커널함수로는 대표적으로 2가지를 사용합니다. 다항커널함수(Polynomial kernel function)과 가우시안 또는 RBF커널함수입니다. </p>
<p>❗ 실제로 피처 공간 𝐹로 명시적으로 매핑하는 것은 불가능하며, Kernel PCA는 고차원 문제를 해결하기 위해 커널 함수 𝑘를 사용 =&gt; Kernel PCA는 매우 높은 차원의 공간에서 내적을 계산하는 대신, 커널 함수 평가를 통해 효율적으로 주성분 분석을 수행합니다.</p>
<hr>
<h1 id="kernal-pca-코드">Kernal PCA 코드</h1>
<pre><code class="language-{python}"># Kernel PCA with Polynomial kernel
def poly_kpca(X, degree, n_components, coef0=1):
 K = (np.dot(X, X.T) + coef0) ** degree
 N = K.shape[0]
 one_n = np.ones((N, N)) / N
 K = K - one_n.dot(K) - K.dot(one_n) + one_n.dot(K).dot(one_n)
 eigvals, eigvecs = eigh(K)
 pc = np.column_stack((eigvecs[:, -i] for i in range(1, n_components + 1)))
 return pc
pc = poly_kpca(X, 5, 2) #degree=5로 설정
x1 = pc[:,0]
x2 = pc[:,1]
plt.figure(figsize=(6,6))
plt.scatter(x1[y==100], x2[y==100], c=&#39;b&#39;, alpha=0.5, label=&#39;Class1&#39;)
plt.scatter(x1[y==30], x2[y==30], c=&#39;r&#39;, alpha=0.5, label=&#39;Class2&#39;)
plt.legend()
plt.show()
</code></pre>
<blockquote>
<p>🔖 Reference
<a href="https://heung-bae-lee.github.io/2020/04/03/machine_learning_07/">참고1</a>
<a href="https://garden-k.medium.com/%EB%85%BC%EB%AC%B8-kernel-principal-component-analysis-and-its-applications-in-face-recognition-and-active-shape-5b868e25fac4">참고2</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[📖논문 리뷰] Deep Learning for Anomaly Detection: A Review (2020)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Deep-Learning-for-Anomaly-Detection-A-Review-2020-38q1ozlt</link>
            <guid>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Deep-Learning-for-Anomaly-Detection-A-Review-2020-38q1ozlt</guid>
            <pubDate>Thu, 23 May 2024 06:42:48 GMT</pubDate>
            <description><![CDATA[<p>산업공학원 대학원의 꽃은 이상 탐지 아닐까 싶다. 기존에 공부하던 것들을 기반으로 이상탐지라(Anomaly Detection)이라는 새로운 분야를 공부하고 있다. 전반적인 기반을 다지고자 이 <a href="https://www.youtube.com/watch?v=Mj_Lapou2SE&amp;t=554s">유튜브 영상</a>와 영상에서 소개한 논문을 가져와서 하나하나 보려고 한다.</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/8ba2ff99-c098-4e0d-9180-15e4630cbb55/image.png" alt=""></p>
<h1 id="0-abstract">0. Abstract</h1>
<ul>
<li>outlier detection 또는 novelty detection라고도 불리는 Anomaly detection는 수십 년 동안 다양한 연구 커뮤니티에서 지속적이고 활발한 연구 분야였음</li>
<li>여전히 고급 접근 방식이 필요한 몇 가지 독특한 문제 복잡성과 과제가 있음</li>
<li>최근 몇 년 동안 딥러닝을 통한 이상 탐지가 중요한 방향으로 떠오름. </li>
<li>3 가지 상위 수준 범주와 11가지 세분화된 방법 범주의 발전을 다루는 포괄적인 분류법을 사용하여 deep anomaly detection 연구를 조사함</li>
<li>key intuitions, objective functions(목적 함수), underlying assumptions(기본 가정), advantages and disadvantages(장단점)을 검토하고 앞서 언급한 과제를 해결하는 방법에 대해 논의함</li>
</ul>
<hr>
<h1 id="1-introduction">1. Introduction</h1>
<p>이 review 논문은 아래 5가지를 집중적으로 다룬다.</p>
<ol>
<li><p>Problem nature and challenges 
: 우리는 이상 탐지의 기본이 되는 몇 가지 고유한 문제 복잡성과 그로 인해 발생하는 대부분의 미해결 과제에 대해 논의함</p>
</li>
<li><p>Categorization and formulation (분류 및 공식화) 
: 우리는 current deep anomaly detection methods을 <strong>3가지 principled frameworks(원칙)에 의해서 공식화했다. **
 2-1. deep learning for generic feature extraction (일반적인 특징 추출을 위한 딥 러닝)
 2-2. learning representations of normality (정상성 표현의 학습)
 2-3. end-to-end anomaly score learning (엔드투엔드 이상 점수 학습)
또한 **11가지 모델링 관점에 따라 방법을 분류하기 위해 계층적 분류를 제시함.</strong></p>
</li>
</ol>
<blockquote>
<h3 id="🤔-end-to-end란">🤔 end-to-end란?</h3>
<p>딥러닝에서 <strong>end-to-end의 의미는 입력에서 출력까지 파이프라인 네트워크 없이 신경망으로 한 번에 처리하는 것을 의미</strong>합니다. 즉, <strong>복잡한 파이프라인 없이 하나의 신경망으로 입력받은 것을 출력할 수 있다는 것</strong>입니다. </p>
</blockquote>
<ul>
<li>end-to-end 장점
  1) 신경망 모델로 입력 받은 값에 대한 출력 값을 찾아낼 수 있습니다. 
  2) 직접 파이프라인 설계할 필요가 없어집니다. </li>
<li>end-to-end  단점
  1) 라벨링 된 데이터가 많이 필요합니다.
  2) 메모리가 부족할 경우 사용할 수 없습니다.
  3) 복잡한 문제를 해결하기에는 효율적이지 않습니다.</li>
</ul>
<ol start="3">
<li><p>Comprehensive literature review
: 우리는 기계 학습, 데이터 마이닝, 컴퓨터 비전 및 인공 지능을 포함하여 여러 관련 커뮤니티의 주요 컨퍼런스 및 저널에서 다수의 관련 연구를 검토하여 연구 진행 상황에 대한 포괄적인 문헌 검토를 제시함. 심층적인 소개를 제공하기 위해 우리는 방법의 모든 범주에서 앞서 언급한 과제 중 일부를 해결하는 <strong>기본 가정, 목적 함수, 주요 직관 및 기능을 설명</strong>함.</p>
</li>
<li><p>Future opportunities
: 우리는 가능한 미래의 기회와 그 기회가 관련 과제를 해결하는 데 미치는 영향에 대해 더 자세히 논의함.</p>
</li>
<li><p>Source codes and datasets
: 우리는 경험적 비교 벤치마크를 제공하기 위해 거의 모든 범주의 방법에 대해 공개적으로 액세스할 수 있는 소스 코드 모음과 실제 예외 사항이 포함된 수많은 실제 데이터 세트를 요청함.</p>
</li>
</ol>
<hr>
<h1 id="2-anomaly-detection-problem-complexities-and-challenges">2. Anomaly Detection: Problem Complexities and Challenges</h1>
<h2 id="21-major-problem-complexities">2.1. Major Problem Complexities</h2>
<ul>
<li><p><strong>Unknownness</strong> : Anomalies are associated with many unknowns.(이상 현상은 기존에 알려져 있지 않은 갑작스러운 행동, 데이터 구조, 분포 등 많은 알려지지 않은 요소와 연관되어 있다.)</p>
</li>
<li><p><strong>Heterogeneous anomaly classes</strong> : Anomalies(변칙)은 irregular(불규칙적)이므로 한 변칙 클래스는 다른 변칙 클래스와 완전히 다른 비정상적인 특성을 나타낼 수 있다. </p>
</li>
<li><p><strong>Rarity and class imbalance</strong> : 이상 현상은 일반적으로 데이터의 압도적인 비율을 차지하는 일반적인 인스턴스와 달리 드문 데이터 인스턴스다.</p>
</li>
<li><p><strong>Diverse types of anomaly</strong> : 완전히 다른 3 가지 유형의 anomaly 현상이 조사되었다.
  <strong>(a) Point anomalies **
  : 부분의 다른 개별 인스턴스에 비해 변칙적인 개별 인스턴스
  *<em>(b) Conditional anomalies(Contextual anomalies) *</em>
  : 맥락을 보았을 때, 특정 상황에서 비정상 현상을 보이는 경우
  **(c) Group anomalies(Collective anomalies)</strong> 
  : 다른 데이터 인스턴스에 비해 전체적으로 비정상적인 데이터 인스턴스의 하위 집합, 집단의 개별 point는 이상값이 아닐 수도 있음.</p>
<p>  <img src="https://velog.velcdn.com/images/becky-kwon/post/c8a45760-91c3-478f-9007-0d84cfaf0892/image.png" alt=""></p>
<p>  <img src="https://velog.velcdn.com/images/becky-kwon/post/513a7e3f-5e7e-46f3-a4b1-8e39c02a21fe/image.png" alt=""></p>
</li>
</ul>
<blockquote>
<h3 id="❗outlier-종류">❗outlier 종류</h3>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/7c65cabd-1e66-4e12-b73b-1f4b33eb5f33/image.png" alt="outlier 종류">
<img src="https://velog.velcdn.com/images/becky-kwon/post/5b3ebeba-5fed-45b3-8c43-f69e5fb34970/image.png" alt=""></p>
</blockquote>
<h2 id="22-main-challenges-tackled-by-deep-anomaly-detection">2.2. Main Challenges Tackled by Deep Anomaly Detection</h2>
<p>Deep Anomaly Detection가 몇 가지 중요한 역할을 할 수 있는 다음 문제들은 대부분 해결되지 않았습니다.</p>
<h3 id="--ch1-low-anomaly-detection-recall-rate">- CH1: Low anomaly detection recall rate</h3>
<p>수년에 걸쳐 수많은 이상 탐지 방법이 도입되었지만 현재의 최첨단 방법(비지도 방법)또한 실제 데이터 세트에서는 여전히 높은 오탐률이 발생하는 경우가 많다. 오탐을 줄이고 검색 재현율을 높이는 방법은 가장 중요하면서도 어려운 과제 중 하나이다. 특히 이상 징후를 발견하지 못하는 데 드는 막대한 비용이 발생한다.
<img src="https://velog.velcdn.com/images/becky-kwon/post/30af7d3a-7f34-48df-8ce6-5cae899aa9d7/image.png" alt=""></p>
<h3 id="--ch2-anomaly-detection-in-high-dimensional-andor-not-independent-data">- CH2: Anomaly detection in high-dimensional and/or not-independent data.</h3>
<ul>
<li>Anomalies(변칙 현상)은 저차원 공간에서는 명백히 비정상적인 특성을 나타내지만, 고차원 공간에서는 숨겨져 눈에 띄지 않게 된다. <strong>→  High-dimensional anomaly detection has been a long-standing problem.</strong></li>
<li>시간적, 공간적, 그래프 기반 및 기타 상호 의존 관계와 같이 서로 의존할 수 있는 인스턴스에서 이상 현상을 탐지하는 것도 어려움이 있음.</li>
</ul>
<h3 id="--ch3-data-efficient-learning-of-normalityabnormality">- CH3: Data-efficient learning of normality/abnormality</h3>
<ul>
<li>대규모의 레이블이 지정된 이상 데이터를 수집하는 데 따른 어려움과 비용으로 인해 fully supervised anomaly detection는 정상 및 이상 클래스 모두에 레이블이 지정된 훈련 데이터의 가용성을 가정하기 때문에 종종 비실용적</li>
<li>그래서, 지난 10년간 unsupervised anomaly detection 연구가 집중됨. *<em>→  그러나,unsupervised anomaly detection은 실제 이상 현상에 대한 사전 지식이 없고, distribution of anomalies에 대한 가정에 크게 의존함. *</em></li>
<li>반면, 레이블이 지정된 정상 데이터와 일부 레이블이 지정된 이상 데이터를 수집하는 것은 어렵지 않은 경우가 많음. *<em>→ 실제로는 쉽게 접근할 수 있는 레이블이 지정된 데이터를 최대한 활용하는 것이 종종 제안됨. *</em></li>
<li>** <span style="color:deeppink">[Sol.1] Semi-supervised anomaly detection</span>**
: 레이블이 지정된 정상 훈련 데이터 세트를 가정함 </li>
<li>** <span style="color:deeppink">[Sol.2] Weakly-supervised anomaly detection</span>**
: anomaly label을 불완전하게 가지고 있다고 가정(anomalies에 대해서 부분적/불완전, 부정확한 레이블을 가진다고 가정)</li>
</ul>
<blockquote>
<h4 id="🤔-span-stylecolorlightpinksemi-supervised-learning-이란span">🤔 <span style="color:lightpink">Semi-supervised learning 이란?</span></h4>
<p>적은 labeled data가 있으면서 추가로 활용할 수 있는 대용량의 unlabeled data가 있다면 semi-supervised learning을 고려할 수 있다. Semi-supervised learning (준지도학습)은 소량의 labeled data에는 supervised learning을 적용하고 대용량 unlabeled data에는 unsupervised learning을 적용해 추가적인 성능향상을 목표로 하는 방법론이다. 이런 방법론에 내재되는 믿음은 label을 맞추는 모델에서 벗어나 데이터 자체의 본질적인 특성이 모델링 된다면 소량의 labeled data를 통한 약간의 가이드로 일반화 성능을 끌어올릴 수 있다는 것이다. (아래의 그림에서도 확인할 수 있듯이 왼쪽에 supervised learning과 오른쪽 semi-supervised learning을 비교해보면 supervised learning의 decision boundary는 사실상 optimal하지 않다. unlabeled data를 활용하여 데이터 자체의 분포를 잘 모델링하면 오른쪽 semi-supervised learning 그림처럼 더 좋은 decision boundary를 얻을 수 있다.)
<img src="https://velog.velcdn.com/images/becky-kwon/post/1d7f85e9-b1f5-4024-b00d-c6361c5243c5/image.png" alt=""></p>
</blockquote>
<h3 id="--ch4-noise-resilient-anomaly-detection">- CH4: Noise-resilient anomaly detection.</h3>
<p>Many weakly/semi-supervised anomaly detection method은 레이블이 지정된 훈련 데이터가 깨끗하다고 가정 <span style="color:gold"><strong>-&gt; 실수로 반대 클래스 레이블로 레이블이 지정된 noisy한 인스턴스에 취약할 수 있음.</strong></span> -&gt;  이러한 경우 비지도 방법을 대신 사용할 수 있지만 이는 실제 레이블이 지정된 데이터를 활용하지 못함.
<span style="color:gold"><strong>Noise-resilient model은 보다 정확한 감지를 위해 레이블이 지정되지 않은 데이터를 활용할 수 있습니다.</strong></span> 
(여기의 노이즈는 레이블이 잘못 지정된 데이터이거나 레이블이 지정되지 않은 경우을 말함) </p>
<h3 id="--ch5-detection-of-complex-anomalies">- CH5: Detection of complex anomalies.</h3>
<p>기존 방법의 대부분은 point anomalies에 대한 것이며 conditional anomaly and group anomaly에는 점 이상과 전혀 다른 행위를 나타내기 때문에 사용할 수 없다.
<span style="color:gold"><strong>-&gt; conditional/group anomalies 개념을 이상 측정/모델에 통합하는 것입니다. **</span> 
또한 현재 방법은 주로 단일 데이터 소스에서 이상을 감지하는 데 중점을 두는 반면, 많은 애플리케이션에서는 <span style="color:gold"></strong>-&gt; 다차원 데이터, 그래프, 이미지, 텍스트 및 오디오 데이터와 같은 multiple heterogeneous data sources를 사용하여 이상을 감지해야 한다.**</span> </p>
<h3 id="--ch6-anomaly-explanation">- CH6: Anomaly explanation</h3>
<p>Anomalies로 보고된 rare data 인스턴스는 사기 탐지 및 범죄 탐지 시스템에서 과소대표된 그룹과 같이 데이터에 표시된 소수 그룹에 대한 알고리즘 편향 가능성(possible algorithmic bias)을 초래할 수 있습니다. 
<span style="color:gold">*<em>-&gt;특정 데이터 인스턴스가 anomaly로 식별되는 이유에 대한 직접적인 단서를 제공하는 anomaly explanation algorithm을 갖추는 것입니다. *</em></span> 
(대부분의 이상 탐지 연구는 탐지 정확도에만 초점을 맞추고 식별된 이상에 대한 설명을 제공하는 기능을 무시합니다. 특정 탐지 방법에서 anomaly explanation 을 도출하는 것은 특히 복잡한 모델의 경우 아직 해결되지 않은 문제입니다. 본질적으로 해석 가능한 이상 탐지 모델을 개발하는 것도 중요하지만, 모델의 해석 가능성과 효율성의 균형을 잘 맞추는 것이 주요 과제로 남아 있습니다.)</p>
<h3 id="deep-learning-methods-vs-traditional-methods-in-anomaly-detection">Deep Learning Methods vs. Traditional Methods in Anomaly Detection.</h3>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/1464a72c-b96b-44b7-80ba-6803a28acc89/image.png" alt=""></p>
<hr>
<h1 id="3addressing-the-challenges-with-deep-anomaly-detection">3.Addressing the Challenges with Deep Anomaly Detection</h1>
<h2 id="31-preliminaries">3.1. Preliminaries</h2>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/d1e90915-f317-429d-bcdb-a5e8849593da/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/9be97aac-b435-45b0-bb2e-27a1fb01dbc4/image.png" alt=""></p>
<h2 id="32-categorization-of-deep-anomaly-detection">3.2. Categorization of Deep Anomaly Detection</h2>
<p>해당 영역에 대한 철저한 이해를 위해 모델링 관점에서 Deep Anomaly Detection을 3 가지 주요 범주와 11개의 세분화된 범주로 분류하는 계층적 분류법을 도입합니다. 
(각 방법 범주에서 해결할 수 있는 감지 문제도 Challenge로 제시됩니다)</p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/6b403128-492b-459f-86c1-1d59b4f85268/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/c2e92c6f-784c-4913-8bab-3e1e3ff0be29/image.png" alt=""></p>
<hr>
<h1 id="4-deep-learning-for-feature-extraction">4. Deep Learning for Feature Extraction</h1>
<ul>
<li>목표 : 고차원 및/또는 비선형 분리 가능한 데이터에서 저차원 특징 표현(feature representations)을 추출하는 것</li>
<li>특징 추출(Feature Extraction)과 이상치 점수 매기기(anomaly scoring)는 서로 완전히 분리되고 독립적</li>
<li><img src="https://velog.velcdn.com/images/becky-kwon/post/09ec99f7-c763-4408-8897-af0ed2261152/image.png" alt=""> </li>
</ul>
<p>(normally 𝐷 ≫ 𝐾)</p>
<ul>
<li><p><img src="https://velog.velcdn.com/images/becky-kwon/post/2d66cc40-3d2a-4571-b543-f76ab9cdbb46/image.png" alt=""></p>
</li>
<li><p><span style="color:gold"><strong>차원축소(PCA, random projection) 같은 방법론과 비교했을 때, 딥러닝 기술은 의미가 풍부한 특징과 비선형 특징 관계를 추출하는 데 훨씬 더 나은 능력을 보여주었다.</strong></span> </p>
</li>
<li><p>assumption :  딥러닝 모델에 의해 추출된 feature representation은 변칙적인 상황과 정상적인 상황을 구분하는 데 도움이 되는 식별 정보(discriminative information)를 보존합니다.</p>
</li>
<li><p>AlexNet, VGG 및 ResNet 등을 통해 저차원 특징을 추출한다. 이미지 데이터, 비디오 데이터와 같은 복잡한 고차원 데이터의 이상 탐지에서 탐색된 방법론이다.</p>
</li>
</ul>
<blockquote>
<h3 id="span-stylecoloraquamarine특성-추출-기법span"><span style="color:aquamarine">특성 추출 기법</span></h3>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/dcdc1c41-38d6-4106-b72e-b823571562ca/image.png" alt=""></p>
</blockquote>
<ul>
<li>사전 학습된 모델을 사용하여 새로운 데이터셋에서 특성을 추출하는 기법입니다.</li>
<li>특성 추출 기법은 사전 학습된 모델에서 이미지 데이터를 입력으로 받아서 합성곱층(convolutional layer)을 통해 이미지의 특성을 추출합니다. 이렇게 추출된 특성은 최종적으로 완전 연결층(fully connected layer)을 통해 분류됩니다.</li>
<li>새로운 데이터셋에서 특성 추출을 위해서는, 먼저 <span style="background-color:darkviolet"><strong>사전 학습된 모델의 합성곱층을 고정(freeze)</strong></span>시키고, <span style="background-color:darkviolet"><strong>완전 연결층 부분만 새로운 데이터셋에 맞게 변경하여 학습</strong></span>합니다.</li>
<li>따라서, 새로운 데이터셋에서는 이미지의 카테고리를 결정하는 부분인 마지막 완전 연결층만 학습하고, 나머지 합성곱층 계층들은 사전 훈련된 가중치를 그대로 사용하여 학습되지 않도록 고정합니다.</li>
</ul>
<blockquote>
<h3 id="span-stylecoloraquamarineunmasking-framework-for-online-anomaly-detection-span"><span style="color:aquamarine">Unmasking framework for online anomaly detection </span></h3>
</blockquote>
<ul>
<li>key idea : 연속된 두 비디오 시퀀스를 구별하기 위해 이진 분류기를 반복적으로 훈련시키면서, <span style="background-color:darkviolet"><strong>각 단계에서 가장 구별력 있는 특징(discriminant feature)을 점진적으로 제거</strong></span>하는 것입니다. =&gt; 비디오의 각 장면(Scene)이 비정상적인지 여부를 판단하는 알고리즘<pre><code>  (인용한 [논문](https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Unmasking-the-abnormal-events-in-video-2017)은 따로 벨로그에 정리하였다.)</code></pre></li>
<li>ILSVRC 벤치마크에서 사전 훈련된 VGG 모델 (135)는 이러한 목적을 위해 표현적인 외관 특징(appearance features)을 추출하는 데 효과적</li>
</ul>
<blockquote>
<h3 id="span-stylecoloraquamarine-downstream-anomaly-scoring에-pre-trained-model이-아닌-deep-feature-extraction-model을-명시적으로-훈련하는-것span"><span style="color:aquamarine"> Downstream Anomaly Scoring에 pre-trained model이 아닌 deep feature extraction model을 명시적으로 훈련하는 것</span></h3>
</blockquote>
<ul>
<li><a href="https://arxiv.org/abs/1510.01553">논문</a>에서는 특징 표현을 자동으로 학습하기 위해 딥러닝 네트워크를 활용하는 Appearance and Motion DeepNet (AMDN)을 제안</li>
<li>스택된 노이즈 제거 오토인코더(stacked denoising autoencoders)를 사용하여 <span style="background-color:darkviolet"><strong>외모와 동작 특징 및 결합된 표현(초기 융합)을 각각 학습</strong></span>
<img src="https://velog.velcdn.com/images/becky-kwon/post/310be738-35fe-433b-9088-3eddb0a64844/image.png" alt=""></li>
<li>학습된 표현을 기반으로, 3개의 일류 SVM(one-class SVM) 모델을 사용하여 각 입력의 이상 점수를 예측하며, 이러한 점수들은 후기 융합 전략을 통해 통합되어 최종 이상 감지를 수행</li>
</ul>
<blockquote>
<h3 id="span-stylecoloraquamarine-linear-one-class-svm--dbn--span"><span style="color:aquamarine"> Linear one-class SVM + DBN  </span></h3>
<p><a href="https://www.sciencedirect.com/science/article/pii/S0031320316300267">논문</a>에서 One-class Support Vector Machines은 Deep Belief net(DBN)에서 생성된 고차원 테이블 형식 데이터의 저차원 표현에 대한 이상 탐지를 활성화하는 데 사용.
<img src="https://velog.velcdn.com/images/becky-kwon/post/f27705df-942c-4c58-a9ca-d4f150f0ca12/image.png" alt=""></p>
</blockquote>
<h2 id="❗장단점">❗장단점</h2>
<ul>
<li><p>장점 : 
  (i) state-of-the-art(pre-trained) deep model과 기성 이상 탐지기를 쉽게 사용
  (ii) Deep feature extraction은 널리 사용되는 선형 방법보다 더 강력한 차원 축소를 제공
  (iii) 심층 모델 및 탐지 방법이 공개적으로 제공되므로 구현이 쉬움</p>
</li>
<li><p>단점 : 
  (i) 완전히 분리된 feature extraction 과 anomaly scoring은 종종 최적이 아닌 이상 점수(suboptimal anomaly scores)로 이어짐.
  (ii) Pre-trained deep model은 일반적으로 특정 유형의 데이터로 제한</p>
</li>
</ul>
<hr>
<h1 id="5-learning-feature-representations-of-normality">5. Learning Feature Representations of Normality</h1>
<h2 id="51generic-normality-feature-learning">5.1.Generic Normality Feature Learning</h2>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/b04971b4-e1a2-4f73-b7d8-0025f390c60d/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/becky-kwon/post/96f3949f-b623-4b40-b7b7-e5ed75b63495/image.png" alt=""></p>
<h3 id="511autoencoders">5.1.1.Autoencoders</h3>
<p><span style="background-color:darkcyan"><strong>[오토인코더 목표] : 데이터 인스턴스를 잘 재구성할 수 있는 저차원 특징 표현 공간을 학습하는 것</strong></span></p>
<ul>
<li>데이터 압축이나 차원 축소를 위해 널리 사용됨</li>
<li>이 기술을 이상 탐지에 사용하는 이유는 <span style="background-color:darkcyan"><strong>학습된 특징 표현(feature representation)이 재구성 오류를 최소화하기 위해(minimize reconstruction errors) 데이터의 중요한 규칙성(important regularities of the data)을 학습하도록 강제</strong></span>되기 때문</li>
<li><span style="background-color:cadetblue"><strong>이상치는 재구성하기 어려워 =&gt; 큰 재구성 오류를 가지게 됨</strong></span></li>
</ul>
<p><span style="background-color:steelblue"><strong>[오토인코더 가정] : 정상 인스턴스(Normal instance)는 압축된 공간(compressed space)에서 이상치보다 더 잘 재구성될 수 있습니다</strong></span></p>
<blockquote>
<p>(오토인코더에 대한 설명은 여기 <a href="https://itsnyeong.tistory.com/13#google_vignette">블로그</a>을 들어가서 한 번 보고오는게 좋다.)
<img src="https://velog.velcdn.com/images/becky-kwon/post/0607d215-e594-4aee-8c9d-832762ca72b6/image.png" alt=""></p>
</blockquote>
<h2 id="52anomaly-measure-dependent-feature-learning">5.2.Anomaly Measure-dependent Feature Learning</h2>
<blockquote>
<p>🔖 Reference
<a href="https://arxiv.org/abs/2007.02500">본 논문</a>
<a href="https://infoinhere.tistory.com/8">딥러닝에서의 end-to-end</a>
<a href="https://sanghyu.tistory.com/177">semi-supervised learning</a>
<a href="https://resultofeffort.tistory.com/101">[pytorch] 전이 학습 - 특성 추출 기법 (Feature Extraction)</a>
<a href="https://www.slideshare.net/slideshow/paper-review-unmasking-the-abnormal-events-in-video/104896953">[Paper Review] Unmasking the abnormal events in video</a>
<a href="https://rla020.tistory.com/40">[논문리뷰] Restricted Boltzmann Machine(RBM)와 Deep Belief Network(DBN</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[📖논문 리뷰] Generative Adversarial Nets (2014)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Generative-Adversarial-Nets-2014</link>
            <guid>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Generative-Adversarial-Nets-2014</guid>
            <pubDate>Tue, 14 May 2024 06:05:54 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/d76b8550-c192-4a50-b804-c02ee36af01b/image.png" alt=""></p>
<p>오늘은 GAN을 하나하나 제대로 파악하고자 한다.</p>
<p><a href="https://pseudo-lab.github.io/Tutorial-Book/chapters/GAN/Ch1-Introduction.html">논문 정리1</a>
<a href="https://lcyking.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-Generative-Adversarial-NetsGANs%EC%9D%98-%EC%9D%B4%ED%95%B4">논문 정리2</a>
<a href="https://velog.io/@minkyu4506/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0GANGenerative-Adversarial-Nets-%EB%A6%AC%EB%B7%B0">논문 정리3</a>
<a href="https://rython.tistory.com/12">수식 이해1</a>
<a href="https://blog.naver.com/euleekwon/221558014002">수식 이해2</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[📖논문 리뷰] Semi-Supervised Learning under Class Distribution Mismatch (2020)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Semi-Supervised-Learning-under-Class-Distribution-Mismatch-2020</link>
            <guid>https://velog.io/@becky-kwon/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Semi-Supervised-Learning-under-Class-Distribution-Mismatch-2020</guid>
            <pubDate>Wed, 14 Feb 2024 17:01:01 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/428cd5db-86d3-468a-ae50-116664f5f1ea/image.png" alt=""></p>
<p>최근에 부스트캠프에서 Data-Centric task를 수행하면서 불균형 데이터와 데이터 품질에 대해서 어떻게 관리하는게 좋을지에 대해 큰 궁금증이 생겼다. 그래서 찾아보던 중 <a href="https://youtu.be/JjGbCMf1ktU?si=JoTxMgegBwNP_NzK">유튜브 세미나 영상</a>이 있어서 보게 되었고 이렇게 정리하게 되었다.</p>
<blockquote>
<p>🔖 Reference
<a href="https://velog.io/@minkyu4506/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0GANGenerative-Adversarial-Nets-%EB%A6%AC%EB%B7%B0">논문 정리1</a>
<a href="https://lcyking.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-Generative-Adversarial-NetsGANs%EC%9D%98-%EC%9D%B4%ED%95%B4">논문 정리2</a>
<a href="https://rython.tistory.com/12">수식 이해1</a>
<a href="https://blog.naver.com/euleekwon/221558014002">수식 이해2</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[부스트캠프 AI Tech] 공부 정리 (D+45)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-%EA%B3%B5%EB%B6%80-%EC%A0%95%EB%A6%AC-D45</link>
            <guid>https://velog.io/@becky-kwon/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-%EA%B3%B5%EB%B6%80-%EC%A0%95%EB%A6%AC-D45</guid>
            <pubDate>Fri, 05 Jan 2024 19:51:21 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/37edf522-1f77-4d4d-a7d6-bbef849184e6/image.png" alt=""></p>
<p>Positional Embedding은 현재 Transformer기반 모델들에서 token의 위치를 알려주는데 있어서 중요한 부분이 되었다고 생각합니다. 오늘은 김성현 마스터의 &quot;LLM과 Position Encoding&quot; 특강을 듣고 그 내용을 한 번 정리해보려고 합니다. 개인적으로 내용은 어려웠지만 꼭 벨로그에 정리해볼 필요가 있다는 생각이 든 좋은 특강이었습니다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[부스트캠프 AI Tech] 공부 정리 (D+44)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-%EA%B3%B5%EB%B6%80-%EC%A0%95%EB%A6%AC-D44</link>
            <guid>https://velog.io/@becky-kwon/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-%EA%B3%B5%EB%B6%80-%EC%A0%95%EB%A6%AC-D44</guid>
            <pubDate>Fri, 05 Jan 2024 19:45:33 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/01abb050-d626-4a98-9000-fd22b86c1d89/image.png" alt=""></p>
<p>인공지능과 자연어처리, 한국어 전처리, 한국어 토크나이징에 대해서 공부해보았습니다. 실제로 우리가 웹이나 메신저를 통해 사용하는 언어는 &#39;정제 되지 않은 언어&#39; 입니다. 해당 데이터가 적용되는 방향에 따라 정제가 필요할 수도, 필요하지 않을 수도 있습니다. 요즘에 많이 느끼지만, 오히려 더욱 어려운 데이터로 학습한 모델의 성능이 좋을 수도 있습니다. 이 점을 기억하면서 자연어 전처리에 대해서 충분히 생각해보아야 한다고 봅니다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[부스트캠프 AI Tech] 공부 정리 (D+41,42,43)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-%EA%B3%B5%EB%B6%80-%EC%A0%95%EB%A6%AC-D414243</link>
            <guid>https://velog.io/@becky-kwon/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-%EA%B3%B5%EB%B6%80-%EC%A0%95%EB%A6%AC-D414243</guid>
            <pubDate>Fri, 05 Jan 2024 19:40:43 GMT</pubDate>
            <description><![CDATA[<p>프로젝트로 하고 싶었던, Relation Extraction(RE) task project를 시작하게 되었다. Entity같의 Relation(관계)에 대한 label을 classification 하는 과제를 하게 되었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[부스트캠프 AI Tech] 공부 정리 (D+40)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-%EA%B3%B5%EB%B6%80-%EC%A0%95%EB%A6%AC-D40</link>
            <guid>https://velog.io/@becky-kwon/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-%EA%B3%B5%EB%B6%80-%EC%A0%95%EB%A6%AC-D40</guid>
            <pubDate>Fri, 05 Jan 2024 19:24:29 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/e4d3d0c0-3076-4283-ac74-24d69aaf79d4/image.png" alt=""></p>
<p>웹 프로그래밍에 대한 지식이 없어도, 웹서비스 형태로 프로토타이핑을 할 수 있는 Streamlit이라는 프레임워크에 대해서 학습해보는 시간을 가졌다. HuggingFce로 구현한 Sentiment Analysis모델을 Streamlit으로 만들어보았고, 이렇게 그 과정을 정리해보았다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[부스트캠프 AI Tech] 공부 정리 (D+39)]]></title>
            <link>https://velog.io/@becky-kwon/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-%EA%B3%B5%EB%B6%80-%EC%A0%95%EB%A6%AC-D39</link>
            <guid>https://velog.io/@becky-kwon/%EB%B6%80%EC%8A%A4%ED%8A%B8%EC%BA%A0%ED%94%84-AI-Tech-%EA%B3%B5%EB%B6%80-%EC%A0%95%EB%A6%AC-D39</guid>
            <pubDate>Fri, 05 Jan 2024 19:21:51 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/becky-kwon/post/db58c467-48e7-496c-9791-2630a62d0640/image.png" alt=""></p>
<p>디버깅하는 방법과 그 흐름에 대해서 배울 수 있었다. 또한 항상 지향하고 있는 MLOps에 대해서 강의에서 다루고 있어서 그 내용또한 정리해 보았다. 대학원생도 당연히 Model Serving을 할 줄 알아야 한다고 보기에 이 내용 또한 알아보았다. 그리고 머신러닝 프로젝트 라이프 사이클을 전반적으로 파악해볼 수 있었다.</p>
]]></description>
        </item>
    </channel>
</rss>