<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>learning_rate</title>
        <link>https://velog.io/</link>
        <description>GIST 기계로봇공학부 석사과정 / 왕도는 없다.</description>
        <lastBuildDate>Mon, 23 Mar 2026 05:00:46 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>learning_rate</title>
            <url>https://velog.velcdn.com/images/learning_rate/profile/5c04a4d0-16dc-4f5e-a95f-09ba274a3527/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. learning_rate. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/learning_rate" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[AIX -2]]></title>
            <link>https://velog.io/@learning_rate/AIX-2</link>
            <guid>https://velog.io/@learning_rate/AIX-2</guid>
            <pubDate>Mon, 23 Mar 2026 05:00:46 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/learning_rate/post/3381ba94-31c3-4614-a0b7-8900225921f8/image.png" alt=""></p>
<p>에이전트 코딩 시대, 우리가 갖춰야 할 태도</p>
<p>코덱스 5.4 써보기</p>
<p>에이전트 시대는 세 가지 근본적 패러다임 전환을 요구한다.</p>
<ol>
<li><p>일하는 방식의 전환 : 결과물 -&gt; 장치
(결과물을 생성하는 시스템 harness: llm 을 제어하는 장치 느낌)
(예를들면 지피티한테 영어로 하지마 ! 라고 한다해도 할때가 있는데 이걸 그냥 규제해버리는 경우에는 오류가 날 일이 없다&lt; 이게 하네스)</p>
</li>
<li><p>경쟁력의 원천 전환 : 코드 -&gt;설계 문서화</p>
</li>
<li><p>고객 정의의 전환 : 사람 -&gt; 사람 + 에이전트</p>
</li>
</ol>
<p>llm과 프롬프트엔지니어링 같이 하고 사용 결과들을 파일로 가지고 있어라 (그래야 성능이 좋아짐, llm은 기억이 없다)</p>
<p>관리능력이 중요해졌다. (실리콘 밸리의 경우 PM당 개발자가 1명 정도까지 줄었다)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AIX-1]]></title>
            <link>https://velog.io/@learning_rate/AIX-1</link>
            <guid>https://velog.io/@learning_rate/AIX-1</guid>
            <pubDate>Mon, 09 Mar 2026 05:30:21 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/learning_rate/post/1648df8b-2f37-4628-b3de-3345acb236c7/image.png" alt=""></p>
