<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>strong_gy.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Tue, 22 Jul 2025 11:28:39 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>strong_gy.log</title>
            <url>https://velog.velcdn.com/images/rain_young/profile/c6d7e0ec-e0b4-4a46-afb9-ccc33f59356a/image.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. strong_gy.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/rain_young" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[논문 리뷰] π0.5: a Vision-Language-Action Model with
Open-World Generalization]]></title>
            <link>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-0.5-a-Vision-Language-Action-Model-withOpen-World-Generalization</link>
            <guid>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-0.5-a-Vision-Language-Action-Model-withOpen-World-Generalization</guid>
            <pubDate>Tue, 22 Jul 2025 11:28:39 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/pdf/2504.16054">Paper 링크</a></p>
<p><a href="https://www.pi.website/blog/pi05">Website 링크</a>
<img src="https://velog.velcdn.com/images/rain_young/post/d5180785-1b64-4f0f-a5fe-50bf83b5baee/image.png" alt=""></p>
<h2 id="abstract">Abstract</h2>
<ul>
<li>이 모델은 이질적인 다양한 작업에 대한 co-training을 통해 광범위한 일반화를 가능하게 함</li>
<li>π0.5 시스템은 이미지 관찰, 언어 명령, 객체 탐지 등을 결합한 hybrid multi modal example들과 공동 학습 방식을 사용함</li>
</ul>
<h2 id="introduction">Introduction</h2>
<h4 id="기존-문제점">기존 문제점</h4>
<ul>
<li>open world generalization은 physical intelligence 분야에서 가장 큰 미해결 문제다. 
로봇이 실제 세계에서 마주할 상황의 다양성은 단순한 데이터 scale만으로는 해결되지 않음</li>
<li>충분히 다양한 장면과 객체가 데이터에 포함 되어있으면 쉽게 일반화 될 수 있지만, 또 다른 동작들은 기존 기술을 새로운 방식이나 순서로 응용하거나 수정해야 됨, 아니면 이전 지식에 기반해서 이해해야 됨. </li>
</ul>
<p>사람들도 경험을 모두 직접적으로 겪거나 반복학습만으로 얻어지는게 아님. 그래서 일반화 가능한 로봇 학습 시스템도 이렇게 경험과 지식을 transfer할 수 있어야함 
그래서 이질적인 데이터는 장애물이 되긴 하지만, vla는 이를 <strong>co-training framework</strong>을 통해 해결 할 수 있음.</p>
<h4 id="π05">π0.5</h4>
<p>π0.5는 π0을 기반으로 해서 다양한 데이터를 이용해서 훈련 중 한번도 본적 없는 집에서도 작업을 수행 할 수 있도록 함.
이 모델은 이러한 <strong>출처</strong>로부터 경험을 수집함</p>
<ul>
<li>실제 가정 환경에서 다양한 이동형 로봇으로 수집한 약 400시간 분량의 중간 규모 데이터셋</li>
<li>고정형 로봇으로부터의 데이터</li>
<li>실험실 환경에서 수집된 관련 작업 데이터</li>
<li>로봇 관찰을 바탕으로 고수준 의미론적 작업 예측을 요구하는 훈련 예시</li>
<li>사람으로부터 로봇에 제공된 언어 명령</li>
<li>웹 기반 멀티모달 데이터에서 생성된 이미지 captioning, 질문 응답, 객체 위치 예측 등의 예시</li>
</ul>
<p>즉, 이렇게 97.6%가 실제 가정에서 이동형 로봇이 수행한 데이터가 아니라 다양한 출처로부터의 데이터이다. 그럼에도 불구하고 새로운 가정 환경에서도 mobile manipulator들을 제어하고 섬세한 작업들 (침대 정리, 수건 걸기) 뿐만 아니라 10~15분에 걸친 장기 조작 작업(주방 전체 청소)도 high-level prompt만으로 수행 가능함.</p>
<h4 id="π05의-설계">π0.5의 설계</h4>
<p>π0.5은 단순한 hierarchical 구조를 따름</p>
<ol>
<li>이질적인 학습 데이터들로 pretrain 수행</li>
<li>저수준/고수준 행동 예시를 통해 mobile manipulation에 맞춘 fine-tuning함</li>
<li>실시간 추론 시, 의미 기반 subtask를 예측하고 적절한 행동을 결정한 후, low-level 로봇 행동 시퀀스를 예측함
=&gt; 복잡한 장기 작업을 단계적으로 수행하는데 필요한 추론 능력과 고수준/저수준에서 다양한 출처를 활용할 수 있는 유연성을 동시에 제공함</li>
</ol>
<p><strong>완전히 새로운 환경에서 장기적이며 섬세한 조작 기술을 수행할 수 있는 end-to-end learning robotic system을 제안한건 처음이다.!</strong></p>
<h2 id="preliminaries">Preliminaries</h2>
<p>VLA 모델은 일반적으로 다양한 로봇 시연 데이터셋에 대해 imitation learning을 통해 학습함
주어진 관측값 o_t와 자연어 작업 지시 l에 대해 행동 a_t의 log-likelihood를 최대화하는 방식이다. 
<img src="https://velog.velcdn.com/images/rain_young/post/3e1bb807-fdef-4afd-a5ac-66f5ff71a15b/image.png" alt=""></p>
<p>modality에 특화된 <strong>tokenizer</strong>를 이용해서 입력과 출력을 토큰 표현으로 변환하며, <strong>autoregressive transformer</strong> backbone이 이러한 입력 토큰을 출력 토큰으로 mapping하도록 훈련됨
policy의 입력과 출력을 토큰화된 표현으로 인코딩해서 next-token prediction 문제로 전환 될 수 있음, action에 대해서는 <strong>compression-based tokenization</strong>이 효과적임</p>
<p>이 모델은 post-training 단계에서 행동 분포를 flow matching 방식으로 표현함 </p>
<h2 id="the-π05-model-and-training-recipe">The π0.5 Model and training recipe</h2>
<p><img src="https://velog.velcdn.com/images/rain_young/post/22f09144-e999-4e5e-a6f3-98209315f7cb/image.png" alt="">
훈련은 pre-training와 post-training 단계로 진행된다.   </p>
<ul>
<li><strong>pre-training</strong>: 다양한 로봇 task에 적응하도록 학습시킴, 모든 작업이 discrete token으로 표현됨
단순, 확장 가능, 효율적인 학습 가능</li>
<li><strong>post-training</strong>: action expert를 모델에 도입, 더 정밀한 행동 표현 가능</li>
<li><strong>inference</strong>: 로봇은 고수준 subtask를 생성하고 이를 조건으로 action expert를 통해 low-level 로봇 행동 생성함 
(부엌 정리하기 명령이면, 고수준 subtask는 도마 집기, 서랍 열기, 접시를 선반에 두기 등등, 그런 다음 해당 subtask를 condition으로 해서 정밀한 action chunk를 생성하는 식이다) </li>
</ul>
<h3 id="the-π05-architecture">The π0.5 architecture</h3>
<ul>
<li><p>모델이 학습하는 <strong>확률 분포</strong>
<img src="https://velog.velcdn.com/images/rain_young/post/4285f070-83e8-44c4-9c0a-86f3a64bbf9d/image.png" alt="">
o_t: 모든 카메라에 대한 이미지들+ 로봇 상태 정보 (joint angle, base velocity 등등..)
l: 주어진 text prompt (ex. 접시를 정리하라)
l_^: 모델이 예측한 text prompt (접시를 집어라)
a_t:t+H: 예측된 action chunk</p>
</li>
<li><p>이 논문에서는 분포를 다음처럼 두 부분으로 나눠서 표현한다.
<img src="https://velog.velcdn.com/images/rain_young/post/e38e2a3f-09fa-4282-823f-4e283f949def/image.png" alt="">
우측의 뒤의 항은 high level inference이고 앞의 항은 그 결과에 따른 실제 행동 생성으로 low level inference이다. </p>
</li>
</ul>
<p>모델은 transformer 구조로 구성되어 있으며, 입력은 총 N개의 multimodal 입력 토큰이고 출력으론 transformer를 거쳐야함.</p>
<ul>
<li><p><strong>입력</strong>
각 입력의 토큰은 텍스트, 이미지, 행동 토큰 중 하나이고, 각각 다 다른 encoder, 다른 expert weight를 적용할 수 있음.</p>
</li>
<li><p><strong>Attention Matrix</strong> A(x_1:N)
어느 토큰이 어느 토큰에 attention을 둘 수 있는지를 나타냄, 일반적인 llm의 attention은 왼쪽만 보는데 π0.5은 양방향 attention 사용해서 상호 정보 공유 가능함</p>
</li>
<li><p><strong>출력</strong>
text token logit과 action output token으로 나뉨.
처음부터 M개까지가 text token logit (고수준 subtask 예측)이고, M+1부터 M+H번까지가 행동 출력으로 action output token들이다. 이렇게 행동 출력은 action expert을 통해 생성되고 linear mapping을 통해서 연속적인 행동 벡터로 변환됨.
모든 output들을 loss 계산에 사용하는 건 아님.</p>
</li>
</ul>
<h3 id="combining-discrete--continuous-action-representations">Combining discrete &amp; continuous action representations</h3>
<p>기존에는 autoregressive 방식을 사용해서 행동을 토큰으로 만들고 하나씩 순차적으로 예측함
flow matching 기법을 사용해서 연속적인 행동을 예측함. 
<img src="https://velog.velcdn.com/images/rain_young/post/1c2b4a75-5773-46ac-b921-11f6404c2d56/image.png" alt="">
위는 flow matching 식으로, 실제 행동 시퀀스 a_t:t+H를 noise와 섞어서 행동(좌측 항)을 만듦</p>
<p>그 다음 이 좌측 항을 모델에 넣고 진짜 행동쪽으로 flow vector를 예측하게 함
즉 <strong>노이즈에서 진짜 행동으로 가는 방향 벡터 (ω − a_t:t+H)</strong>를 학습 하는 것이다. 
(diffusion model과 비슷해보이지만, 이는 one shot inference도 가능하며, 추론 속도도 훨씬 빠름. 또 diffusion모델은 noise 추가하고 복원하는 과정을 markov chain으로 수백 step을 돌리지만, flow matching은 deterministic한 flow vector 예측만으로 수십 step이내에 동작함)</p>
<p>행동을 <strong>discrete token</strong>으로 표현하면 VLA 모델 훈련 속도가 훨씬 빨라지지만, discrete token은 real-time inference에 맞지 않고 autoregressive decoding(한 token씩 순차적으로 예측)을 요구하므로 연산이 비쌈</p>
<p>=&gt; 그래서 <strong>train</strong>할 때는 FAST tokenizer(discrete token)와 flow matching(continuous action) 모두 사용하고, <strong>inference</strong>할 때는 flow matching 방식만 사용해서 빠르게 연속적인 행동을 생성한다.  </p>
<p>이렇게 두 행동 표현 방식(discrete, continuous)이 서로 영향을 주지 않도록, <strong>attention matrix을 조정해서 서로 간섭하지 않도록</strong> 함.</p>
<ul>
<li><p><strong>Loss</strong>
모델은 다음과 같은 combined loss을 최소화함
<img src="https://velog.velcdn.com/images/rain_young/post/276014d8-feb0-48fb-9dde-4f91bbfa6550/image.png" alt="">
H는 text와 discrete 행동 토큰에 대한 cross entropy loss이고, 제일 뒤에 달린 f() 식은 action expert에서 예측한 연속 행동 출력이다. </p>
</li>
<li><p><strong>학습 전략</strong></p>
</li>
<li><p><em>pre-train 단계*</em>에서는 α를 0으로 설정하고 모든 행동을 text token화 된 형태로만 학습해서 standard VLM transformer model처럼 학습함</p>
</li>
<li><p><em>post-train 단계*</em>에선 α&gt;0으로 설정하고 action expert 가중치를 추가해서 연속 행동 예측이 가능하도록 학습함, 이때는 non-autogressive 방식으로 동작해서 빠름
추론 단계에서는 text token에 대해서 standard autoregressive decoding 사용하고 이후 행동 예측은 flow matching 기반 10 step denoising 수행해서 최종적인 action을 만듦.</p>
</li>
</ul>
<h3 id="pre-training">Pre-training</h3>
<p><img src="https://velog.velcdn.com/images/rain_young/post/a8f8f856-832f-40f2-9ffa-9b3ceb8fda4a/image.png" alt="">
standard auto-regressive transformer 구조로 train됨, next-token prediction을 수행함.
<strong>사용된 데이터 종류</strong></p>
<ol>
<li>Diverse Mobile Manipulator data (MM)</li>
</ol>
<ul>
<li>400시간의 데이터</li>
<li>약 100개의 실제 가정환경에서 수집</li>
<li>실제 inference task와 가장 유사한 데이터 </li>
</ul>
<ol start="2">
<li>Diverse Multi-Environment non-mobile robot data (ME)</li>
</ol>
<ul>
<li>집에 고정된 형태(non mobile)의 팔이 하나나 두개인 로봇</li>
<li>mobile 로봇과 embodiment가 다름</li>
</ul>
<ol start="3">
<li>Cross-Embodiment laboratory data (CE)</li>
</ol>
<ul>
<li>실험실에서 간단한 책상 위에서의 다양한 작업 (셔츠 접기)을 수행한 데이터</li>
<li>여러 형태의 로봇으로 수집</li>
<li>오픈 소스 OXE 데이터셋도 포함함</li>
</ul>
<ol start="4">
<li>High-Level subtask prediction (HL)</li>
</ol>
<ul>
<li>&quot;침실 정리하기&quot; -&gt; &quot;이불 정리하기&quot;, &quot;베개 줍기&quot;</li>
<li>Chain-of-thought prompting처럼 고수준 명령어를 더 작은 subtask로 분해함</li>
<li>위의 3가지 데이터에 대해 수동으로 semantic subtask label을 주고 모델보고 이를 텍스트로 예측하고 해당 subtask에 맞는 행동 예측까지 학습하게 함
=&gt; 이를 통해 highlevel policy랑 lowlevel policy까지 둘다 수행 가능한 모델로 train함</li>
</ul>
<ol start="5">
<li>Multi-modal Web Data (WD)</li>
</ol>
<ul>
<li>다양한 웹 기반 데이터로 구성함 (image captioning, question answering, object localization)</li>
<li>모델이 언어와 시각 정보로부터 의미 이해를 학습하는데 활용함</li>
</ul>
<p>=&gt; 모든 action data는 target joint(목표 관절)와 end-effector pose(말단 위치)를 예측하게끔 train함. </p>
<h3 id="post-training">Post-training</h3>
<p>π0.5는 pretraining에서 28만 step동안 discrete token을 사용해서 학습한 후에 post-train 단계로 넘어감.
<strong>목적</strong></p>
<ul>
<li>가정환경에서의 mobile manipulation task에 모델을 특화하기 위해</li>
<li>action expert를 추가해서 flow matching을 통해 continuous action chunk를 생성하기 위해 </li>
</ul>
<p>post-training에서도 next-token prediction을 수행하면서 동시에 새로 추가된 action expert도 random 초기화 해서 flow matching 방식으로 연속 행동을 예측함</p>
<p>데이터는 위에꺼랑 거의 동일하게 사용하는데 <strong>Verbal Instruction (VI)</strong>을 추가적으로 수집해서 사용함. 
VI는 expert user들이 로봇한테 언어 명령을 실시간으로 주면서 teleoperation함(high level subtask를 text로 단계별로 명시하고 그 명령에 따라 로봇이 학습된 low level policy로 동작함)
=&gt; 고수준 명령어를 정확히 생성하는 능력을 더 잘 갖추게 함 (어떤 상황에서 어떤 highlevel subtask 출력을 생성해야 하는지를 학습할 수 있도록 지원)
쉽게 말하자면, &quot;청소해&quot; 같은 추상적인 명령을 상황에 맞는 구체적인 subtask &quot;이불 개기&quot;로 분해하는 능력을 배울 수 있게끔 하는 것</p>
<h3 id="robot-system-details">Robot system details</h3>
<p><img src="https://velog.velcdn.com/images/rain_young/post/e45d90e7-1894-471c-b1e4-46ca5547182d/image.png" alt="">
위에서 보이는 그림과 같이 두가지 종류의 mobile manipulator platform을 사용해서 모든 실험을 수행하였음.
<strong>하드웨어 구성</strong></p>
<ul>
<li>팔 - 양팔 시스템, 6자유도 (DoF)+ Parallel-jaw gripper</li>
<li>카메라 - 4개의 RGB 카메라
완전한 end-to-end 제어 시스템으로 모든 제어를 직접 생성함</li>
</ul>
<h2 id="experimental-evaluation">Experimental Evaluation</h2>
<ul>
<li><p>π0.5는 실제 가정에서도 일반화할 수 있는가?
=&gt; multi-stage task들을 간단한 high-level command만으로 high-level inference를 통해 적절한 하위 행동들을 스스로 결정함.</p>
</li>
<li><p>일반화 성능은 장면 수에 따라 어떻게 확장되는가?
mobile manipulation 데이터를 포함한 환경수를 달리해서 학습을 수행함. 환경 수는 총 3,12,22,53,82,104개의 장소로 조절함.
학습 단계 수는 4만(40k)으로 고정해서 데이터 샘플의 개수는 모두 같고 모두 학습시에 보지 못한 mock환경에서 평가함
=&gt; </p>
</li>
<li></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Octo: An Open-Source Generalist Robot Policy]]></title>
            <link>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Octo-An-Open-Source-Generalist-Robot-Policy</link>
            <guid>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Octo-An-Open-Source-Generalist-Robot-Policy</guid>
            <pubDate>Thu, 19 Jun 2025 02:18:26 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/pdf/2405.12213">Octo 논문 링크</a>
