<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Diary]]></title><description><![CDATA[Diary]]></description><link>https://10262025-diary.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 08:40:21 GMT</lastBuildDate><atom:link href="https://10262025-diary.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[DiArY日寄 - 10.26.2025]]></title><description><![CDATA[今天先用中文写总结，没啥时间了
今天的目标是理解Provably Efficient Model-Free Constrained RL with Linear Function Approximation的算法
分成了几步来走
How UCB measure uncertainty
在UCB中，Λ（lambda matrix） 是如何影响我们对数据的认知的
信息矩阵 Λ（lambda matrix）
Λ（lambda matrix）本质上是几个单eigenvector matrix的加法组成的...]]></description><link>https://10262025-diary.hashnode.dev/diary-10262025</link><guid isPermaLink="true">https://10262025-diary.hashnode.dev/diary-10262025</guid><category><![CDATA[Diary]]></category><dc:creator><![CDATA[Ziyang Xuan]]></dc:creator><pubDate>Mon, 27 Oct 2025 04:54:41 GMT</pubDate><content:encoded><![CDATA[<p>今天先用中文写总结，没啥时间了</p>
<p>今天的目标是理解Provably Efficient Model-Free Constrained RL with Linear Function Approximation的算法</p>
<p>分成了几步来走</p>
<h1 id="heading-how-ucb-measure-uncertainty">How UCB measure uncertainty</h1>
<h3 id="heading-ucbllambda-matrix">在UCB中，Λ（lambda matrix） 是如何影响我们对数据的认知的</h3>
<h3 id="heading-llambda-matrix">信息矩阵 Λ（lambda matrix）</h3>
<p>Λ（lambda matrix）本质上是几个单eigenvector matrix的加法组成的</p>
<p>单eigenvector matrix 是指 x <em>x ^ T这种，由单一vector</em> 构成，这种matrix的rank 是1， eigenvalue 是 x的长度平方， eigenvector是 x， 这个可以简单证明。</p>
<p>Λ（lambda matrix）= x1 ×1T +x2 ×2T 的情况下，也就是有俩个matrix加法组成的情况下，新matrix的eigenvector 会shift一下，比如 x1= [1,1], x2 = [1,2] 那么 Λ（lambda matrix） 的eigenvector必定有一个在x1 和x2组成的夹角内，这个还没证明，但是给了几个例子都是这样子的</p>
<p>这可以帮我们理解对Λ（lambda matrix）有更深入的理解，但是对UCB没有啥用</p>
<p>返还UCB，他对uncertainty的计算公式是 xT Λ^-1 x的开方, 备注，Λ（lambda matrix）是PD的，这个可以证明。直观理解是，如果我的x 在组成 Λ（lambda matrix）的数据中出现了很多次，或者说，离很多数据都很近，这个 uncertainty会变得很小。</p>
<p>反过来说，如果是xTΛx的话（注意 这里没有inverse，因为不inverse更好直观理解），我们知道x越多，左侧的值越大，为什么呢，直接对Λ打开， 变成 xT xn xnT x 这个本质上是 (xT xn)的长度平方，x 和xn夹角越小，这个值越大，所以可以想象一下，如果我们有很多数据，都和x 的角度很小，那xTΛx将非常大。</p>
<p>返回uncertainty的计算，Λ-1 本质上eigenvector没有改变，但是eigenvalue变成了 1/ lambda, 所以情况会相反，如果当前的x出现了很多次，uncertainty会变得很小，因为在那个方向被缩小的严重</p>
<h1 id="heading-lsvi">什么是LSVI</h1>
<p>理解LSVI需要先知道LSVI的背景</p>
<ul>
<li>LSVI的算法是在MDP finite step情况下的，他的目的是，用线性函数估算我的Q value</li>
</ul>
<p>在MDP finite step情况下，我的Q value就是之后所有step reward的和，也就是一开始很大，后面慢慢变小，因为step =1的时候，我们要算后续所有值的和 step = last one的时候，我们只需要最后一个reward就行</p>
<p>这里LSVI需要从最后一个往前做，每一个当前Q value都是基于后面一个Q value的，比如在step 1的时候，我们需要step 2的信息，但是step 2 需要后续的。。。 这就会很麻烦。</p>
<p>所以我们拟合最后一个step的 value，然后再去 倒数第二个step，去拟合q value</p>
<blockquote>
<p>为什么不直接做iteration呢，从第一个开始做，就像正常的learning一样</p>
<p>因为线性模型可以一次直接拟合，有固定公式，不需要做很多次iteration，直到converge了</p>
</blockquote>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">这里有一个好玩的地方是，虽然是线性模型，但是这里其实非常flexible，因为feature function我们可以做很多手脚，比如，一个神经网络本质上也是feature function + 线性模型（最后一层）。</div>
</div>

<h1 id="heading-lsvi-ucb">LSVI UCB</h1>
<p>本质上是，基于LSVI算法，我们本来是一个线性模型，但是我们这时候添加UCB，给 一些未知区域添加了额外的reward来指导探索</p>
<h1 id="heading-provably-efficient-model-free-constrained-rl-with-linear-function-approximation">Provably Efficient Model-Free Constrained RL with Linear Function Approximation</h1>
<p>这篇文章本质上是 LSVI UCB 的算法，添加了constraint的要求，但是这里我有一些问题不太理解，是他用utility来代替constraint，也就是我们希望utility达到一定的值</p>
<p>他很多新定义的variable</p>
<p>action space 是一组finite action的集合，比如 {前，后，左，右}</p>
<p>policy 基于 s,h 给一个possibility的vector，dimension = 有多少个action</p>
<blockquote>
<p>h 是step， 注意，每个step的policy都不一样，每个step都自己的policy，reward function， utility function</p>
<p>提问： 为什么policy是需要一个vector，而不是all in一个action，all in 一个action，不会我的reward最大吗？</p>
<p>这里很像一个线性优化问题，我们需要r1 + r2 + r3.. 最大，并且 u1 + u2 +u3 .. &gt; U, 那本质上不会all in 一个action，而是会组合一下action，这样子我的expected reward 才能最大</p>
</blockquote>
<p>算法的核心是，让utility也变成一个reward去指导action，如果一个action的utility 高，那他会比其他action更有优势，这个utility * Y 会直接加到reward上， Y是一个变化的标量，他会基于当前utility够不够，左右移动</p>
]]></content:encoded></item></channel></rss>