<p>유료버전을 써라,,</p>
<p>기반 인프라 
-Vector DB</p>
<p>application update?
-&gt; 업데이트 요구하지않는 (자동으로 바뀌는)앱들은 전부 클라우드 사용</p>
<p>서비스를 외국학생들한테 제공하고, 그 경험과 데이터 가져가세요</p>
<p>앞으로 취업 비전 : 인재 흡수 과정 , 내가 만든 agent나 시스템의 데이터와 함께 팔려가는..</p>
<p>연구 프로그램 Reference : 연구 펀딩 요청가능-&gt; 이때 견적을 스스로 짤 수 있어야함(이걸 이번 수업때 배우자) -&gt; 이걸 aws에 설득</p>
<p>Robotics and Physical AI</p>
<p>나라장터에 올라와있는 AI 과제들, AI로 트래킹 하는 서비스
-&gt;  사용에서 마치는 것이 아닌, 나온 데이터들을 다시 사용하는 방안까지</p>
<p>안드로이드 IOS 프론트개발 절대하지마라 
-&gt; canva : 캔바에서 ppt를 만든다고 했을때, 예전같았으면 제미나이를 통해 도식화 이미지를 받고 이를 캔바에 옮겼지만, 나노바나나를 캔바에서 사용하는 경우가 늘어나는중
diagramify &lt;&lt; </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[(메모) 그림자 분신 Agent의 Policy는 어떻게]]></title>
            <link>https://velog.io/@learning_rate/%EB%A9%94%EB%AA%A8-%EA%B7%B8%EB%A6%BC%EC%9E%90-%EB%B6%84%EC%8B%A0-Agent%EC%9D%98-Policy%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C</link>
            <guid>https://velog.io/@learning_rate/%EB%A9%94%EB%AA%A8-%EA%B7%B8%EB%A6%BC%EC%9E%90-%EB%B6%84%EC%8B%A0-Agent%EC%9D%98-Policy%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C</guid>
            <pubDate>Fri, 30 Jan 2026 13:16:48 GMT</pubDate>
            <description><![CDATA[<p><em>분신술의 분신-Agent들은 Policy 와 Reward 설계를 어떻게 했길래 어쩌구저쩌구</em></p>
<blockquote>
<h3 id="multi-agent와-관련된-여러가지-내용들--그냥-저냥-정리-끄적끄적">Multi Agent와 관련된 여러가지 내용들 . 그냥 저냥 정리 끄적끄적</h3>
</blockquote>
<h2 id="sb3">SB3</h2>
<p>StableBaseline 하는 이유는??</p>
<p>“멀티에이전트를 학습시키기 위해서”가 아니라
“환경이 강화학습 문제로서 성립하는지 검증하기 위해서”다.....</p>
<p>즉,
 SB3 = 멀티에이전트 학습 
가 아니라
 SB3 = 환경/보상/종료 설계 검증용 도구 </p>
<p> SB3로 하는 건 이거야:</p>
<p>“환경 + reward 설계만 가지고 아무 규칙 없는 신경망 정책이 goal 도달 + 충돌 회피를 스스로 학습할 수 있는가?”</p>
<p>-&gt; 멀티에이전트 여부와 무관</p>
<h2 id="내가-하고-싶은거">내가 하고 싶은거</h2>
<ul>
<li>여러 UAV가 동시에 존재</li>
<li>서로 충돌 판정 있음</li>
<li>같은 공간에서 상호 간섭</li>
<li>goal도 각각 다름</li>
</ul>
<p> “SB3는 멀티에이전트 지원 안 하잖아?”</p>
<p>맞다.</p>
<p>SB3는 멀티에이전트 학습 라이브러리가 아니다.</p>
<p>하지만 SB3로 할 건:
agent 4대를 하나의 정책으로 묶어서
parameter sharing 형태로 학습</p>
<p>수식으로 쓰면: πθ(a | o)</p>
<p>모든 UAV가 같은 θ를 씀, 관측만 다름</p>
<p>이건 논문에서 이렇게 부름:</p>
<blockquote>
<p>** “Decentralized execution with shared policy”**</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Agentic AI 에 대한 생각들]]></title>
            <link>https://velog.io/@learning_rate/Agentic-AI-%EC%97%90-%EB%8C%80%ED%95%9C-%EC%83%9D%EA%B0%81%EB%93%A4</link>
            <guid>https://velog.io/@learning_rate/Agentic-AI-%EC%97%90-%EB%8C%80%ED%95%9C-%EC%83%9D%EA%B0%81%EB%93%A4</guid>
            <pubDate>Thu, 03 Jul 2025 06:53:56 GMT</pubDate>
            <description><![CDATA[<h1 id="뒤죽박죽-엉망입니다--250703">뒤죽박죽 엉망입니다 / 250703</h1>
<p>1.LLM의 중요한 한계점</p>
<p>1) 제한된 지식 : 개인정보라던가 회사의 내부 자료 같은건 알수가 없다.  ( ex 내일 내 구글 캘린더에 어떤 약속이 잡혀있지 ? ) . 방대한 데이터를 학습했지만 독점적인 정보는 모름
2) 수동적 : 능등적으로는 프롬프트 없이 작동하지 않음</p>
<ol start="2">
<li>AI Workflow
LLM의 한계를 좀 보완해주자. 똑똑한 LLM 에게 일하는 순서나 작업 지침을 미리 정의해준다. ( ex 내일 내 캘린더 일정을 물어봤을때.  &lt;만약 사용자가 일정에 대해 물어보면 1. 사용자의 구글 캘린더에 접속해서 데이터를 가져오고 2. 그 데이터를 통해 답변을 생성해라&gt; 라고 지침을 미리 정의해 둔다.) =&gt; 즉 워크 플로우를 만들어썼음
결국 control logic 에 따라서만 움직인다. &lt; AI Workflow 의 기본 개념
모든 작업 단계를 정의하고 어떤 순서 / 어떤 도구를 쓸지 의사결정을 하는 주체가 사람이다. &lt; AI Agent가 아니다
여기서 나오는 RAG의 개념 ( Retriever Argument Generation ) 검색 증강 생성. 
RAG : AI 모델이 답변을 생성하기 전에 미리 저장해둔 DB나 WEB에서 정보를 가져오고 그 정보를 참고해서 답변을 보강하는 프로세스 &lt;&lt; 얘도 결국 AI Workflow의 한 형태</li>
</ol>
<p>한계: 프롬프트를 수정하고 결과를 보고 만족스러운 결과를 계속해서 모니터링 해야함</p>
<p>3.AI Agent
의사결정을 내리는 인간의 역할을 LLM이 대신해야한다. 목표를 주면 목표를 달성하기 위해 추론을 하고 행동을하며 결과를 보고 반복하면서 개선해나갈수 있는 능력을 가졌다. 1. 추론 ) AI Agent 는 목표를 달성하기 위한 최적의 접근 방식을 스스로 생각하고 계획을 한다. (예 : 최신 ai 뉴스 기사들을 모아서 요약을 하고 그걸 바탕으로 주간 뉴스 레터를 작성해서 발송을 해줘 =&gt; AI agent : &#39;뉴스 기사들을 모으는 가장 효과적인 방법이 뭘까?&#39; 라고 생각해서 어떤게 효율적인지 스스로 판단 ( 하나하나 크롤링할까? API를 쓸까? 하나하나 손으로 복붙할까?, 요약은 어떻게 할까? 뉴스레터 형식을 원하는 사용자를 모으는 방법은 어떤게 효율적일까? 등의 전략을 스스로 짜는 것) 가장 효율적이고 합리적인 방법을 스스로 짠다.
2. 행동 ) AI Agent 는 자기가 세운 계획을 스스로 실행시키기 위해서 여러 도구들을 사용해 작업을 수행한다. (위의 예에서 , 뉴스 수집은 구글 뉴스 api,  요약은 최근에 나온 고성능 LLM 모델인 OOO모델을 쓰고, 뉴스레터 발송은 샌드그리드 api 를 연동해서 처리하자 같이 적절한 도구를 선택하고 그걸로 실행) =&gt; 사람이 컴퓨터를 사용하는듯이,,
3. 반복 능력 ) 자신의 수행한 작업의 중간결과를 스스로 관찰을 하고, 만약에 개선이 필요하다고 판단을 하면  자율적으로 프로세스를 반복하고 수정을 한다. ( 아까 AI Workflow에서는 게시물의 결과가 마음에 안들면 프롬프트를 수정해야했는데, 얘는 그럴 필요가 없다) ( 예를 들어 뉴스 레터의 특정부분이 agent 가 판단하기에 내용이 좀 부족한거 같다 하면은 그 부분을 보충하기 위한 추가 적인 작업을 자율적으로 진행 =&gt; 만족스러운 결과가 나올 때 까지)</p>
<p>생성형 AI </p>
<ul>
<li>사전학습 데이터 기반 답변 생성</li>
<li>텍스트부터 음성, 영상 등 멀티모달 수행</li>
<li>콘텐츠 생성, 단위 업무 자동화 등 활용</li>
</ul>
<p>Agenitc AI</p>
<ul>
<li>사람의 사고 과정을 AI가 학습해 수행</li>
<li>지시 없이도 자율적으로 판단</li>
<li>일상생활과 산업에서 행동으로 현실화</li>
</ul>
<p>필수 조건 : Reasoning 추론(고급 추론 능력) 행동 Action(자율실행) </p>
<p>AI Agent 와의 차이 
AI Agent : 정해진 프로세스대로 특정 작업을 수행하는 기술
Agentic AI : 자율적으로 계획, 실행, 평가를 반복하며 스스로의 판단으로 복잡한 문제를 해결하는 기술 </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Integrating Large Language Models for UAV
Control in Simulated Environments: A Modular
Interaction Approach 논문리뷰-GPT]]></title>
            <link>https://velog.io/@learning_rate/Integrating-Large-Language-Models-for-UAVControl-in-Simulated-Environments-A-ModularInteraction-Approach-%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-GPT</link>
            <guid>https://velog.io/@learning_rate/Integrating-Large-Language-Models-for-UAVControl-in-Simulated-Environments-A-ModularInteraction-Approach-%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-GPT</guid>
            <pubDate>Wed, 09 Apr 2025 06:41:34 GMT</pubDate>
            <description><![CDATA[<h1 id="📡-논문-리뷰-언어로-uav를-조종한다고">📡 [논문 리뷰] 언어로 UAV를 조종한다고?</h1>
<h3 id="-llm-기반-드론-제어-프레임워크-연구-리뷰-2024-arxiv241017602">― LLM 기반 드론 제어 프레임워크 연구 리뷰 (2024, arXiv:2410.17602)</h3>
<h2 id="✈️-개요-사람이-말하면-드론이-움직인다">✈️ 개요: 사람이 말하면 드론이 움직인다?</h2>
<p>최근, 인공지능 기술의 발전으로 <strong>자연어를 이용한 로봇 제어</strong>가 가능해지고 있습니다. 이번 논문에서는 *&quot;LLM (Large Language Model) 기반 UAV(Unmanned Aerial Vehicle, 무인항공기) 제어&quot;*라는 흥미로운 주제를 다룹니다.</p>
<p>논문 제목은 다음과 같습니다:</p>
<blockquote>
<p><strong>Integrating Large Language Models for UAV Control in Simulated Environments: A Modular Interaction Approach</strong>
<em>(Abhishek Phadke et al., 2024, arXiv preprint)</em></p>
</blockquote>
<h2 id="📌-핵심-아이디어-요약">📌 핵심 아이디어 요약</h2>
<p>이 논문은 다음을 목표로 합니다:</p>
<blockquote>
<p>&quot;<strong>자연어 명령</strong>을 이해하는 LLM(ChatGPT 등)을 활용하여, UAV가 사람의 언어만으로 움직이도록 만드는 시스템 구축&quot;</p>
</blockquote>
<h2 id="🧠-배경-왜-이게-필요할까">🧠 배경: 왜 이게 필요할까?</h2>
<ul>
<li>기존 UAV 제어는 매우 복잡한 프로그래밍 지식과 센서 설정이 필요합니다.</li>
<li>LLM을 통해 <strong>비전문가도 자연어로 쉽게 UAV를 제어</strong>할 수 있다면, 활용 범위가 획기적으로 넓어집니다.</li>
<li>특히 자율비행, 구조작업, 재난 대응, 농업 등에서 매우 유용할 수 있습니다.</li>
</ul>
<h2 id="🔧-시스템-구조-언어에서-시뮬레이션까지">🔧 시스템 구조: 언어에서 시뮬레이션까지</h2>
<p>이 논문은 아래와 같은 <strong>4단계 모듈 구조</strong>를 설계합니다:</p>
<blockquote>
<p><strong>(1) 자연어 입력 → (2) LLM → (3) MATLAB 제어 코드 생성 → (4) CoppeliaSim 시뮬레이션 실행</strong></p>
</blockquote>
<h3 id="🔍-fig-3-프레임워크-구조도">🔍 Fig. 3: 프레임워크 구조도</h3>
<p>📸 <em>Boilerplate framework for interaction streams and LLM communication with UAV agent and environment</em></p>
<p>이 그림은 시스템이 어떻게 구성되어 있는지를 보여줍니다. LLM은 UAV 제어를 위한 코드(command)를 생성하며, MATLAB이 이를 실행하여 시뮬레이터로 전달합니다.</p>
<h2 id="🧭-어떻게-작동할까">🧭 어떻게 작동할까?</h2>
<h3 id="사용된-도구들">사용된 도구들:</h3>
<table>
<thead>
<tr>
<th>구성 요소</th>
<th>플랫폼</th>
<th>역할</th>
</tr>
</thead>
<tbody><tr>
<td>LLM</td>
<td>OpenAI ChatGPT</td>
<td>자연어 → 제어 명령 생성</td>
</tr>
<tr>
<td>GNC</td>
<td>MATLAB</td>
<td>코드 실행 및 인터페이스</td>
</tr>
<tr>
<td>시뮬레이터</td>
<td>CoppeliaSim</td>
<td>UAV 동작 시각화</td>
</tr>
<tr>
<td>API 래퍼</td>
<td>MatGPT</td>
<td>MATLAB ↔ GPT 연결 도구</td>
</tr>
</tbody></table>
<h3 id="🧾-table-ii-시스템-구성-요약">🧾 TABLE II: 시스템 구성 요약</h3>
<p>📸 <em>Details the primary framework components, specific platforms used, and their listed function</em></p>
<h2 id="🧪-실험-드론이-명령을-이해할까">🧪 실험: 드론이 명령을 이해할까?</h2>
<p>연구진은 3가지 시나리오를 실험합니다:</p>
<table>
<thead>
<tr>
<th>미션 번호</th>
<th>장애물 회피 방식</th>
<th>설명</th>
</tr>
</thead>
<tbody><tr>
<td>Mission 1</td>
<td>방향 전환</td>
<td>장애물 옆으로 회피</td>
</tr>
<tr>
<td>Mission 2</td>
<td>고도 변경</td>
<td>위로 상승해 회피</td>
</tr>
<tr>
<td>Mission 3</td>
<td>반경 회피</td>
<td>구형 장애물 반경 바깥으로 우회</td>
</tr>
</tbody></table>
<h3 id="🔍-fig-810-미션-실행-장면-cep-1">🔍 Fig. 8~10: 미션 실행 장면 (CEP-1)</h3>
<p>📸 <em>Mission 1 and 2 executions in CEP-1 environment</em>
📸 <em>Mission 3 execution in CEP-1 environment</em></p>
<h3 id="🔁-자연어-명령-예시">🔁 자연어 명령 예시:</h3>
<blockquote>
<p>*&quot;Fly forward 10 meters and avoid the obstacle by ascending.&quot;*</p>
</blockquote>
<p>이런 명령을 GPT가 해석하여 MATLAB 코드로 변환하고, UAV가 시뮬레이터에서 해당 동작을 수행합니다.</p>
<h2 id="🌐-시각화-결과">🌐 시각화 결과</h2>
<h3 id="🔍-fig-1113-시뮬레이터-내-실제-uav-움직임">🔍 Fig. 11~13: 시뮬레이터 내 실제 UAV 움직임</h3>
<p>📸 <em>Final execution of Mission 1~3 in CEP-2 environment (Direct LLM control)</em></p>
<h3 id="🔍-fig-14-경로-비교">🔍 Fig. 14: 경로 비교</h3>
<p>📸 <em>Path changes for the three missions when executed under LLM control</em></p>
<h2 id="💰-현실적인-제약도-있다">💰 현실적인 제약도 있다</h2>
<h3 id="🔍-fig-15-api-호출-비용">🔍 Fig. 15: API 호출 비용</h3>
<p>📸 <em>API costs for various ChatGPT LLM models</em></p>
<h2 id="📍-한계점--향후-과제">📍 한계점 &amp; 향후 과제</h2>
<ul>
<li>아직은 <strong>시뮬레이션 기반</strong> (실제 드론 미적용)</li>
<li>모든 환경은 <strong>사전 맵핑되어 있음</strong></li>
<li><strong>실시간 응답 지연</strong> 존재</li>
<li><strong>스웜(다중 UAV 제어)</strong> 기술은 적용되지 않음</li>
</ul>
<h2 id="🌱-결론-실현-가능성-있는-미래-기술">🌱 결론: 실현 가능성 있는 미래 기술</h2>
<p>이 논문은 단순한 아이디어를 넘어, 실제로 작동하는 프로토타입을 구현하며:</p>
<blockquote>
<p>&quot;언어 기반 자율비행(Language-Driven Flight)&quot;이 가능한 구조를 제안합니다.</p>
</blockquote>
<h2 id="💬-개인적인-인사이트">💬 개인적인 인사이트</h2>
<p>이 논문은 특히 다음과 같은 분들에게 유익합니다:</p>
<p>✅ 자연어 처리와 로보틱스의 접점이 궁금한 사람
✅ UAV 시뮬레이션 기반 연구를 시작하려는 연구자
✅ GPT 응용 기술의 산업화 사례를 찾는 개발자</p>
<h2 id="📂-참고-링크">📂 참고 링크</h2>
<ul>
<li>📄 논문 원문: <a href="https://arxiv.org/abs/2410.17602">arXiv 2410.17602</a></li>
<li>🔧 MATGPT: <a href="https://github.com/toshiakit/MatGPT">https://github.com/toshiakit/MatGPT</a></li>
<li>🛠 CoppeliaSim: <a href="https://www.coppeliarobotics.com/">https://www.coppeliarobotics.com/</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[(Paper) TD3 - Addressing Function Error in Actor-Critic Methods (2018)]]></title>
            <link>https://velog.io/@learning_rate/TD3-Addressing-Function-Error-in-Actor-Critic-Methods-2018</link>
            <guid>https://velog.io/@learning_rate/TD3-Addressing-Function-Error-in-Actor-Critic-Methods-2018</guid>
            <pubDate>Sat, 25 Jan 2025 15:41:36 GMT</pubDate>
            <description><![CDATA[<p>&lt;TD3 논문 리뷰&gt;
<strong>누가 DRL을 묻거든 눈 들어 TD3 논문을 보게 하라...</strong>
<img src="https://velog.velcdn.com/images/learning_rate/post/98becc7d-283f-45ad-90c5-0d8386823e2d/image.png" alt=""></p>
<blockquote>
<p>비교적 최근(?) 논문은 처음 읽는데, 래퍼런스나 요구하는 사전 지식의 스케일이 크다. 최대한 이해하기 쉽게 정리했으니, 이해가 안되는 부분이 있다면 이번 기회에 재정립 하면 좋을 것 같다.
Paper : <a href="https://arxiv.org/pdf/1802.09477">https://arxiv.org/pdf/1802.09477</a></p>
</blockquote>
<p>DDPG와 거의 같은 형태를 가지고 있기 때문에 구현이 쉽다. (DDPG를 develop 했다고 생각하면 좋다.)
해당 논문에서 해결하려는 Problem 은 2가지</p>
<ul>
<li>Overestimation Bias </li>
<li><blockquote>
<p>solution : Clipped Double Q-network and Update</p>
</blockquote>
</li>
<li>Accumulation error from TD update</li>
<li><blockquote>
<p>solution : Delayed Policy Update &amp; Target Policy Smoothing</p>
</blockquote>
</li>
</ul>
<h3 id="overestimation-bias">Overestimation Bias</h3>
<blockquote>
<p>Q-Learning 은 학습에서 Greedy Target을 사용하는데, Greedy Target을 위해 approximator를 사용하는 과정에서 추정오차 발생
    -&gt; Greedy Target 에서 max연산은 오차가 포함된 Q값 중 가장 큰 값을 선택한다.
    -&gt; 이는 Overestimation bias로 이어짐
    <strong>Actor - Critic 방식에서도 마찬가지임을 논문에서 보여주고 있다.</strong></p>
</blockquote>
<h3 id="accumulation-error-from-td-update">Accumulation error from TD update</h3>
<blockquote>
<p> target network 와 overestimation bias의 연관성을 보이고,
 -&gt; policy update를 지연시켜서 update당 error를 줄여 성능을 향상 시킨다.</p>
</blockquote>
<h3 id="td3-얘기하는데-actor-critic-q-learning-얘기를-왜할까">TD3 얘기하는데 Actor-Critic, Q-Learning 얘기를 왜할까?</h3>
<p> <img src="https://velog.velcdn.com/images/learning_rate/post/fda204f6-7916-45e6-a49d-63bc91adf7bc/image.png" alt="">
<img src="https://velog.velcdn.com/images/learning_rate/post/20fc2e0d-0e63-4986-b3d9-835289cb0681/image.png" alt=""></p>
<blockquote>
<p>사실 이 얘기만 잘 풀어하면 논문 내용 전체를 다 봤다고 말해도 될거같다.
 일단 보이는것처럼 TD3 자체는 Actor-Critic 구조를 갖는 알고리즘이다. Actor-Critic은 기본적으로 Actor, Critic을 동시에 학습한다.
 사진처럼 Actor-Critic 구조는 연속적인 행동 공간에서 잘 작동하도록 설정된 반면 Q-Learning은 주로 discrete한 환경에서 사용된다.</p>
</blockquote>
<p> <img src="https://velog.velcdn.com/images/learning_rate/post/cc64c60c-1d4f-455f-9bd9-1959e0720198/image.png" alt=""></p>
<blockquote>
<p>좀 더 자세히 얘기해보면 Q러닝은 위 사진처럼 max a프라임에 관한 큐값을 greedy하게 고르는 방식을 택하여 critic을 학습한다.
-&gt; 이 과정에서 Overestimation Bias가 학습에 부정적인 영향을 미친다.
(왜냐고 하면 몇가지 이유가 있는데, Q러닝에서의 Q업데이트에서는 최대Q를 greedy하게 고른다. 그 때 미래의 상태에서 가장 큰 Q를 사용하는데,,, 이건 실제 값이 아니고 근사치이다. (근사치 Q값 오차가 첫 이유) 또 그 max값 이니까 노이즈나 오차가 더 커질 수 있음. max 연산 본질 자체로 Q값이 overestimated 되는 상황이 발생하게 됨.)
그런데 TD3의 Actor-Critic에서의 Critic도 큐러닝과 유사하게 TD 학습 규칙을 사용한다. 수식을 봐도 알 수 있듯이, 미래 값의 최대값에 대한 추정을 포함하고 있다.</p>
</blockquote>
<blockquote>
<p>이 논문에서 말하고 싶은게 여기 다 담겨있다..!
<em><strong>&quot;Actor Critic 에서도 Overestimation Bias 문제가 발생하냐?&quot; , &quot;(발생한다면) 어떻게 문제를 해결 할 수 있을까?&quot;</strong></em></p>
</blockquote>
<p>다른 TD방식을 쓰는 알고리즘도 많은데 큐러닝을 가지고 온 이유는, 큐러닝에 관한 연구에서 overestimation bias의 기원이 잘 밝혀졌기 때문이라고 하네요. wow</p>
<h2 id="3-background">3. BackGround</h2>
<p>논문 3장에서는 background 지식을 다루는데, 다른건 RL의 기본적인 내용들이라 생략하고 좀 짚고 가면 좋을것만 process 대로 정리 해봤다. (생략하는 내용들은 기본적인 강화학습 환경이나 목표, Q value 계산 식 등등)</p>
<p><img src="https://velog.velcdn.com/images/learning_rate/post/6bb1f2d3-15fc-429b-8dd2-3c9bf9f0282f/image.png" alt=""></p>
<p>일단 큰 상태 공간에서 값을 estimate 할 때, 상태 공간이 너무 큰 경우 Q밸류를 바로 계산하는건 매우 비효율적이고 그렇기에 큐세타를 사용하여 값을 근사한다. (세타는 NeauralNetwork에서 가중치가 된다.) 이걸로 좀 더 복잡하고 큰 상태 공간에서 state-action 의 관계를 학습할 수 있도록 한다.</p>
<p><img src="https://velog.velcdn.com/images/learning_rate/post/a2fd169c-5059-4617-98e0-99f262427b0b/image.png" alt=""></p>
<p>DQN에서는 TD Learning 방법으로 함수 큐세타를 학습하는데, 학습의 안정성을 높이기 위해 Q 세타 프라임 이라는 타겟 네트워크를 도입하여 학습과정에서 목표값y를 안정적으로 유지하도록 돕는다.</p>
<p><img src="https://velog.velcdn.com/images/learning_rate/post/01287c66-208e-498b-9bfa-04b6d49fa114/image.png" alt=""></p>
<p>다음으로 Target y. 학습 목표값이고, 이 학습의 목표는 y로 표현되는 이 타겟 값과 현재의 예측값 Q세타 간의 차이를 줄이는 것이다. (프라임은 다음 이라는 의미)</p>
<p><img src="https://velog.velcdn.com/images/learning_rate/post/d44d170f-0bd0-44e1-8413-6ea514d2727e/image.png" alt=""></p>
<p>마지막으로 Target Network 자체의 역할이다. 타겟 네트워크 Q세타프라임은 frozen된 상태로 네트워크 Q세타의 학습을 위한 기준으로 사용된다. 네트워크는 타겟 네트워크의 기존 파라미터도 일부 살려주고 새로 학습한 네트워크 세타도 일부 반영하며 업데이트 하는걸 볼 수 있다. -&gt; DQN과 DDPG의 차이점으로도 설명이 가능. (DQN은 일정 주기마다 Q 네트워크의 학습된 세타를 타겟으로 카피해서 옮겨준다. DDPG에서는 이런식으로 비율을 두고 점진적으로 업데이트 했었죠.) + soft(slow)update 라고도 하는...</p>
<p><img src="https://velog.velcdn.com/images/learning_rate/post/f0c70961-5c1c-40f4-97ae-3b6df0d38c36/image.png" alt=""></p>
<p>함수 근사를 통해 큰 상태 공간을 다룰 수 있고, 타겟 네트워크를 통해 학습을 안정되게 유지할 수 있다. 이러한 방법으로 값 추정의 정확성(accuracy of estimation)과 학습 효율성(learning efficiency)을 향상시킨다. 업데이트에서 과거의 데이터를 가져오고 또 reply buffer를 사용하니까 Off-Policy 라고 볼 수 있다.</p>
<h2 id="4-overestimation-bias">4. Overestimation Bias</h2>
<p>4장에서는 Overestimation Bias에 대해서 다룬다.
Discrete action을 사용하는 Q-Learning 에서는 Q value 추정 단계에서 다음과 같은 greedy target을 사용한다.
<img src="https://velog.velcdn.com/images/learning_rate/post/2aa5620b-174b-4893-a47d-314d6072ca5a/image.png" alt=""></p>
<p>다만, 이러한 방식은 입실론(error)에 취약한 경우 error를 가지는 Q의 max값이 일반적인 true max값보다 크다는게 증명이 됐다. 
<img src="https://velog.velcdn.com/images/learning_rate/post/315fb850-cef3-4949-99d9-469d0e5b0114/image.png" alt="">
(해당 논문 내용에서 나온 내용이다, 정리된 수식만 가지고 와봤다.)
<img src="https://velog.velcdn.com/images/learning_rate/post/56854e3c-4b77-4c4a-b871-f23ca429d0ce/image.png" alt=""></p>
<p>그래서 이런 결과가 지속적인 overestimation bias를 만든다. 때문에 approximation을 계속 쓰면 이러한 overestimation은 불가피해진다. (이런 문제는 이미 많이 밝혀진 반면, Actor-Critic에서의 overestimation 발생에 관한 연구가 이전에 많이 없었다고 한다.)</p>
<blockquote>
<p>만약 발생한다면? 
-&gt; <strong>Q-Learning에서 이를 줄이기 위해 사용했던 방식을 그대로 쓸 건지 아니면 더 좋은 다른 방식이 있냐? 에 대해 알아보자</strong> 가 해당 section에서 하고 싶었던 말이다.</p>
</blockquote>
<h3 id="4-1-overestimation-bias-in-actor-critic">4-1. Overestimation Bias in Actor-Critic</h3>
<p>먼저 </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Reinforcement Learning Tutorial -1]]></title>
            <link>https://velog.io/@learning_rate/Reinforcement-Learning-Tutorial-1</link>
            <guid>https://velog.io/@learning_rate/Reinforcement-Learning-Tutorial-1</guid>
            <pubDate>Fri, 27 Dec 2024 03:59:43 GMT</pubDate>
            <description><![CDATA[<h1 id="강화학습-튜토리얼-세미나---1일차"><em>강화학습 튜토리얼 세미나 - 1일차</em></h1>
<p>Video Lectures (by Prof. Sang-Jo Yoo) : <a href="https://sites.google.com/view/multinet-inha/lectures">https://sites.google.com/view/multinet-inha/lectures</a> 
에 대한 간단한 note를 담은 글</p>
<p>인턴 가기전에 RL 튜토리얼 영상을 급하게 듣게 됐다. 간단하게 기억남는 개념 위주로 짧게 정리함</p>
<ul>
<li>Lecture 1. Introduction</li>
<li>Lecture 2. Multi-armed Bandits</li>
</ul>
<p>.
.
.
.</p>
<h2 id="lecture-1-introduction">Lecture 1. Introduction</h2>
<p>RL이 따르는 아주 기본적인 Method로 Monte Carlo Method와 Temporal Difference Method가 있다. (특히, Temporal Difference Method에 Q-Learning 등이 있는것 같다.)</p>
<p>다양한 Method들은 나중에 소개</p>
<blockquote>
<p><strong>그래서 목적이 뭐냐?</strong>
당연하게도 인공지능 목적인 reasoning, planning, perception 등 과 같음.</p>
</blockquote>
<p><strong>Trial and error learning</strong>
말그대로 시행착오러닝. RL 역사를 소개하자면 이게 가장 먼저 나오지 않을까,,,</p>
<p><strong>Bellan equation</strong>
밸만 아재의 방정식. 많은 RL 알고리즘의 중심 개념이지 않을까</p>
<p>*<em>Supervised   vs  Unsupervised *</em>
굳이 하나로 나눠라 하면... 데이터에 대한 타게팅이나 라벨링 여부?..</p>
<blockquote>
<p><strong>그래서 강화학습이 뭔데</strong>
어떤 explicitly명시적인 telling 없이 특정목적을 달성하는 dynamic environment 와의 interact 아닐까?
최종 전체 reward 가 최대가 되는 action을 학습한다 정도.</p>
</blockquote>
<p>(카트&amp;폴 예시를 들었다) 
명시적으로 말하지 않는다는 의미 : 너의 Action이 좋다/나쁘다를 Environment에서 Agent에게 말해주지 않는다. 
<img src="https://velog.velcdn.com/images/learning_rate/post/f1b10e10-6687-4f74-ad28-de6424b4eb7d/image.jpg" alt=""></p>
<p><img src="https://velog.velcdn.com/images/learning_rate/post/b8dc7934-cad5-4870-a84b-55d07708d458/image.jpg" alt="">
그러니까 결국 어떤 goal을 달성하기 위해 동적인 환경과 상호작용 하여 학습하는 것</p>
<blockquote>
<p><strong>환경이 바뀐다</strong>
Deterministic vs Stochastic</p>
</blockquote>
<p>Determinisitc : 결정론적) 이 Action을 하면 이  State로 간다.
Stochastic : 확률적) 이 Action을 했을 때의  State와 Reward 값이 많음.</p>
<blockquote>
<p><strong>강화학습을 위한 모델의 구성</strong>
State : 환경의 상태 S
Action : 에이전트의 동작 A
상태간 Transitions(전이) : 어느상태로, 어떤확률로 변할 것인지
전이에서의 즉각적인 Reward 스칼라 : R
What the agent observes : S 가 어느상태 S&#39;로 바뀌었는지 관측 가능해야하고, 얼마만큼의 R을 받는지도 관측 가능해야함 =&gt; 그래야 강화학습 진행 가능</p>
</blockquote>
<p>.
.
.
.</p>
<h2 id="lecture-2-multi-armed-bandits">Lecture 2. Multi-armed Bandits</h2>
<p>lecture 내내 slot machine으로 예를 들었던... 기억나지?</p>
<p><img src="https://velog.velcdn.com/images/learning_rate/post/756c0af9-2f2d-486d-92e7-00aee6e67bd9/image.png" alt=""></p>
<p>(위 사진이 Multi-armed Bandits의 전부이긴 하다)
K개의 Action을 하는 머신이 있고, 모든 머신은 사용자에게 알려지지않은 정적확률분포(PDF)에서 Reward 값을 받아, 리턴해준다. (슬롯 머신의 확률은 사용자가 알수없다는 의미같음)</p>
<blockquote>
<p>우리의 목적은  : 전체 기대reward를 최대로 하는 것</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/learning_rate/post/30b08398-497f-4983-be38-133158ea844e/image.png" alt=""></p>
<p>q*(a) : a슬롯 머신을 선택했을때 받아지는 Reawrd의 기대치</p>
<p><img src="https://velog.velcdn.com/images/learning_rate/post/a75b7aa3-1b9f-4945-88c2-7af1db9d4143/image.png" alt="">
Qt(a) : Action Value , 특정 action a에 대해서 시간t까지의 추정치  -&gt; 이걸 기반으로 머신을 당기겠다 왜? True값을 우리는 모르니까</p>
<blockquote>
<p><strong>Exploitation 과  Exploration 간단하게 비교</strong>
Exploitation : epsilon greedy action , 가장 max값 선택 (추정된 머신별 평균을 통해 그 중 가장 높은 확률의 머신을 뽑는다.)
Exploration : select nongreedy action  (그러면 우연히 높은값 샘플로 인해 잘못 추정될 수 있으니 다른것도 explore 해보고 정하자.) </p>
</blockquote>
<p>exploitaion 에  (1-앱실론) 을, exploration 에 (앱실론)을 준다. </p>
<p><img src="https://velog.velcdn.com/images/learning_rate/post/8cb4e797-db06-4019-b2d8-7be8393a7fce/image.png" alt=""></p>
<p>stepsize 는 1/n 을 의미한다.
<img src="https://velog.velcdn.com/images/learning_rate/post/bb241475-4243-443f-8141-be0d26b2f23f/image.png" alt="">
맨 윗줄은, 1스텝씩 가면서 번돈 Ri의 평균을 계산하는 것. 그러니까 1/n을 했겠지</p>
<p>진짜 문제는 이제나온다.
<img src="https://velog.velcdn.com/images/learning_rate/post/81751adf-643c-4337-9fa9-317bbac9a20c/image.png" alt="">
PDF가 stationary 하지 않는게 보통일 것이다. (실세계는 정적이지 않다. 당연히 PDF가 종종 바뀌겠지)
이때 step size로 사용했던 1/n 대신에 constant 값을 넣어준다! 왜?</p>
<p><img src="https://velog.velcdn.com/images/learning_rate/post/606732aa-8b7b-4b5b-95f9-4acdc701f505/image.png" alt=""></p>
<blockquote>
<p>오른쪽 식을 잘 뜯어먹어보자. 특히 저 노란줄
constant값 0.2, n을 10으로 넣었을때 Reward값이 과거로 갈수록(i가 1에가까운 녀석일수록) 값의 비율이 엄청 작아지는 것을 알수있다.
=&gt; 이를 통해 과거의 비중은 낮추고 최근의 비중은 높게! PDF를 바꿔도 과거값 비중이 점점 작아져서 non-stationary 상황에 잘 적응할 수 있구나! 를 알수있음.</p>
</blockquote>
<p>.
.
.
.</p>
<p>영알못은 웁니다.</p>
<p>explicitly : 명시적인
Stochastic : 확률적인</p>
]]></description>
        </item>
    </channel>
</rss>