<a href="https://octo-models.github.io/">Octo 깃허브 링크</a>
<img src="https://velog.velcdn.com/images/rain_young/post/f5f52765-a8ac-45c0-87ef-455f4fd3a3da/image.png" alt=""></p>
<h2 id="abstract">Abstract</h2>
<p>Octo는 Open X-Embodiment에서 수집한 80만개 trajectory로 학습된 대형 transformer 기반 policy model이다. Octo는 자연어 명령이나 목표 이미지를 통해 지시를 받을 수 있으며, finetuning도 효과적으로 할 수 있다. 9종의 로봇 플랫폼을 대상으로 한 실험에서, 서로 다른 환경에서도 finetuning할 수 있는 policy initialization이 된다. </p>
<h2 id="introduction">Introduction</h2>
<p>Robotic Foundation models - robot observation을 action과 맵핑, 새로운 도메인과 로봇에 zero-shot이나 few-shot generalization를 제공함
=&gt; 이런 모델을 <strong>&quot;generalist robot policies (GRPs)&quot;</strong>라고 함
(low level visuomotor control을 수행하는데 씀)
기존의 모델들은 input observation 제한 (단일 카메라 stream같이 정해진 입력만 받을 수 있음)이 되어 있거나, finetuning 하기에 어렵고, 공개 라이선스로 배포되지 않아서 쓰기에 어렵다.</p>
<p>그래서 Octo는 downstream robotic application에 잘 맞을 수 있게끔 generalist robot policy를 pretrain 할 수 있게끔 system을 디자인했다.</p>
<ul>
<li>input token (observation이랑 task에서 만들어지는)을 output token(action으로 decode됨)에 mapping하는 transformer architecture </li>
<li>추가적인 학습 없이도, 다른 camera configuration들을 수용 가능함</li>
<li>가장 중요하게도, 새로운 로봇 setup들에 적용 가능함 (즉,더 wider range)</li>
</ul>
<h2 id="the-octo-model">The OCTO Model</h2>
<p><img src="https://velog.velcdn.com/images/rain_young/post/019d283d-b809-498e-8abd-4cdf07fe08f7/image.png" alt=""></p>
<p>Octo model은 flexibility랑 scale을 강조한다. 또, diffusion decoding으로 자연어 명령어, 목표 이미지, observation history와 멀티모달을 제공한다. 새로운 robot에도 효율적인 finetuning을 할 수 있게끔 한다. </p>
<h3 id="1-architecture">1. Architecture</h3>
<p>Octo는 transformer-based policy π이다. 
<strong>3개의 부분</strong>으로 구성되어 있다.</p>
<ul>
<li><strong>input tokenizers</strong> - language instruction l, goals g, observation sequences o_1,,,o_H를 tokens[T_l,T_g,T_o]로 변환함
위의 그림에서 왼쪽 부분을 보면, language: T5-base 모델로 tokenize 후 embedding sequence 생성, observations, goals: 얕은 CNN → 패치 분할(flattened patch)</li>
</ul>
<p>=&gt; input sequence 구성: Task token T_T(language, goal)랑 Observation token T_o,,,에 학습 가능한 position embeddings p를 더해서 한줄로 배치함 T_T , T_o,1, T_o,2,</p>
<ul>
<li><p><strong>transformer backbone</strong> - token들을 처리해서 embedding (e_l, e_g, e_o)을 생성함
e_l, e_g, e_o = T(T_l, T_g, T_o)
Readout token들(T_(R,t))을 넣어서 observation이나 task token들을 읽어서 그들에게 영향을 주지 않고 하나의 벡터로 요약함.</p>
</li>
<li><p><strong>readout heads R(e)</strong> - token embedding을 원하는 출력(action)으로 변환함, diffusion 기반 action head가 여러 단계의 동작 chunk를 예측함. </p>
</li>
</ul>
<h3 id="2-training-data">2. Training Data</h3>
<p><img src="blob:https://velog.io/3a74e47a-9e12-4f3e-b0b3-e2cc10431eb4" alt=""></p>
<p>25개의 OpenX-Embodiment 데이터셋을 조합해서 학습에 사용함, image stream이 없거나 delta end-effector를 사용하지 않거나 너무 낮은 해상도, 너무 특이한 task, 너무 반복적인 데이터셋은 제거함. 더 다양한 데이터셋들은 학습 시 가중치를 2배로 설정하고 반복적인 데이터셋은 가중치를 낮춤.</p>
<h3 id="3-training-objective">3. Training Objective</h3>
<p>Transformer backbone은 행동 예측 한번당 한번만 forward pass를 수행하고, 나머지 복잡한 denoising 과정은 가벼운 diffusion head 내부에서 처리됨. 이런 policy parameterization 방식이 MSE loss기반 정책보다 zero-shot이나 finetuning 평가에 더 성능이 좋았음.
action을 생성하기 위해, Gaussian Noise를 샘플링하고 K단계 denoising을 수행함, diffusion head를 기존 <strong>DDPM 방식</strong>에 따라 학습함. (행동 데이터에 gaussian noise 추가하고 원래 행동을 복원하도록 denoising network를 train함)</p>
<h2 id="experiments">Experiments</h2>
<p>Zero-shot Evaluation(train할 때 본 적 없는 task에 대해 바로 평가): RT-1-X보다 Octo가 훨씬 좋고 RT-2-X랑은 비슷함. </p>
<p>Data Efficient Fine-tuning: 새로운 domain에 대해서 Octo가 scratch나 사전 학습된 VC-1보다 훨씬 파인튜닝을 잘함.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] OpenVLA: An Open-Source Vision-Language-Action Model]]></title>
            <link>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-OpenVLA-An-Open-Source-Vision-Language-Action-Model</link>
            <guid>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-OpenVLA-An-Open-Source-Vision-Language-Action-Model</guid>
            <pubDate>Tue, 17 Jun 2025 12:36:22 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/abs/2406.09246">OpenVLA 논문 링크</a>
<img src="https://velog.velcdn.com/images/rain_young/post/bbd342b0-6f68-4dc4-a607-9c5d766c56a3/image.png" alt=""></p>
<h2 id="abstract">Abstract</h2>
<p>OpenVLA는 970,000개의 로봇 에피소드를 기반으로 학습된 7B 파라미터의 오픈 소스 비전-언어-행동 모델(VLA)이다. 이는 Llama 2 언어 모델 및 DINOv2 및 SigLIP의 사전 학습된 기능을 융합한 visual encoder를 결합해서 동작한다. 또, 새로운 환경에서 효과적으로 Fine-tuning이 가능하며, 뛰어난 일반화 성능을 보인다. 이는 기존의 VLA 모델들보다 더 좋아진 성능을 보인다. </p>
<h2 id="preliminaries-vision-language-models">Preliminaries: Vision-Language Models</h2>
<p>VLM의 architecture</p>
<ol>
<li>이미지 입력을 Image Patch Embedding으로 mapping하는 *<em>Visual Encoder *</em></li>
<li>Visual Encoder의 출력 Embedding을 받아 언어 모델의 입력 공간으로 mapping하는 <strong>projector</strong></li>
<li>VLM 훈련 중, 모델은 Vision과 Language 데이터를 pair 형태로 결합하여 text token 예측 목표로 끝까지 train되는 <strong>LLM backbone</strong></li>
</ol>
<h2 id="method">Method</h2>
<h3 id="1-visual-language-model-backbone">1. Visual Language Model Backbone</h3>
<p>OpenVLA는 Prismatic-7B VLM을 기본으로 사용한다. 이 VLM은 2개의 visual encoder (SigLIP와 DINOv2)로 구성되어 있으며, 다중 해상도의 이미지 patch를 동시에 처리해서 시각적 특징을 추출한다. </p>
<h3 id="2-openvla-training-procedure">2. OpenVLA Training Procedure</h3>
<p><img src="https://velog.velcdn.com/images/rain_young/post/03fab327-61c8-4957-8fd4-e8ae91c4cadd/image.png" alt=""></p>
<p>사전 학습된 Prismatic-7B VLM Backbone을 로봇 행동 예측을 위해 <strong>Finetune</strong>한다. VLM 언어 모델이 로봇 행동을 예측하기 위해, <strong>로봇 행동을 연속적인 값</strong>에서 <strong>언어 모델의</strong> Tokenizer가 사용되는 <strong>discrete token을 매핑</strong>해서 llm의 출력 공간에서 행동을 표현한다. 로봇 행동은 각 차원을 개별적으로 256개의 구간 중 하나로 discretize을 <strong>quantile</strong>을 사용하여 해서 이상치 행동을 무시할 수 있어, action discretization을 효과적으로 할 수 있다. </p>
<h3 id="3-training-data">3. Training Data</h3>
<p>Open X-Embodimnet 데이터셋을 기반으로 training data를 구성한다. 이 데이터셋은 70개 이상의 개발 로봇 데이터셋으로 구성되어 있으며, 200만개 이상의 로봇 궤적을 포함하고 있다. 
이 데이터를 train할 때 사용하기 위해, <strong>data curation</strong>을 적용한다.
모든 train 데이터셋에서 일관된 입력과 출력 공간을 보장하기 위해, Open X-Embodiment Collaboration와 Octo Model을 따르며 훈련 데이터셋을 적어도 하나의 3인칭 카메라가 있는 조작 데이터셋만 포함되도록 제한하고, 단일 팔 end effector control만 사용한다.
최종 train에서 구현, 작업, 장면의 균형 잡힌 조합을 보장하기 위해 모든 데이터셋에 대해 Octo와 데이터 혼합 가중치를 사용한다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] TACO: Temporal Latent Action-Driven Contrastive Loss for Visual Reinforcement Learning]]></title>
            <link>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-TACO-Temporal-Latent-Action-Driven-Contrastive-Loss-for-Visual-Reinforcement-Learning</link>
            <guid>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-TACO-Temporal-Latent-Action-Driven-Contrastive-Loss-for-Visual-Reinforcement-Learning</guid>
            <pubDate>Mon, 16 Jun 2025 06:17:48 GMT</pubDate>
            <description><![CDATA[<p><a href="https://proceedings.neurips.cc/paper_files/paper/2023/file/96d00450ed65531ffe2996daed487536-Paper-Conference.pdf">TACO 논문 링크</a></p>
<h2 id="introduction">Introduction</h2>
<p>배경: 픽셀 이미지만 보고도 게임이나 로봇을 잘 제어할 수 있는 알고리즘들이 많이 나왔지만 여전히 샘플 효율성이 낮다는 문제가 있다. 즉, 환경에서 너무 많은 경험(데이터)을 필요로 한다.</p>
<p>과거 연구들은 이 문제를 해결하려고, agent가 스스로 학습하게 하는 self supervised learning 기법을 도입했지만 대부분은 discrete한 action 공간만 고려하고 연속적인 제어 문제에서는 효과가 떨어진다. </p>
<p>이 논문에서는 <strong>TACO (Temporal Action-driven Contrastive Learning)</strong> 라는 방법을 제안한다.
현재 상태랑 action sequence를 보고 그 결과로 미래 상태를 예측할 수 있게 상태와 액션을 latent representation으로 바꿔주는 방법을 학습한다. 이걸 contrastive learning을 써서 진짜 set과 가짜 set을 구분하게 만들어서 좋은 representation을 찾는 것이다.</p>
<h3 id="main-contributions">Main Contributions</h3>
<ol>
<li><p>We present TACO, a simple yet effective temporal contrastive learning framework that <strong>simultaneously learns state and action representations</strong>.</p>
</li>
<li><p>The framework of TACO is flexible and could be <strong>integrated into both online and offline visual RL algorithms</strong> with minimal changes to the architecture and hyperparameter tuning efforts.</p>
</li>
<li><p>We theoretically show that the objectives of TACO is <strong>sufficient to capture the essential information in state and action representation for control</strong>.</p>
</li>
<li><p>Empirically, we show that TACO outperforms prior state-of-the-art model-free RL by 1.4x on nine challenging tasks in Deepmind Control Suite. Applying TACO to offline RL with SOTA algorithms also <strong>achieves significant performance gain</strong> in 4 selected challenging tasks with pre-collected offline datasets of various quality.</p>
<h2 id="method">Method</h2>
<p><img src="https://velog.velcdn.com/images/rain_young/post/bb1a9798-5e3c-4b31-8711-4a584388fe25/image.png" alt=""></p>
</li>
</ol>
<p>위 식에서 Z_t+K는 미래 상태의 표현, U_t+...+U_t+K-1은 현재 상태의 표현이다. 이 둘이 얼마나 관련이 있는지를 수치화해서 보여주는 <strong>상호 정보량(Mutual Information)</strong>을 나타낸다. 
즉, 현재 상태와 행동을 보고 미래 상태 표현이 더 잘 예측되도록 학습하는 것이다. </p>
<h3 id="theorem-31">Theorem 3.1</h3>
<p><img src="https://velog.velcdn.com/images/rain_young/post/1d5bb3e9-01f8-4d3e-8855-d5bab92e48a3/image.png" alt=""></p>
<p>TACO의 mutual information 목적 (위의 2번식)을 최대화하면, 표현만 같으면 Q값도 같아진다. 
상태-행동 쌍 (s1,a1), (s2,a2)가 있을 때, 표현이 같으면: ϕ(s1)=ϕ(s2), ψ(a1)=ψ(a2)
=&gt; 최적 Q 함수도 같다. Q∗(s1​,a1​)=Q∗(s2​,a2​)
즉, 표현만 같으면 행동 결정도 같아져야 하니깐, 이 표현은 정말 의미있는 Q함수 계산에 필요한 정보를 모두 담도록 만들어진다. </p>
<h3 id="taco의-3가지-loss-function">TACO의 3가지 Loss Function</h3>
<p><img src="https://velog.velcdn.com/images/rain_young/post/4e324649-5e07-4c87-a064-b72aadd38298/image.png" alt="">
TACO는 기존 강화학습 알고리즘 DrQ-v2에 3개의 loss함수를 추가하여 학습 성능을 향상시키는 방식이다.</p>
<ol>
<li><strong>TACO contrastive loss</strong> - 현재 상태+현재 행동이 미래 상태를 잘 예측하도록, g(현재 projection)와 h(미래 상태 projection)를 같은 공간으로 보내서 contrastive하게 학습함
<img src="https://velog.velcdn.com/images/rain_young/post/f807bc0b-bc44-4d70-8988-d2cf286b469c/image.png" alt=""></li>
<li><strong>CURL loss</strong> - 같은 이미지에 대해 augmentation을 해도 표현이 비슷하게 나오도록 유도함, h_t는 s_t에 랜덤 shift 같은 augment를 한 상태
<img src="https://velog.velcdn.com/images/rain_young/post/4ec3932f-f657-434c-8c42-d07fdbba4428/image.png" alt=""></li>
<li><strong>Reward Prediction</strong> - 실제로 받은 보상들의 합과 예측한 총 보상의 차를 이용해서 학습시킴
<img src="https://velog.velcdn.com/images/rain_young/post/4158ad83-438e-45c6-9cfd-d720826a618f/image.png" alt=""></li>
</ol>
<p>세가지 손실을 모두 동일한 가중치로 합침. 
J_total=J_TACO+J_CURL+J_Reward</p>
<h2 id="result">Result</h2>
<p>SOTA visual RL 알고리즘에 비해서 sample efficiency랑 performance가 훨씬 좋다. 
<img src="https://velog.velcdn.com/images/rain_young/post/f15e3aae-f862-4f23-b63b-9c77dd169556/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[OCR 참고 링크]]></title>
            <link>https://velog.io/@rain_young/OCR-%EC%B0%B8%EA%B3%A0-%EB%A7%81%ED%81%AC</link>
            <guid>https://velog.io/@rain_young/OCR-%EC%B0%B8%EA%B3%A0-%EB%A7%81%ED%81%AC</guid>
            <pubDate>Thu, 08 May 2025 05:11:10 GMT</pubDate>
            <description><![CDATA[<p><a href="https://community.ultralytics.com/t/about-integrating-ocr-with-yolo-model/381">OCR with YOLO model</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[OCR] 5.7 진행 상황 ]]></title>
            <link>https://velog.io/@rain_young/OCR-5.7-%EC%A7%84%ED%96%89-%EC%83%81%ED%99%A9</link>
            <guid>https://velog.io/@rain_young/OCR-5.7-%EC%A7%84%ED%96%89-%EC%83%81%ED%99%A9</guid>
            <pubDate>Tue, 06 May 2025 13:01:12 GMT</pubDate>
            <description><![CDATA[<h2 id="progress">Progress</h2>
<h3 id="1-타각-최소-문자열-구성">1. 타각 최소 문자열 구성</h3>
<ul>
<li>데이터셋을 기반으로 중복을 최소화한 대표 문자열을 선정</li>
<li>가능한 모든 문자 조합을 포함하되, 효율적으로 구성</li>
<li><em>VSCode 파일 경로*</em> : home/postechuser/ocr/generated_codes.txt
총 306개의 문자열 선정함 </li>
</ul>
<h3 id="2-paddleocr-적용">2. PaddleOCR 적용</h3>
<p>새로운 데이터셋들을 기존 모델인 PaddleOCR로 inference했을 때, 문자 인식을 아예 못함
<img src="https://velog.velcdn.com/images/rain_young/post/ca95e227-0173-444c-b895-6bb298eefdc8/image.png" alt="">
위에 두개 이미지 파일 -&gt; 새로운 데이터셋
마지막 한개 이미지 파일 -&gt; 기존 데이터셋</p>
<p>=&gt; 이에 대한 해결책으로 네이버 Clova에서 나온 text recognition 모델을 사용해봄</p>
<h3 id="3-새로운-모델-적용">3. 새로운 모델 적용</h3>
<p>네이버 Clova에서 나온 Text Detection 모델(CRAFT)과 Recognition 모델을 사용함
Recognition 모델 깃허브 링크 : <a href="https://github.com/clovaai/deep-text-recognition-benchmark">page</a></p>
<p>결과: Detection 모델인 CRAFT와 recognition 모델 모두 문자를 잘 인식하지 못함
<img src="https://velog.velcdn.com/images/rain_young/post/e734cc81-fcc9-4d7f-9572-5936338cc443/image.png" alt="">
세개 모두 새로운 데이터셋으로 잘못 인식하고 있는 결과를 볼 수 있음</p>
<h3 id="4-paddleocr을-finetuning하기">4. PaddleOCR을 Finetuning하기</h3>
<h4 id="4_1-text-detection-model-fine-tuning">4_1. Text detection model fine-tuning</h4>
<ol>
<li>Dataset Annotation하기
<img src="https://velog.velcdn.com/images/rain_young/post/101fe2e7-e3c3-45b1-a412-cf36071cff30/image.png" alt=""></li>
</ol>
<p>-&gt; 이런 식으로 각 이미지 파일들의 text와 바운딩 박스 좌표값들을 Annotation File에 입력을 해줘야 함
직접 다 인식을 하기엔 데이터 양이 많아서, 기존의 pretrain된 아래의 모델 두개를 detection하는 데 사용함
<img src="https://velog.velcdn.com/images/rain_young/post/0fe76aa7-2ad8-47f0-8640-9e6824d93b64/image.png" alt="">
<strong>결과</strong>: 새로운 데이터셋에는 detection을 하지 못해 bounding box를 만들지 못함
기존 데이터셋은 detection은 하지만 정확도가 떨어짐
<img src="https://velog.velcdn.com/images/rain_young/post/1f32bdf2-8899-49f8-8e5b-050e27b3d2a8/image.png" alt="">
-&gt; 밑에 한 개 이미지 파일이 기존 데이터셋
<img src="https://velog.velcdn.com/images/rain_young/post/ba84cb48-ae44-4cbb-8b6d-d38479e2599c/image.png" alt="">
-&gt; 인식 정확도가 안 좋음</p>
<ol start="2">
<li>Grounding Dino를 이용한 Object Detection
(회사 서버에서 돌리려고 하면 ERROR: Could not install packages due to an OSError:No space left on device가 떠서 불가능)</li>
</ol>
<p>-&gt; local에서 가상환경을 만들어서 돌림</p>
<ul>
<li>도색된 경우- bounding box가 정확하게 잘 잡힘
<img src="https://velog.velcdn.com/images/rain_young/post/5f17865a-8a49-4cff-afd3-7bd5ebc892aa/image.png" alt=""></li>
<li>샌딩된 경우, 그냥 raw image에서는 bounding box가 아예 잘못 잡히거나 안 잡힘
<img src="https://velog.velcdn.com/images/rain_young/post/492717aa-4b4d-410d-90b8-12c4731c8254/image.png" alt="">
<img src="https://velog.velcdn.com/images/rain_young/post/3a6bd5a9-7768-4704-8dbe-05ced846149e/image.png" alt="">
아마 노이즈가 많이 들어간 이미지라서 detection을 잘 못 하는거 같음</li>
</ul>
<p>=&gt; 이에 대한 해결책으로, 직접 boundingbox를 치는 수 밖에 없을듯..</p>
<h4 id="4_2-text-recognition-model-fine-tuning">4_2. Text recognition model fine-tuning</h4>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Learning robust autonomous navigation and locomotion for wheeled-legged robots ]]></title>
            <link>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Learning-robust-autonomous-navigation-and-locomotion-for-wheeled-legged-robots</link>
            <guid>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Learning-robust-autonomous-navigation-and-locomotion-for-wheeled-legged-robots</guid>
            <pubDate>Tue, 18 Mar 2025 06:42:40 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/pdf/2405.01792">Paper Link</a></p>
<p><a href="https://junja94.github.io/learning_robust_autonomous_navigation_and_locomotion_for_wheeled_legged_robots/">Github Page</a></p>
<p><img src="https://velog.velcdn.com/images/rain_young/post/ac01b42b-166a-4a46-8c0c-28d4362e0706/image.png" alt=""></p>
<h2 id="abstract">Abstract</h2>
<p>본 연구는 적응형 이동 제어(adaptive locomotion control), 이동성 인식 기반의 지역 내비게이션 계획(mobility-aware local navigation planning), 그리고 도시 내 대규모 경로 계획(large-scale path planning)을 포함하는 완전 통합 시스템을 소개한다. </p>
<h2 id="introduction">Introduction</h2>
<ol>
<li><p>Hybrid locomotion은 다리형 로봇 분야에서 여전히 도전적인 영역이다. </p>
<ul>
<li>전통적인 다리형 로봇 방법은 보행 전환을 고려하지 않아 바퀴-다리 로봇에 적용할 경우, 최적이 아니다. </li>
<li>일부는 COT(Cost Of Transport-수송비용)를 직접 최적화해서 보행 성능 향상을 시켰지만, 실내 환경이나 로봇이 주로 전방으로 이동하는 보통의 지형에만 한정되어 있다.</li>
<li>trajectory optimization 기법들을 사용해서 보행을 최적화하고, 복잡한 동작을 만들어내기도 했지만 계산 비용이 너무 많이 들고, 최적에 가까운 초기화에 의존한다. </li>
</ul>
</li>
<li><p>전통적인 navigation planning 방법은 고도로 동적인 로봇의 고유 특성을 간과하는 경우가 많아서 최적이 아닌 내비게이션 경로를 생성하게 된다. </p>
<ul>
<li>내비게이션 알고리즘은 동적 하이브리드 이동의 특성을 고려해야지만 속도, 효율성, 장애물 극복 능력을 모두 달성할 수 있다. </li>
<li>기존 방법은 내비게이션 비용을 기반으로 두지만, 로봇의 전신 상태를 고려하지 않아서 다양한 동적 특성을 반영하지 못한다.-&gt; 빈번한 회전 및 보행 전환이 발생하여 효율성을 저하함<ul>
<li>바퀴-다리 로봇은 짧은 반응 시간을 요구하므로 더 빠른 제어 시스템을 필요로 한다. 동적 환경이나 인간이 존재하는 상황에서는 전통적인 계획 방법보다 더 빠르고 빈번한 의사결정 능력이 필요하다. </li>
</ul>
</li>
</ul>
</li>
<li><p>로봇 시스템에서 자율성을 달성하는 것은 다양한 서브 모듈의 매끄러운 통합을 요구하는 상당한 공학적인 과제이다.</p>
<ul>
<li>전통적으로 서브모듈은 독립적으로 개발되며, 모듈 간의 조율은 휴리스틱 방법에 크게 의존한다. 이러한 휴리스틱은 종종 매끄럽고 견고한 작동을 제한한다. ex): Cerberus 팀은 DARPA 지하 챌린지 동안 전통적인 다리형 로봇의 자율 시스템 개발=&gt; 로봇이 자주 멈춤, 재계획 시도, 지그재그 모션을 보였음</li>
</ul>
</li>
</ol>
<p>=&gt; 본 연구에서는 내비게이션과 이동 제어 간의 매끄러운 조정을 가능하게 하는 <strong>대규모 자율 내비게이션 시스템을 바퀴-다리 로봇</strong>에 대해 개발했다. </p>
<p>접근법: model-free RL(Reinforcement Learning)이랑 privileged learning을 이용한 <strong>Hybrid locomotion control</strong>과 <strong>HRL</strong>(Hierarchical Reinforcement Learning)을 통해 최적화된 내비게이션 제어기를 통합한다. </p>
<p>locomotion과 navigation controller들은 시뮬레이션 데이터를 사용하여 학습하였고, controller 제어기들은 모형 배송 임무를 통해 실제 환경 검증을 위해 설계된 글로벌 내비게이션 프레임워크에 통합되었다. 이 프레임워크 내에서는 디지털 트윈이 활용된다. </p>
<h2 id="results">Results</h2>
<p><a href="https://www.youtube.com/watch?v=vJXQG2_85V0">Movie 1</a></p>
<h3 id="system-overview">System Overview</h3>
<p><img src="https://velog.velcdn.com/images/rain_young/post/eee7fa69-2a78-442a-a440-68ad3f43ccf6/image.png" alt=""></p>
<h4 id="robot">Robot</h4>
<ul>
<li>three Light Detection and Ranging (LiDAR) sensors, an RGB stereo camera at the front, a delivery box, a 5G router, and a GPS antenna <h4 id="navigation-system">Navigation System</h4>
</li>
<li>위 그림 B에 나오듯이</li>
<li>WP1, WP2 두개의 waypoint를 추출함<h4 id="locomotion-controller-llc">Locomotion Controller (LLC)</h4>
</li>
<li>model-free RL을 활용함, RNN-based policy 사용</li>
<li>privileged learning을 통해 시뮬레이션 환경에서 학습됨 (학습 시에만 로봇의 속도, 가속도, 모션 정보, 지형 속서 등등을 privileged 특성으로 사용함)</li>
<li>conventional state estimator 대신에 raw IMU, encoder measurement 사용함</li>
</ul>
<h4 id="mobility-aware-navigation-controller-hlc">Mobility-aware navigation controller (HLC)</h4>
<ul>
<li>전통적인 방법 말고 HLC는 높은 주파수로 직접 속도 목표를 산출함</li>
<li>LLC policy의 여러 입력 모달리티를 처리함</li>
<li>로봇의 과거 내비게이션 경험을 바탕으로 보다 현명한 결정을 내리게 도와줌</li>
<li>위의 그림 C에서처럼 매번 새로운 obstacle-free path에서 두개의 waypoint를 샘플링한 환경에서 시뮬레이션 됨</li>
</ul>
<h4 id="training-environment">Training Environment</h4>
<ul>
<li>Navigation Graph 개념 도입함</li>
<li>시뮬레이션 환경은 Wave Function Collapse(WFC)라는 절차적 콘텐츠 생성 알고리즘을 활용하여 제작되었음</li>
<li>우회로, 동적 장애물, 거친 지형, 좁은 통로 등 다양한 내비게이션 환경임</li>
<li>랜덤하게 장애물의 위치가 주어짐 </li>
</ul>
<h3 id="kilometer-scale-autonomous-deployments">Kilometer-Scale Autonomous Deployments</h3>
<p><a href="https://www.youtube.com/watch?v=wjZofJX0v4M">Movie 2</a>
<a href="https://www.youtube.com/watch?v=vg_NRWGm270&amp;list=PLE-BQwvVGf8GOIzjIAeuY6qCVgDGTr5jh">Movie S1</a>
<img src="https://velog.velcdn.com/images/rain_young/post/bdd62216-c9bc-4e64-8cb1-d5aca73bad29/image.png" alt=""></p>
<ul>
<li>다른 urban 환경에서 autonomous navigation mission을 수행함 (모의 delivery mission의 summary 내용)</li>
<li>최소한의 인간 개입으로 로봇은 총 8.3km 주행함</li>
<li>위 그림의 A 부분을 보면, 휴대용 레이저 스캐너를 사용해서 실험 지역의 dense colorpoint cloud를 획득함</li>
<li>245m × 345m 규모의 도시 지역을 커버하는 데 약 90분이 소요됨</li>
</ul>
<ul>
<li>point cloud에 지리적으로 참조하고 데이터를 mesh-representation으로 변환해서 내비게이션 그래프 생성함, 사람이 목표 지점 배치함</li>
<li>사전에 스캔된 point cloud를 기준으로 LiDAR,IMU,joint encoder데이터를 사용해서 자기 위치 파악함 -&gt; 단일 GPS 목표만 주어져도 자율적으로 목표 위치로 이동 가능</li>
<li>선택된 목표 지점은 모바일 네트워크를 통해 로봇으로 전송-&gt; 최단 경로 알고리즘을 사용해서 참조 경로가 계산됨 -&gt; 이렇게 생성된 경로는 LiDAR 기반 위치 추정을 통해 로봇 기준 좌표로 변환</li>
<li>GPS 기반 방식보다 더 robust함</li>
</ul>
<ul>
<li>3B-iii는 로봇이 주행 중일 때의 속도와 기계적 COT(운송 비용)의 히스토그램
COT = 단위 이동 속도당 actuator가 발휘하는 양의 기계적 동력을 나타냄</li>
<li>우리 로봇은 53% 낮은 COT로 3배 빠른 속도를 보였음</li>
</ul>
<p><img src="https://velog.velcdn.com/images/rain_young/post/a8375928-fce4-488f-bac5-5ef83ec45d41/image.png" alt=""></p>
<ul>
<li>얇은 장애물들을 피할 수 있고, 계단 같은 환경도 잘 다닌다. </li>
<li>HLC와 LLC는 COT값을 최소화하도록 학습 되어서 평탄한 지형에서 주로 로봇이 돌아다녔음</li>
<li>불균일한 표면을 마나면 로봇은 stepping gait로 전환된다. 이런 보행 전환이 수작업 휴리스틱 없이 학습되었음</li>
<li>위 그림의 4B에 나오는 3가지 상황에서 개입하였음. 1. 로봇의 경로에 어린이가 위치한 경우 2. waypoint가 지나갈 수 없는 지역에 위치한 경우 3. 긴 복도와 같이 정보가 부족한 환경에서 위치 추정에 어려움을 겪은 경우</li>
</ul>
<h3 id="local-navigation">Local Navigation</h3>
<h3 id="hybrid-locomotion">Hybrid Locomotion</h3>
<p><img src="https://velog.velcdn.com/images/rain_young/post/f29d3e56-0ad9-410e-9582-955b36849697/image.png" alt=""></p>
<h3 id="comparison-to-a-conventional-navigation-approach">Comparison to a Conventional Navigation Approach</h3>
<p><img src="https://velog.velcdn.com/images/rain_young/post/631722b2-cc30-4e8f-ab14-2f3160f3d4e2/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Locomotion for Robots]]></title>
            <link>https://velog.io/@rain_young/Locomotion-for-Robots</link>
            <guid>https://velog.io/@rain_young/Locomotion-for-Robots</guid>
            <pubDate>Tue, 18 Mar 2025 05:15:30 GMT</pubDate>
            <description><![CDATA[<h2 id="1-learning-robust-autonomous-navigation-and-locomotion-for-wheeled-legged-robots">[1] Learning Robust Autonomous Navigation and Locomotion for Wheeled-Legged Robots</h2>
<p><a href="https://arxiv.org/pdf/2405.01792">Paper link</a></p>
<p><a href="https://junja94.github.io/learning_robust_autonomous_navigation_and_locomotion_for_wheeled_legged_robots/">Github link</a></p>
<p><a href="https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Learning-robust-autonomous-navigation-and-locomotion-for-wheeled-legged-robots"><strong>논문 리뷰 링크</strong></a></p>
<h2 id="2-neural-scene-representation-for-locomotion-on-structured-terrain">[2] Neural Scene Representation for Locomotion on Structured Terrain</h2>
<p><a href="https://arxiv.org/pdf/2206.08077">Paper link</a></p>
<p>Elevation map 관련 내용</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[강화학습] 계보]]></title>
            <link>https://velog.io/@rain_young/%EA%B0%95%ED%99%94%ED%95%99%EC%8A%B5-%EA%B3%84%EB%B3%B4</link>
            <guid>https://velog.io/@rain_young/%EA%B0%95%ED%99%94%ED%95%99%EC%8A%B5-%EA%B3%84%EB%B3%B4</guid>
            <pubDate>Wed, 26 Feb 2025 10:56:37 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/rain_young/post/ffc36b6f-b898-48b1-95de-baedd1ae38d4/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[강화학습] Ch 6. Temporal-Difference Learning ]]></title>
            <link>https://velog.io/@rain_young/RL-Ch-6.-Temporal-Difference-Learning</link>
            <guid>https://velog.io/@rain_young/RL-Ch-6.-Temporal-Difference-Learning</guid>
            <pubDate>Tue, 25 Feb 2025 09:01:49 GMT</pubDate>
            <description><![CDATA[<h2 id="1-td-방식">1. TD 방식</h2>
<p><strong>TD = MC+DP</strong>
<img src="https://velog.velcdn.com/images/rain_young/post/ebf3aef9-ee67-4a90-bf00-fc1065a66d8f/image.png" alt="">
TD 학습은 몬테카를로 방법처럼 raw experience를 통해 학습할 수 있는 Model-Free 방식이며, DP처럼 Bootstrapping을 수행하여 최종 결과를 얻을 때까지 기다리지 않고 다른 학습된 추정값을 기반으로 추정값을 갱신한다. </p>
<p>몬테카를로 수식을 보면, Gt는 시각 t 이후의 실제 이득이며, V(St)의 증가량을 결정하기 위해서는 에피소드가 끝날 때까지 기다려야 한다. 갱신의 목표가 Gt가 된다. </p>
<p>하지만 TD 방법은 시각 t+1에서 관측된 보상 Rt+1과 추정값 V(St+1)을 이용하여 갱신하므로, <strong>다음 시간 단계까지만</strong> 기다리면 된다. 갱신의 목표가 Rt+1 + γV(St+1)가 되고 이 값과 St의 추정값의 차이를 TD error라고 한다. 이러한 TD 방법을 TD(0), one-step TD라고 표현한다.</p>
<p><img src="https://velog.velcdn.com/images/rain_young/post/4186113b-328a-4dae-9adf-9261506f0930/image.png" alt=""></p>
<ul>
<li><p>Every-vist MC에서는 실제 에피소드가 끝나고 받게 되는 보상을 사용해서 value function을 업데이트를 함 =&gt; MC의 갱신 목표 = Gt</p>
</li>
<li><p>TD에서는 실제보상과 다음 step에 대한 미래 추정 가치를 사용해서 학습을 함=&gt; TD의 갱신 목표 TD target
TD target과 실제 V(St)와의 차이를 TD error(델타)라고 함</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/rain_young/post/64db4a5b-8597-4a5d-9a25-6287f0bd38bb/image.png" alt="">
매일 사무실에서 집으로 퇴근할 때 집까지 얼마나 걸릴지 예측해보자. 왼쪽 방법이 몬테카를로 방법, 오른쪽 방법이 TD 방법이다. </p>
<p>고속도로를 빠져나왔을 때, 15분만 더 가면 집을 도착할 줄 알았는데 사실 23분이 더 걸렸다면 이 시각에서 오차는 23-15인 8분이 된다. 이렇게 몬테카를로 방법을 사용하면 추정시간의 변화는 집 도착한 이후에 만들어질 수 있다.</p>
<p>반면에 TD 방법은 즉각적으로 학습을 수행해서 추정값을 35분에서 40분으로 바꾼다. 따라서 각 오차는 시간에 따른 예측값의 변화량인 시간 차에 비례하게 된다.</p>
<p>=&gt; 이처럼 TD의 장점은 종료가 없는 <strong>연속적인 에피소드 환경</strong>에서도 학습을 할 수 있음!</p>
<h2 id="2-td-예측-방법의-장점">2. TD 예측 방법의 장점</h2>
<ul>
<li>DP 방법에 비해 환경에 대한 모델, 보상, 다음 상태의 확률 분포를 필요로 하지 않는다. (<strong>model free</strong>)</li>
<li>몬테카를로 방법에 비해 <strong>점증적인 방식으로 온라인에서 구현</strong>된다. ⇒ 몬테카를로 방법은 에피소드가 끝날 때까지 기다려야 하지만 TD 방법은 한 시간 단계만 기다리면 되므로 새로운 경험이 발생하는 즉시 학습 가능함<ul>
<li>TD 방법과 몬테카를로 방법 모두 올바른 결과로 수렴함을 보장한다. 또 실제 확률론적 문제에서는 TD 방법이 MC 방법보다 보통은 더 빨리 수렴하는 현상이 있었다.</li>
</ul>
</li>
</ul>
<h3 id="td-방식의-단점">TD 방식의 단점</h3>
<ul>
<li>초기값에 대한 민감도가 높음</li>
<li>편향된 예측을 할 가능성이 있음</li>
</ul>
<h3 id="dpmctd-비교">DP/MC/TD 비교</h3>
<p><img src="https://velog.velcdn.com/images/rain_young/post/850a857a-3b24-4347-af4c-32db931e069d/image.png" alt=""></p>
<h2 id="3-td0의-최적성">3. TD(0)의 최적성</h2>
<p>TD 방법은 무한히 길어질 수 있는 에피소드에서도 가능한 방법이다. 제한된 경험 즉 샘플 데이터를 가지고 학습을 이어나가는 학습법은 학습 결과가 수렴될 때까지 지속하여 제시한다. 이 방법이 가능한 이유는 <strong>Batch updating</strong> (일괄 갱신)이 되기 때문이다. Batch updating이란 갱신의 과정에서 각 시점에서의 예측마다 갱신하는 방식으로, 이를 반복적으로 수행해 최종 결과(Global optimum)에 도달하게 하는 것이다. </p>
<p><img src="https://velog.velcdn.com/images/rain_young/post/b5ad2db9-fb6f-4e58-996b-9e5581a5ba27/image.png" alt=""></p>
<p>같은 방법으로 MC 방법도 가능하지만 TD가 성능이 더 좋다. </p>
<p>이유는 MC는 정확한 반환값을 기반으로 한 방법이므로 반환값 자체에 대한 정확한 평가가 나오지 않아 이후 개선에서 한계가 보이는 것이다. 하지만 TD는 이전 정책을 통해 예측한 가치 함숫값을 토대로 사용하는 진행 방식으로 더 최적화된 방식이므로 성능이 더 좋다.</p>
<p><strong>확실성 동등 추정(Certainty-equivalence estimate)</strong> 개념이 등장한다. 이는 Bootstrapping 방식의 특성이기도 하다. 확실성 동등 추정은 ‘미지의 A 모델에 대해서 Bootstrapping 추정 방식을 사용하여 특정 B 모델을 추출하게 되었다면, B 모델이 실제 A 모델과 같다고 가정하는 것’이다. 이 개념으로 인해서 <strong>TD가 MC보다 더 빨리 수렴</strong>되는 이유가 설명된다. TD가 구성하는 정책에 대해 확실성을 갖는다는 전제 하에 불필요한 연산을 줄이고 평가와 개선을 이어나가기 때문이다. 이 때문에 <strong>편향(Bias)</strong>가 발생할 순 있지만 속도는 훨씬 빨라진다. </p>
<h2 id="4-sarsa-on-policy-td-control">4. SARSA: On-Policy TD Control</h2>
<ul>
<li>target policy: 목표 정책, 학습자의 정책 </li>
<li>behavior policy: action을 취할 때의 policy, 행동 정책           </li>
</ul>
<p><strong>On-Policy 방법</strong>은 현재 policy를 평가하고 개선하는 동안 동일한 정책을 따르는 방법임
<strong>target policy = behavior policy</strong>
<img src="https://velog.velcdn.com/images/rain_young/post/5d5587bc-2ee5-4bb1-a169-8dc7cc5fc2b8/image.png" alt=""></p>
<p>On-Policy 기반의 TD 제어 방법으로 SARSA가 있다. SARSA는 State, Action, Reward, next State, next Action 순서로 진행되는 시퀀스 구성 요소들에서 한 글자씩 따와 명명한 것이다. </p>
<p><img src="https://velog.velcdn.com/images/rain_young/post/63092e67-6916-4761-851b-3370bda7fb9d/image.png" alt=""></p>
<p>이는 행동 가치 함수 (상태-행동쌍)기반의 알고리즘으로 행동 정책 π에 대해서 qπ를 추정하고 동시에 π가 qπ에 대해 탐욕적이 되도록 π를 변화시키는 것이다.
<img src="https://velog.velcdn.com/images/rain_young/post/e11d5db5-65cf-42e3-b104-8bc73d32d720/image.png" alt=""></p>
<h2 id="5-q-learning-off-policy-td-control">5. Q-learning: Off-Policy TD Control</h2>
<p><strong>Off-Policy 방법</strong>은 다른 policy를 따르는 동안 현재 정책을 평가하고 개선하는 방법임
<strong>target policy != behavior policy</strong></p>
<p>Off-Policy 기반의 TD 제어 방법으로 Q-learning이 있다. 
<img src="https://velog.velcdn.com/images/rain_young/post/a40b48ae-2999-4150-bbcc-9a186ab416cf/image.png" alt=""></p>
<p>Target policy와 무관하게 Behavior policy를 기반으로 최적 정책을 구성하고 있고, 최대 Q를 target으로 잡아 학습한다. 이로 인해 On-Policy 방법보다 편향이 적다.
<img src="https://velog.velcdn.com/images/rain_young/post/1299f19d-aaf7-472c-9609-7ca0a4d488a2/image.png" alt=""></p>
<h3 id="sarsa와-q-learning-예시">SARSA와 Q-learning 예시</h3>
<p>절벽이라고 표시된 영역으로 이동할 경우에는 -100의 보상이, 이외의 행동에는 -1의 보상이 주어진다. 목표는 절벽을 피해 시점에서 종점까지 보상을 최대화하는 최적의 경로를 찾는 것이다. 
<img src="https://velog.velcdn.com/images/rain_young/post/77740795-7f6b-4588-9423-69a50df09f3e/image.png" alt=""></p>
<p><strong>SARSA</strong>: 타겟에 의거하여 현재 정책에 기반해서 다음 상태의 향동가치의 평균치를 고려하는 방식이므로 절벽 근처 지점의 상태에 대해서 비관적인 가치평가를 한다. 그래서 절벽에서 멀리 떨어진 상태들을 위주로 경로를 짜서 Safe Path를 형성한다. </p>
<p><strong>Q-learning</strong>: 정책에 무관하게 다음 상태의 최대행동가치를 고려하는 방식이므로 주변에 절벽이 존재하는지의 여부와 관계없이 최대가치행동만 보기때문에 최단거리 경로인 Optimal Path를 형성한다.</p>
<h2 id="6-expected-sarsa">6. Expected SARSA</h2>
<p><strong>On-Policy인 SARSA를 Off-Policy 형태로 변환한 형태</strong>이다. </p>
<p><img src="https://velog.velcdn.com/images/rain_young/post/0a91e9b6-a7d5-46fc-a6ca-7f5eb36f41df/image.png" alt="">
다음 상태 St+1이 주어지면, 기댓값 SARSA 알고리즘은 SARSA가 기댓값을 기준으로 이동하는 방향과 같은 방향으로 결정론적으로 이동한다. </p>
<p>deterministic을 띄는 점에서, 계산량은 많아지지만 At+1에 대한 무작위 선택 때문에 발생하는 분산을 줄여준다. 주로 기댓값 살사가 살사보다 성능이 더 좋다.</p>
<p>장점: SARSA 보다 더 낮은 분산을 가지고, Q-learning보다 작은 optimization overshoot을 보임</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Isaac Sim, Isaac Lab 설치하기]]></title>
            <link>https://velog.io/@rain_young/Isaac-Sim-Isaac-Lab-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@rain_young/Isaac-Sim-Isaac-Lab-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0</guid>
            <pubDate>Thu, 20 Feb 2025 04:48:26 GMT</pubDate>
            <description><![CDATA[<h2 id="conda-설치">Conda 설치</h2>
<p><a href="https://meuse.tistory.com/entry/Linux%EC%97%90-Anaconda-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0">Conda Installation</a></p>
<pre><code class="language-python">wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh

bash Anaconda3-2024.10-1-Linux-x86_64.sh

# 터미널 다시 껐다가 켜서

python --version
conda --version
pip --version

conda update -n base conda
conda update --all</code></pre>
<h2 id="isaac-sim이랑-isaac-lab-설치하기">Isaac Sim이랑 Isaac Lab 설치하기</h2>
<p><a href="https://isaac-sim.github.io/IsaacLab/main/source/setup/installation/binaries_installation.html">Isaac Sim, Lab Installation</a></p>
<h3 id="isaac-sim-설치하기">Isaac Sim 설치하기</h3>
<p><a href="https://docs.isaacsim.omniverse.nvidia.com/latest/installation/download.html#download-isaac-sim-short">Isaac Sim 설치 링크</a></p>
<p>이렇게 설치하고 나면 Isaac Sim directory는 ${HOME}/Downloads/isaac-sim-standalone@* 이 될 것이다.</p>
<p>Downloads-&gt;flamingo-&gt;logs-&gt;co_rl-&gt;Flamingo_Flat_Stand_Drive-&gt;ppo-&gt;날짜에 들어가면 내가 돌린 model_숫자.pt가 나옴</p>
<p>그냥 돌리면 젤 최근 model로 알아서 들어간다</p>
<p>code.txt에 들어가면 train이랑 play가 나오는데 여기서 play를 다른 디버깅 창에다가 가상환경 활성화해서 돌려보면 된다.
--num_envs 뒤에 나오는 숫자가 로봇 개수이다. </p>
<h2 id="코드-만져보기">코드 만져보기</h2>
<p>rewards.py가 모든 보상들이 적혀있어서 그걸 보고 
flat_env_stand_drive_cfg.py 코드에 알맞는 보상 함수를 갖다 쓰기 </p>
<p>jump를 실행 잘되게 하기!</p>
<ul>
<li>flat_orientation_l2_driving_jump
로봇이 수평 방향에서 벗어나는 것을 패널티로 설정.</li>
<li>joint_deviation_l1_driving_jump
로봇의 관절(joint) 위치가 기본 위치에서 너무 많이 벗어나면 패널티를 부과.</li>
<li>penalty_ang_vel_x_driving_jump
로봇의 X축 각속도가 너무 크면 패널티를 부과</li>
<li>base_target_range_height_v2_driving_jump
로봇의 높이가 특정 목표 범위 내에 있도록 유도하는 보상 함수.</li>
</ul>
<ul>
<li>숨겨진 파일 보이게 해서 launch 파일들 같은거 넣어주기</li>
<li>python interpreter를 env_isaaclab으로 바꿔주기 
(vs code 오른쪽 아래에 있음)</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[강화 학습] RL 발전 과정 및 간단 정리]]></title>
            <link>https://velog.io/@rain_young/%EA%B0%95%ED%99%94-%ED%95%99%EC%8A%B5-RL-%EB%B0%9C%EC%A0%84-%EA%B3%BC%EC%A0%95-%EB%B0%8F-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@rain_young/%EA%B0%95%ED%99%94-%ED%95%99%EC%8A%B5-RL-%EB%B0%9C%EC%A0%84-%EA%B3%BC%EC%A0%95-%EB%B0%8F-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 20 Feb 2025 04:39:43 GMT</pubDate>
            <description><![CDATA[<p>강화학습을 공부해보니 발전과정이 복잡해서 그걸 한번 간단하게 정리해보려고 한다. 각 개념에 대해서는 차차 정리를 자세하게 해보겠다.</p>
<h2 id="1-mdp-markov-decision-process-마르코프-결정과정">1. MDP (Markov Decision Process 마르코프 결정과정)</h2>
<p><a href="https://blog.naver.com/tjqdl2013/222278102565">Markov property 설명 참조</a>
MDP의 핵심은 <strong>Markov Property</strong>이다.
Markov property란, next state로 이동할 때, past state이 present state에 전혀 영향을 미치지 않는 것을 의미한다. (ex. Brownian motion)
즉, 현재 t만이 미래 t+1을 결정하는 지표이다.
P(St+1|St) = P(St+1|St,St-1,...,S0)</p>
<p>Stocastic process가 Markov property를 가지면 Markov process라고 한다. Markov property를 만족하면 현재 state만 알고 있으면 돼서 확률을 계산하는데 효율적이다. 
(만약, 다음 state를 예측할 때, Markov property를 만족하지 않으면, past state에 의존하므로 이전 state들에 대해서 정확히 알아야지 계산이 가능하고 이전 state들을 모두 기억해야 하므로 복잡한 조건부확률을 계산해야 한다.)</p>
<p>MDP: 튜플 형태로 (S,A,P,R,γ)
S: state, A: action, P: state transition(s-&gt; s&#39;), R: reward, γ: discount factor 감가율</p>
<h2 id="2-bellman-방정식을-이용한-dp-dynamic-programming">2. Bellman 방정식을 이용한 DP (Dynamic Programming)</h2>
<p>DP는 복잡한 문제를 작은 문제로 나누어 직접 계산하는 것이다.
DP의 3가지 구성 요소</p>
<ul>
<li>Substructure - 하나의 복잡한 큰 문제를 간단한 작은 문제 여러개로 나눈다.</li>
<li>Table Structure - 작은 문제들을 게산한 후에 해답을 테이블에 기록 하는 것이다. 이후에 같은 문제가 나오면 다시 계산하지 않고 사용함</li>
<li>Bottom-up Computation - 밑에 있는 작은 문제들을 풀어 큰 문제를 해결하는 것이다. 작은 문제들의 해답을 이용해 -&gt; 더 큰거 -&gt; 더더 큰 문제의 해답 구하기</li>
</ul>
<p><img src="https://velog.velcdn.com/images/rain_young/post/ed678a76-9428-467e-980e-06f8e35f650f/image.png" alt="">=&gt; 제일 짧은것만 다 선택해서 최적으로!</p>
<p>이런 문제를 풀 때, DP가 효율적이다.</p>
<h3 id="cf-bellman-equation">cf. Bellman Equation</h3>
<p><a href="https://blog.naver.com/wjddudwo209/221624785859">Bellman Equation 설명 참조</a></p>
<ul>
<li><p><strong>Optimality</strong> - 각 state에서 제일 좋은 action만 선택해서 Bellman Equation 값을 구하는 것 (그래서 수식에 max가 들어가있음)</p>
</li>
<li><p><strong>Expectation</strong> - 특정 행동의 선택이 확률적으로 결정될때, 이 확률들에 대한 기댓값으로 Bellman Equation 값을 구하는 것</p>
</li>
</ul>
<hr>
<p>DP의 두가지 방법으로 Value Iteration, Policy Iteration이 있다. </p>
<h3 id="2-1-policy-iteration-정책-반복">2-1. Policy Iteration (정책 반복)</h3>
<ul>
<li><strong>bellman expectation equation</strong> 사용</li>
<li>벨만 기대 방정식을 이용해 정책을 평가하고, 탐욕 정책 발전을 이용해 정책 발전함</li>
<li>즉, value가 바뀌지 않을때까지 evaluate해야 한다. (수렴할때까지)</li>
<li>오래걸린다는 단점이 있음
<img src="https://velog.velcdn.com/images/rain_young/post/011caf64-0e07-483c-bdae-8cdff88ecdd5/image.png" alt=""></li>
</ul>
<h3 id="2-2-value-iteration가치-반복">2-2. Value Iteration(가치 반복)</h3>
<ul>
<li><strong>bellman optimality equation</strong> 사용</li>
<li>최적 정책을 가정하고 벨만 최적 방정식을 이용한다. 정책이 직접적으로 주어지지 않아 큐함수를 통해 행동을 선택한다. </li>
<li>정확한 값으로 수렴할 때까지 기다리지 않고 중간에 멈추자! =&gt; 각 state를 한번씩 다 갱신한 이후에 value function의 변화량을 계산해보고 그 변화량이 아주 작은 값 이내로 들어오면 반복을 멈춘다.</li>
<li>Evaluation을 단 한번만 한다.</li>
</ul>
<hr>
<p>하지만, DP에는 3가지 문제가 있다.</p>
<ul>
<li>계산복잡도 - 작은 문제로 나누는데 한계</li>
<li>차원의 저주 - 테이블에 저장하는데 state space가 너무 커지면 다 기록하기가 어려움</li>
<li>환경에 대한 완벽한 정보 - transition probability와 reward를 알고 있어야 함</li>
</ul>
<p>이 문제를 해결하고자 나온 것이 <strong>강화학습 RL</strong>이다.
DP는 Planning, RL은 Learning입니다. 
계속 얻어지는 reward가 있을텐데 이 reward의 sum인 total reward를 계산하고 policy를 평가하여 total reward를 최대화하는 방향으로 policy를 update하는 것이 강화학습의 기본 틀이다. </p>
<p>강화학습은 주어진 데이터에 대해서만 계산을 하므로 계산 복잡도나 차원의 저주를 해결할 수 있다.
<img src="https://velog.velcdn.com/images/rain_young/post/2179c6de-b9d5-4cc5-9b96-04643e4a59c6/image.png" alt=""></p>
<p>이렇게 RL의 예시로는 MC와 TD가 있다. 
이렇게만 일단 봐두고 밑에서 다시 설명하겠다.
(이 그림이 후에 나오는 MC와 TD에 대해서도 잘 설명하므로 첨부한다.)
<img src="https://velog.velcdn.com/images/rain_young/post/e64b3227-36c9-47ed-bef7-67b427fc887c/image.png" alt=""></p>
<h2 id="3-mc-monte-carlo-method-몬테카를로">3. MC (Monte Carlo Method 몬테카를로)</h2>
<p><a href="https://velog.io/@lee9843/VAE-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EB%82%B4%EC%9A%A93-Monte-carlo-Algorithm">MC 알고리즘 설명 참조</a>
몬테카를로 알고리즘은 정확한 값을 얻는 방법이라기 보다는 무작위로 난수를 생성한 후, 원하는 정보의 확률값을 계산하는 알고리즘이다.
<img src="https://velog.velcdn.com/images/rain_young/post/2e9fc108-4250-4b02-b395-b1492e11eb75/image.png" alt=""></p>
<p>MC는 다른 강화학습과 다르게 episode-by-episode로 샘플을 얻어 진행한다.
한 게임이 끝날 때 return을 가지고 진행해서 episodic task이다. </p>
<p>매 샘플로 주어진 episode마다 리턴값을 얻고, 이들의 기댓값이 Q-value를 계산하는데 사용된다.</p>
<p><strong>MC의 장점</strong>으로는 state의 개수에 의존하지 않고 확률이 아주 적은 경우들은 배제해주기에 효률적이다. 또, <strong>Markov property가 깨져도 크게 영향을 받지 않는다</strong>. 
MC는 <strong>no bootstrapping 방식</strong>으로, 끝까지 간 후 return값들의 평균이므로, 현재 state만 다음 state에 영향을 미친다는 Markov Property에 조금의 오차가 생겨도 게임을 끝까지 한 결과에 크게 진행해서 크게 영향을 받지 않는다.
(cf. Bootstrapping이란? 
같은 종류의 추정값에 대해서 업데이트를 할 때, 한개 혹은 그 이상의 추정값을 사용하는 것이다.)</p>
<p>(incremental mean을 기록해두는 방식이다.
k까지의 평균을 구하고 싶으면 k-1까지의 평균에 현재 값만 알면 구하기 쉽다.)</p>
<h3 id="3-1-mc-control">3-1. MC control</h3>
<p>MC control: ε-greedy policy를 이용해서 MC policy improvement를 진행하는 것</p>
<p><strong>&quot;ε-greedy policy&quot;</strong>란?</p>
<p>Exploitation은 이미 알고 있는 정보 내에서 가장 최선의 선택을 하는 것 (greedy)
Exploration은 알고 있는 정보 이외에 더 최선의 방법을 찾는 것 (모험)</p>
<p>=&gt; ε의 확률만큼 Exploration으로 새로운 action을 취하고 1-ε 확률 만큼으로 highest Q-value를 선택하는 것. 
이를 통해 가보지 않았던 pair에 대해 방문하며 sampling하는 것, ε확률만큼 손해 볼 수도 있지만 여러번 반복하면 더 좋은 Q값을 찾을 수도 있음.</p>
<p>ε-greedy policy는 stochastic policy가 된다.</p>
<h2 id="4-td-learning-temporal-difference-learning-시간차-학습">4. TD Learning (Temporal Difference Learning 시간차 학습)</h2>
<p>자세한 설명: <a href="https://velog.io/@rain_young/RL-Ch-6.-Temporal-Difference-Learning">TD Method 설명글</a></p>
<p>TD의 대표적인 알고리즘으로는 <strong>SARSA</strong>와 <strong>&quot;Q-learning&quot;</strong>이 있다. </p>
<p>TD도 policy iteration이지만 GPI(Generalized Policy Iteration)으로, <strong>one-step transition</strong>이다. </p>
<p>MC의 단점: 게임이 끝날때까지 가야 return 값을 계산함, no-bootstrapping
=&gt; 이를 개선해서 DP처럼 bootstrapping을 이용해서 다음 상태의 실제 값이 아닌 추정값으로 update함
<img src="https://velog.velcdn.com/images/rain_young/post/30431d0f-fa82-416e-9a10-5bc46f22137e/image.png" alt=""></p>
<h3 id="4-1-sarsa">4-1. Sarsa</h3>
<ul>
<li>ε-greedy policy를 통해 action을 정함</li>
<li>Sarsa의 타겟이 Bellman expectation eq를 가져온 것</li>
</ul>
<h3 id="4-2-q-learning">4-2. Q-learning</h3>
<ul>
<li>agent가 다음 state에서 highest Q값을 갖게하는 action을 선택하는 것</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Policy Gradient Methods for Reinforcement Learning with Function
Approximation]]></title>
            <link>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Policy-Gradient-Methods-for-Reinforcement-Learning-with-FunctionApproximation</link>
            <guid>https://velog.io/@rain_young/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Policy-Gradient-Methods-for-Reinforcement-Learning-with-FunctionApproximation</guid>
            <pubDate>Tue, 18 Feb 2025 07:30:14 GMT</pubDate>
            <description><![CDATA[<h2 id="소개">소개</h2>
<p><a href="https://proceedings.neurips.cc/paper_files/paper/1999/file/464d828b85b0bed98e80ade0a5c43b0f-Paper.pdf">Paper link</a></p>
<p>강화학습의 시초 같은 논문을 읽어보겠다. NeuralPS (NIPS)에 기재된 논문이다. </p>
<p>이 논문에 대해서 발표를 하게 되어 작성한 ppt를 첨부한다.
<a href="https://docs.google.com/presentation/d/1zRm0kGmb55DrM8I6_FDiwnPeKdFBSv4V6Jh0SuWDyYs/edit?usp=sharing">PG PPT</a></p>
<h2 id="abstract">Abstract</h2>
<p>Function approximation (함수 근사)는 강화학습에서 필수적이지만, value fuction을 근사하고 가치 함수를 기반으로 policy정책을 결정하는 표준 접근 방식은 여전히 다루기 어렵다.</p>
<p>이 논문에서는 이에 대한 대안으로, 가치함수와 독립적인 자체 fuction approximator로 표현하고 expected reward (기대 보상)의 gradient를 사용하여 업데이트하는 방법을 설명한다. 이런 접근 방식의 에시로는 Williams의 reinforce 방법이 있다.</p>
<p>이에 대한 결과로, gradient가 경험을 통해 추정할 수 있는 적절한 형태로 나타낼 수 있고, 이 과정에서 approximate action-value 함수 또는 advantage 함수를 활용할 수 있었다. 이를 바탕으로 임의의 미분 가능한 함수 approximation을 사용하는 policy iteration 방식이 optimal 정책으로 수렴함을 처음으로 증명한다.</p>
<h2 id="introduction">Introduction</h2>
<p>과거에는 value-function 기반의 접근 방식으로, action-selection policy는 greedy (탐욕적) 정책으로 표현된다. </p>
<p>좀 더 쉽게 말하자면,
이전에는 <strong>value-based 접근 방식</strong>으로, policy를 또 optimize하지 않고 approximated value function에서 어떤 상태에서 <strong>가치 함수를 최대화하는 값</strong>을 policy로 정하면 돼서 간단하면서도 좋은 성능을 보였음 </p>
<p>(ex. 각 상태에서 가장 높은 추정가치를 갖는 행동을 선택하는 방식)</p>
<p>가치함수 기반 접근 방식은 <strong>&quot;2가지 한계&quot;</strong>가 있음</p>
<ol>
<li>가치 함수 기반은 가치 함수의 최대만 취하므로, policy가 deterministic (결정론적)이다.
but 최적 정책은 종종 stochastic (확률적)문제이고, 특정확률로 서로 다른 행동을 선택해야한다.(exploration을 해야함)</li>
<li>policy가 max만을 취하므로, 행동의 추정된 가치가 아주 작은 변화를 겪어도, policy에 아주 큰 변화를 낸다.
이런 불연속 변화가 value-based method의 수렴 보장을 얻는데에 큰 장애물이 된다. </li>
</ol>
<p>이를 해결하기 위해 stochastic policy (확률적 정책)을 직접 근사한다. </p>
<h2 id="content">Content</h2>
<p>value function을 approximate해서 그걸 deterministic 정책을 계산하는데 쓰기보다는 independent policy function을 이용해서 stochastic 정책을 계산하자</p>
<p>policy gradient 접근 방식으로는, p(단계별 평균 reward)에 대해 최대화 되는 방향으로 세타(policy파라미터)를 gradient ascent를 진행함 (아래 수식 참고-알파: step size)
<img src="https://velog.velcdn.com/images/rain_young/post/fe4ad94e-6d48-49c6-a958-0b3c9c8b3f71/image.png" alt=""></p>
<p>이렇게 하면 value-function 기반 방식과 다르게 세타의 작은 변화-&gt; policy/state-visitation 분포에 작은 변화만 초래한다.</p>
<p>이 논문에서 </p>
<ul>
<li>경험을 통해 approximate value function을 이용하면 <strong>policy gradient를 편향 없이 추정</strong>할 수 있음을 증명함</li>
<li>임의의 미분 가능한 함수 approximation을 사용하는 policy iteration 방식을 쓰더라도(정책을 직접 학습하는 방식도) <strong>locally optimal policy로 수렴함</strong>을 처음으로 증명함
(기존의 경험 기반 REINFORCE 알고리즘보다 더 빠르고 안정적임)</li>
</ul>
<h3 id="1-policy-gradient-theorem">1. Policy Gradient Theorem</h3>
<p>learning agent는 MDP(Markov decision process 마르코프 결정 과정)와 상호작용함</p>
<h3 id="2-policy-graient-with-approximation">2. Policy Graient with Approximation</h3>
<h3 id="3-application-to-deriving-algorithms-and-advantages">3. Application to Deriving Algorithms and Advantages</h3>
<h3 id="4-convergence-of-policy-iteration-with-function-approximation">4. Convergence of Policy Iteration with Function Approximation</h3>
]]></description>
        </item>
    </channel>
</rss>