<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://sixiangjia.de/feed.xml" rel="self" type="application/atom+xml" /><link href="https://sixiangjia.de/" rel="alternate" type="text/html" /><updated>2026-03-14T18:02:08+08:00</updated><id>https://sixiangjia.de/feed.xml</id><title type="html">freedom</title><subtitle>An amazing website.</subtitle><author><name>Weiqing Liu</name><email>mailto:liuweiqing147@gmail.com</email></author><entry xml:lang="zh"><title type="html">从“模仿”到“思辨”：大模型两阶段对齐的最佳实践</title><link href="https://sixiangjia.de/tech/llm-dpo/" rel="alternate" type="text/html" title="从“模仿”到“思辨”：大模型两阶段对齐的最佳实践" /><published>2026-03-14T00:00:00+08:00</published><updated>2026-03-14T00:00:00+08:00</updated><id>https://sixiangjia.de/tech/llm-dpo</id><content type="html" xml:base="https://sixiangjia.de/tech/llm-dpo/"><![CDATA[<p>在微调大模型时，我们常手里攥着一堆数据：同一个问题，一个回答逻辑严密（Chosen），另一个回答虽然能看但略显平庸甚至有误（Rejected）。</p>

<p>很多人纠结：是只把好的那个拿去微调（SFT），还是直接拿两个去做强化学习（DPO）？答案是：<strong>全都要，但要分先后。</strong></p>

<hr />

<h2 id="第一阶段sft监督微调-建立好学生的底子">第一阶段：SFT（监督微调）—— 建立“好学生”的底子</h2>

<p>如果你手里只有“好的答案”，这叫<strong>监督微调（Supervised Fine-Tuning）</strong>。</p>

<h3 id="1-为什么它是必选项">1. 为什么它是必选项？</h3>

<p>SFT 的核心是 <strong>“概率最大化”</strong>。通过学习 <code class="language-plaintext highlighter-rouge">(Prompt, Chosen)</code>，模型在学习一种说话的“范式”：</p>

<ul>
  <li><strong>指令遵循</strong>：问 A 答 A，不要答非所问。</li>
  <li><strong>格式规范</strong>：学会写 JSON、学会用 Markdown、学会特定的语气。</li>
  <li><strong>知识注入</strong>：让模型记住你业务场景下的专业术语。</li>
</ul>

<h3 id="2-局限性">2. 局限性</h3>

<p>只做 SFT 的模型是一个“死记硬背”的复读机。它知道什么是对的，但它不知道什么是错的。当遇到没见过的问题时，它极易产生<strong>幻觉（Hallucination）</strong>，因为它没有“由于不确定而拒绝回答”的这种辨别力。</p>

<hr />

<h2 id="第二阶段dpo直接偏好优化-注入灵魂与判断力">第二阶段：DPO（直接偏好优化）—— 注入“灵魂”与“判断力”</h2>

<p>当你把“好答案”和“坏答案”同时喂给模型时，真正的魔术发生了。</p>

<h3 id="1-从背诵到考试">1. 从“背诵”到“考试”</h3>

<p>DPO 不再是简单地告诉模型“这题选 A”，而是给它一个对比：<strong>“这题选 A 更好，选 B 虽然也行但很烂。”</strong></p>

<p>通过计算两个答案在模型中的相对概率，DPO 强迫模型拉大两者的差距：</p>

\[L_{DPO} = - \log \sigma \left( \beta \log \frac{\pi_{\theta}(y_w | x)}{\pi_{ref}(y_w | x)} - \beta \log \frac{\pi_{\theta}(y_l | x)}{\pi_{ref}(y_l | x)} \right)\]

<p><em>其中 $y_w$ 是好答案，$y_l$ 是坏答案。</em></p>

<h3 id="2-为什么要用-dpo-压轴">2. 为什么要用 DPO 压轴？</h3>

<ul>
  <li><strong>逻辑纠偏</strong>：如果坏答案（Rejected）里有逻辑漏洞，模型会深刻记住这种思维方式是“扣分项”。</li>
  <li><strong>安全性对齐</strong>：通过对比，模型能学会拒绝诱导性提问。</li>
  <li><strong>上限突破</strong>：它能让模型的表现超过 SFT 阶段的上限，因为模型学会了在多种可能性中选择“最优解”。</li>
</ul>

<hr />

<h2 id="落地指南一鱼两吃的标准流程">落地指南：一鱼两吃的标准流程</h2>

<p>刘伟清，如果你准备动手，请参考这个标准的工程链路：</p>

<table>
  <thead>
    <tr>
      <th>步骤</th>
      <th>操作</th>
      <th>数据资源</th>
      <th>核心产出</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Step 1</strong></td>
      <td><strong>SFT 预热</strong></td>
      <td><code class="language-plaintext highlighter-rouge">(Prompt, Chosen)</code></td>
      <td>一个听话、格式正确的 Baseline 模型。</td>
    </tr>
    <tr>
      <td><strong>Step 2</strong></td>
      <td><strong>权重保存</strong></td>
      <td>保存 Step 1 的模型。</td>
      <td>作为下一步的 <strong>Reference Model</strong>。</td>
    </tr>
    <tr>
      <td><strong>Step 3</strong></td>
      <td><strong>DPO 进阶</strong></td>
      <td><code class="language-plaintext highlighter-rouge">(Prompt, Chosen, Rejected)</code></td>
      <td>一个具备逻辑辨别能力、幻觉更少的智能模型。</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="避坑指南坏答案不是越烂越好">避坑指南：坏答案不是越烂越好</h2>

<p>在准备 DPO 数据时，有一个误区：坏答案是不是写得越离谱越好？
<strong>错。</strong> 最有效的 <code class="language-plaintext highlighter-rouge">Rejected</code> 数据是那种<strong>“看起来很像对的，但细节有误”</strong>的回答。这种细微的差别最能逼迫模型产生深度思考。如果坏答案只是乱码，模型学不到任何有意义的区分逻辑。</p>

<hr />

<h2 id="总结">总结</h2>

<p><strong>SFT 决定了模型的“下限”，确保它能说人话；而 DPO 决定了模型的“上限”，确保它能说好话、说真话。</strong></p>

<p>把同一组数据拆开用，既节省了数据采集成本，又在逻辑上形成了一套从“学习”到“反思”的完整闭环。</p>]]></content><author><name>Weiqing Liu</name><email>mailto:liuweiqing147@gmail.com</email></author><category term="tech" /><category term="SFT" /><category term="DPO" /><summary type="html"><![CDATA[在微调大模型时，我们常手里攥着一堆数据：同一个问题，一个回答逻辑严密（Chosen），另一个回答虽然能看但略显平庸甚至有误（Rejected）。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sixiangjia.de/assets/images/morandi.jpg" /><media:content medium="image" url="https://sixiangjia.de/assets/images/morandi.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="zh"><title type="html">明知有坑，为何不绕？——聊聊那些被“懒惰”喂养的不幸</title><link href="https://sixiangjia.de/lifestyle/lazythink/" rel="alternate" type="text/html" title="明知有坑，为何不绕？——聊聊那些被“懒惰”喂养的不幸" /><published>2026-03-13T00:00:00+08:00</published><updated>2026-03-13T00:00:00+08:00</updated><id>https://sixiangjia.de/lifestyle/lazythink</id><content type="html" xml:base="https://sixiangjia.de/lifestyle/lazythink/"><![CDATA[<p>生活中最让人扼腕叹息的，往往不是突如其来的天灾，而是那些<strong>明明可以避开，却最终还是发生了的不幸</strong>。</p>

<p>你可能也经历过这种时刻：车子发出了异响，你觉得去修车太麻烦，结果坏在了高速公路上；身体发出了微弱的预警，你懒得挂号排队，结果小病拖成了大患。这种现象背后，除了表面的“懒”，其实隐藏着更复杂的人性博弈。</p>

<h3 id="一-认知视角的节能模式">一、 认知视角的“节能模式”</h3>

<p>很多时候，我们的“懒”其实是大脑在进行一种<strong>低效的博弈</strong>：</p>

<ul>
  <li><strong>路径依赖与阻力最小原则：</strong> 改变现状（去避开不幸）意味着要付出体力或脑力，这叫“启动成本”。而维持现状是自动驾驶模式。在这一刻，“省事”的诱惑力往往大过了对“远期风险”的恐惧。</li>
  <li><strong>即时满足与延迟痛苦：</strong> 避开不幸的代价是<strong>现在的</strong>辛苦，而收益却是<strong>看不见</strong>的安稳；反之，不作为的收益是<strong>现在的</strong>舒服，代价则是<strong>未来的</strong>崩溃。</li>
</ul>

<h3 id="二-先厘清一件事这不是拖延">二、 先厘清一件事：这不是”拖延”</h3>

<p>很多人会把本文讨论的现象归结为”拖延症”，但两者有本质区别：</p>

<ul>
  <li><strong>拖延是”我知道该做，晚点再做”</strong>——事情仍在你的计划清单上，你只是推迟了执行时间。拖延者心里有一根弦，截止日期逼近时往往还能爆发。</li>
  <li><strong>懒惰式回避是”我知道该做，但我选择不想它”</strong>——它根本不在你的日程里。你不是推迟了行动，而是<strong>取消了行动本身</strong>。没有截止日期，没有提醒，直到不幸降临的那一刻，你才”想起来”。</li>
</ul>

<p>拖延或许还算一种（低效的）主动安排；而我们这里讨论的，是一种<strong>彻底的思维放弃</strong>——连”安排”这个动作都懒得做。这才是更危险的地方：拖延至少还有补救窗口，而懒惰式回避往往在你意识到之前，窗口就已经关上了。</p>

<h3 id="三-进阶困境明知代价为何依然瘫痪">三、 进阶困境：明知代价，为何依然”瘫痪”？</h3>

<p>最令人痛苦的并不是”无知”，而是 <strong>”清醒地沉沦”</strong> ——你完全清楚如果不去处理，代价将是沉重的，但你依然动弹不得。这已经超越了简单的懒惰，进入了心理学的深水区：</p>

<ul>
  <li><strong>心理带宽耗尽（Psychological Burnout）：</strong> 当一个人在生活、工作中已经被榨干了所有的精力，他就像一辆油箱见底的赛车。虽然知道前面有悬崖，但此时此刻“踩刹车”所需的力气，已经超过了他的极限。</li>
  <li><strong>习得性无助：</strong> 如果一个人长期处于高压或挫折中，会产生一种错觉：“无论我做什么，结局都是一样的。”于是，他选择放弃抵抗，任由不幸降临。</li>
  <li><strong>极端的“跨期贴现”：</strong> 这种心理会无限放大眼下的“不动弹”带来的安逸，而将未来的巨大代价看作是“另一个人的事”。这是一种近乎自杀式的心理防御。</li>
</ul>

<h3 id="四-被忽视的平庸之恶">四、 被忽视的”平庸之恶”</h3>

<p>我们总以为“不幸”是因为犯了什么大错，但实际上，很多巨大的不幸只是无数次“懒得动弹”累积的结果。</p>

<blockquote>
  <p><strong>“麻烦”往往是避开不幸的唯一门票。</strong></p>
</blockquote>

<p>如果你嫌排队检查麻烦、嫌沟通隐患麻烦、嫌复盘错误麻烦，那么你实际上是在用一种“分期付款”的方式，透支未来的运气。当你明明知道代价却依然选择不动时，你其实是在进行一场注定会输的豪赌。</p>

<h3 id="五-当懒得想遇上跟风潮2026年的生存式从众">五、 当”懒得想”遇上”跟风潮”——2026年的生存式从众</h3>

<p>当人们懒得独立思考时，最省力的决策方式就是<strong>跟风</strong>。而在当下这个充满不确定性的时代，跟风的方向也发生了深刻的变化：</p>

<h4 id="1-创业界的最后避风港轻餐饮与小微副业">1. 创业界的”最后避风港”：轻餐饮与小微副业</h4>

<p>当传统的就业机会减少时，大家会跟风涌向那些”看起来没门槛”的赛道。从9.9元的咖啡到各种加盟的小吃档口，大家不再想”做大做强”，而是想”有个营生”。这种<strong>”生存式跟风”</strong>带来的后果就是——换手率极高，满大街都是三个月就倒闭的新店。</p>

<h4 id="2-资产界的数字与实物双保命黄金与ai算力">2. 资产界的”数字与实物双保命”：黄金与AI算力</h4>

<p>以前大家信房产，现在大家信黄金。黄金价格屡创新高，大家买金豆、金条的热情比以前买房还高，这是一种 <strong>”防御型跟风”</strong> 。而在投资领域，大家在疯狂跟风AI——不管是买AI芯片公司的股票，还是炒作各种”数字资产”和”人形机器人”概念。大家害怕错过这个可能改变未来的唯一班车，这种FOMO（恐惧错过）心理和当年抢房很像。</p>

<h4 id="3-消费界的情绪出口悦己与体验式消费">3. 消费界的”情绪出口”：悦己与体验式消费</h4>

<p>以前大家跟风买名牌包显示身份，现在大家跟风买 <strong>”情绪价值”</strong> 。跟风去某个”网红县城”旅游、跟风做各种解压手工、跟风买具有强烈社交属性的潮玩。既然买不起大宗资产，大家转而追求即时的快感。这种跟风是一种 <strong>”补偿性消费”</strong> ——既然未来不确定，那我现在就要开心。</p>

<h4 id="4-职场界的全员ai化工具焦虑">4. 职场界的”全员AI化”：工具焦虑</h4>

<p>现在不管是哪个行当，大家都在跟风学AI工具。哪怕是做设计的、写文案的，甚至餐饮老板，都在跟风研究如何用AI写菜单、做图、搞营销。这种跟风背后是深刻的 <strong>”替代焦虑”</strong> ——大家并不是真的觉得AI好用，而是觉得”别人都在用，我不用就会被淘汰”。</p>

<h4 id="5-银发经济的提前入场">5. 银发经济的”提前入场”</h4>

<p>随着老龄化社会趋势越来越明确，很多年轻人和创业者开始跟风研究”养老生意”。开养老院的、做适老化改造的、搞老年大学的——大家觉得这是未来唯一确定的”红海”。</p>

<blockquote>
  <p><strong>跟风的本质，依然是懒惰的变体。</strong> 因为独立思考太累、独立判断太难，所以选择”别人做什么我做什么”。但正如前文所说，省掉的那些”小麻烦”，终究会以更大的代价找上门来。</p>
</blockquote>

<p>说实话，我觉得大多数跟风的人<strong>心里是清楚有坑的</strong>。他们并非不知道9.9的咖啡店大概率撑不过三个月，也并非不知道追高买黄金可能站岗——但他们依然选择跳进去。这恰恰印证了本文的核心：<strong>最可怕的不是看不见坑，而是看见了坑，却懒得绕路。</strong> 因为绕路意味着要独立思考、独立承担、独立面对”我到底该怎么办”这个最难的问题。相比之下，跟着人群一起跳，至少还有一种”大家都这样，错了也不是我一个人”的心理安慰。</p>

<h3 id="六-如何打破这种明知故犯">六、 如何打破这种”明知故犯”？</h3>

<p>如果已经到了“知道代价也懒得动”的地步，靠意志力喊口号已经没用了。你需要的是<strong>外科手术式的干预</strong>：</p>

<ol>
  <li><strong>具象化恐惧：</strong> 盯着那个可能发生的代价，把细节想清楚。不要想“会出事”，要想象“我会损失多少钱、会多痛苦”。让未来的痛苦在这一刻变得无比真实，通过<strong>即时恐惧</strong>来对抗<strong>即时懒惰</strong>。</li>
  <li><strong>降低启动门槛：</strong> 别想“我要彻底解决这个隐患”，只想“我先花5分钟打个咨询电话”。只要产生物理位移，大脑的惯性就会发生偏转。</li>
  <li><strong>建立自动化系统：</strong> 既然知道自己会懒、会精疲力竭，就不要在危险面前临时做决定。利用闹钟、自动化程序或者他人的监督，把“决策权”交出去。</li>
</ol>

<h3 id="结语">结语</h3>

<p>我们避开的不是不幸，而是那些通往平安的“小麻烦”。</p>

<p>很多时候，只要我们稍微抬起头，往旁边迈出那一两步，整个人生轨迹就会完全不同。别让未来的你，在不幸降临时只能说出一句：“要是当时我不那么懒就好了。”</p>

<p><strong>与其在不幸发生后去修补生活，不如在不幸敲门前，先把自己从名为“安逸”的泥潭里拽出来。</strong></p>]]></content><author><name>Weiqing Liu</name><email>mailto:liuweiqing147@gmail.com</email></author><category term="lifestyle" /><category term="lazythink" /><category term="procrastination" /><category term="decision making" /><summary type="html"><![CDATA[生活中最让人扼腕叹息的，往往不是突如其来的天灾，而是那些明明可以避开，却最终还是发生了的不幸。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sixiangjia.de/assets/images/morandi.jpg" /><media:content medium="image" url="https://sixiangjia.de/assets/images/morandi.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="zh"><title type="html">LLM 微调避坑指南：从训练动态到显存账本的深度解剖</title><link href="https://sixiangjia.de/tech/qwen3-finetune/" rel="alternate" type="text/html" title="LLM 微调避坑指南：从训练动态到显存账本的深度解剖" /><published>2026-03-07T00:00:00+08:00</published><updated>2026-03-07T00:00:00+08:00</updated><id>https://sixiangjia.de/tech/qwen3-finetune</id><content type="html" xml:base="https://sixiangjia.de/tech/qwen3-finetune/"><![CDATA[<p>在单卡（如 Tesla P100 16GB）上对大语言模型进行微调时，往往会遇到 Loss 不降、无限复读或显存溢出（OOM）等诡异问题。这篇博客将从底层逻辑出发，拆解 LLM 微调中的核心概念与显存消耗真相。</p>

<h2 id="1-训练时间线epochstep-与有效-batch-size">1. 训练时间线：Epoch、Step 与有效 Batch Size</h2>

<p>在微调极小规模数据集时，最容易踩的坑就是“步数错位”。</p>

<ul>
  <li><strong>Batch Size（批大小）</strong>：单次送入显卡的样本数。</li>
  <li><strong>Step（步）</strong>：模型真正执行一次权重更新（Optimizer Step）的动作。</li>
  <li><strong>Epoch（轮）</strong>：模型将整个训练集完整过一遍。</li>
</ul>

<p><strong>核心陷阱：梯度累积（Gradient Accumulation）</strong>
<code class="language-plaintext highlighter-rouge">gradient_accumulation_steps</code> 是一种用“时间换空间”的机制，通过多次前向/反向传播累积梯度，最后集中更新一次权重，以此模拟大 Batch Size。</p>

<ul>
  <li><strong>公式</strong>：$\text{有效 Batch Size} = \text{单卡 Batch} \times \text{显卡数} \times \text{累积步数}$</li>
  <li><strong>副作用</strong>：如果有效 Batch Size 大于或等于总数据量，会导致 1 个 Step 需要跨越多个 Epoch 才能完成。这会引发训练日志缺失（No log）和严重的过拟合。面对极小数据集，应果断将累积步数设为 1，确保 $1 \text{ Epoch} \ge 1 \text{ Step}$。</li>
</ul>

<h2 id="2-深入模型内脏架构与参数量估算">2. 深入模型内脏：架构与参数量估算</h2>

<p>模型的参数量 $P$ 并非玄学，它与模型的层数（$L$）和隐藏层维度（$H$）高度绑定。</p>

<h3 id="参数量估算公式">参数量估算公式</h3>

<p>对于标准 Transformer 架构：</p>

\[P \approx L \times 12 \times H^2\]

<p>其中，Attention 层贡献约 $4H^2$，MLP 层贡献约 $8H^2$。以 Qwen-3 为例，由于采用了 SwiGLU 激活函数（三路线性层），其 MLP 更加庞大，整体系数更接近 15。</p>

<h3 id="核心组件解析">核心组件解析</h3>

<ul>
  <li><strong>MLP（多层感知机）</strong>：模型的“静态知识库”。它通常先将维度升至 $3H$ 或 $4H$（高维空间更容易拟合复杂非线性规律），再降维回 $H$。</li>
  <li><strong>RMSNorm（均方根层标准化）</strong>：相比传统 LayerNorm，RMSNorm 砍掉了“减均值”的操作，直接除以均方根。它在保持训练稳定性的同时，降低了计算开销，是现代大模型的标配。</li>
</ul>

<h2 id="3-显存刺客你的-vram-都去哪了">3. 显存刺客：你的 VRAM 都去哪了？</h2>

<p>加载一个 0.6B（6 亿参数）的模型，在 BF16（16-bit）精度下只需约 1.2GB 显存（$P \times 2 \text{ Bytes}$）。但在训练时，显存占用会飙升到 10GB 以上，原因在于训练不仅需要存放权重：</p>

<table>
  <thead>
    <tr>
      <th>显存消耗项</th>
      <th>计算公式（经验值）</th>
      <th>描述说明</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>模型权重</strong></td>
      <td>$P \times 2$ (BF16)</td>
      <td>模型的静态参数。</td>
    </tr>
    <tr>
      <td><strong>梯度 (Gradients)</strong></td>
      <td>$P \times 2$ (BF16)</td>
      <td>反向传播时的导数。</td>
    </tr>
    <tr>
      <td><strong>优化器状态 (AdamW)</strong></td>
      <td><strong>$P \times 8$ (FP32)</strong></td>
      <td><strong>最大头</strong>。用于存储一阶（动量）和二阶（方差）状态。必须使用 32 位以防精度丢失。</td>
    </tr>
    <tr>
      <td><strong>激活值 (Activations)</strong></td>
      <td>动态变化</td>
      <td>前向传播的中间结果，占用与 Batch Size 和序列长度成正比。</td>
    </tr>
  </tbody>
</table>

<h2 id="4-精度博弈qlora-与-4-bit-量化的妥协">4. 精度博弈：QLoRA 与 4-bit 量化的妥协</h2>

<p>为了在消费级显卡上训练大模型，<code class="language-plaintext highlighter-rouge">BitsAndBytes</code> 提供了 4-bit 量化（如 NF4）方案。</p>

<ul>
  <li><strong>优势</strong>：显存占用砍掉约 75%。</li>
  <li><strong>代价</strong>：量化会带来舍入误差，损失模型在复杂逻辑推导和精细物理运算上的准确度；同时，推理时频繁的“反量化”操作会导致计算速度略降。</li>
  <li><strong>工程决策</strong>：如果显卡容量充足（如 16GB 显卡跑 0.6B 模型），应坚决弃用 4-bit 量化，直接采用全精度（BF16）加载，以换取最高的逻辑上限。</li>
</ul>

<h2 id="5-对抗复读机数据格式与推理干预">5. 对抗“复读机”：数据格式与推理干预</h2>

<p>当模型在生成时陷入无限循环或死记硬背时，通常是以下原因：</p>

<ol>
  <li><strong>ChatML 格式缺失</strong>：缺少 <code class="language-plaintext highlighter-rouge">&lt;|im_start|&gt;</code> 和 <code class="language-plaintext highlighter-rouge">&lt;|im_end|&gt;</code> 这类角色定位 Token，导致模型失去对话的边界感，分不清何时该停止生成。</li>
  <li><strong>严重过拟合</strong>：数据量极小却跑了过多的 Epoch，或 LoRA 设定的 <code class="language-plaintext highlighter-rouge">lora_alpha</code> 学习率过大。</li>
  <li><strong>推理参数固化</strong>：在生成时，可以通过调高 <code class="language-plaintext highlighter-rouge">repetition_penalty</code>（重复惩罚系数，如 1.1 - 1.2）和增加 <code class="language-plaintext highlighter-rouge">temperature</code> 来强行打破复读循环。</li>
</ol>]]></content><author><name>Weiqing Liu</name><email>mailto:liuweiqing147@gmail.com</email></author><category term="tech" /><category term="LLM" /><category term="fine-tuning" /><summary type="html"><![CDATA[在单卡（如 Tesla P100 16GB）上对大语言模型进行微调时，往往会遇到 Loss 不降、无限复读或显存溢出（OOM）等诡异问题。这篇博客将从底层逻辑出发，拆解 LLM 微调中的核心概念与显存消耗真相。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sixiangjia.de/assets/images/morandi.jpg" /><media:content medium="image" url="https://sixiangjia.de/assets/images/morandi.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="zh"><title type="html">告别“调包侠”：一文彻底搞懂交叉熵与KL散度的数学羁绊</title><link href="https://sixiangjia.de/tech/divergence/" rel="alternate" type="text/html" title="告别“调包侠”：一文彻底搞懂交叉熵与KL散度的数学羁绊" /><published>2026-03-02T00:00:00+08:00</published><updated>2026-03-02T00:00:00+08:00</updated><id>https://sixiangjia.de/tech/divergence</id><content type="html" xml:base="https://sixiangjia.de/tech/divergence/"><![CDATA[<p>在深度学习的日常搬砖中，写出 <code class="language-plaintext highlighter-rouge">criterion = nn.CrossEntropyLoss()</code> 简直就像喝水一样自然。无论是做图像分类、验证码识别，还是训练大语言模型，交叉熵似乎永远是分类任务的标配。</p>

<p>但是，如果在面试中被问到：<strong>“既然 KL 散度才是衡量两个概率分布差异的指标，为什么我们在分类任务中优化的是交叉熵，而不是 KL 散度？”</strong></p>

<p>很多写了几年代码的算法工程师，可能都会在这里卡壳。今天，我们就把这两个概念掰开揉碎，从直觉到公式，把它们的底层逻辑扒得干干净净。</p>

<hr />

<h3 id="一-直觉先行打车理论">一、 直觉先行：打车理论</h3>

<p>不要一上来就看公式，我们先用一个生活中的例子来建立直觉。</p>

<p>假设你要从公司（<strong>预测分布 $Q$</strong>）回到家里（<strong>真实分布 $P$</strong>），你需要付出一笔代价（Loss）。</p>

<ol>
  <li><strong>真实分布的熵 $H(P)$</strong>：相当于两地之间的 <strong>物理直线距离</strong> 。这是客观存在的固有属性，无论你选什么路线，这段基础距离你都得走。</li>
  <li>
    <table>
      <tbody>
        <tr>
          <td>**KL 散度 $D_{KL}(P</td>
          <td> </td>
          <td>Q)$<strong>：相当于司机因为不认路而 **多绕的冤枉路</strong> 。如果司机完全认路（$Q$ 完美拟合 $P$），冤枉路就是 0；如果司机瞎开，冤枉路就无限长。它是纯粹用来衡量“你有多偏离最优解”的指标。</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li><strong>交叉熵 $H(P, Q)$</strong>：相当于你最后付的<strong>总计车费</strong>。</li>
</ol>

<p>由此，我们可以得出一个极其优美且核心的等式：
<strong>总车费 = 物理距离 + 绕路距离</strong>
<strong>交叉熵 = 真实分布的熵 + KL 散度</strong></p>

<p>在数学上，它长这样：</p>

\[H(P, Q) = H(P) + D_{KL}(P||Q)\]

<hr />

<h3 id="二-灵魂拷问为什么代码里只用交叉熵">二、 灵魂拷问：为什么代码里只用交叉熵？</h3>

<p>既然 KL 散度（绕路距离）才是真正衡量“模型预测与真实答案差距”的指标，为什么 PyTorch 的标准 API 是 <code class="language-plaintext highlighter-rouge">CrossEntropyLoss</code> 呢？</p>

<p>答案就藏在分类任务的 <strong>数据标签（Label）</strong> 里。</p>

<p>在标准的图像分类（比如猫狗识别，或者字母验证码识别）中，图片的真实标签是确定无疑的。它转换成概率分布就是独热编码（One-Hot），例如 <code class="language-plaintext highlighter-rouge">[1.0, 0.0, 0.0]</code>。</p>

<p>对于这种<strong>绝对确定的事件，它的不确定性为零，所以真实分布的熵 $H(P) = 0$</strong>。</p>

<p>既然 $H(P)$ 等于 0，那么我们的核心公式就变成了：</p>

\[H(P, Q) = 0 + D_{KL}(P||Q)\]

\[H(P, Q) = D_{KL}(P||Q)\]

<p><strong>结论呼之欲出：在标准分类任务中，优化交叉熵，在数学上完全等价于优化 KL 散度！</strong></p>

<p>那为什么底层代码偏偏选中了交叉熵？纯粹是因为<strong>计算极其高效</strong>。交叉熵的公式是 $-\sum P(x) \log Q(x)$。因为真实标签 $P(x)$ 里只有一个 1，剩下全是 0，大量的乘法直接被抹掉了，这能为 GPU 节省海量的算力。</p>

<hr />

<h3 id="三-咬文嚼字为什么叫散度而不叫距离">三、 咬文嚼字：为什么叫“散度”而不叫“距离”？</h3>

<p>KL 散度（Kullback-Leibler Divergence）由两位密码学家提出。但为什么数学家给它起名叫 Divergence（发散度/偏离度），而不是像欧式距离那样叫 Distance 呢？</p>

<p>因为在数学定义中，“距离”必须满足<strong>对称性</strong>（从 A 到 B 的距离等于从 B 到 A 的距离）。</p>

<p><strong>但 KL 散度是严重不对称的！</strong></p>

\[D_{KL}(P||Q) \neq D_{KL}(Q||P)\]

<p>用模型训练来解释这种不对称极其直观：</p>

<ul>
  <li><strong>用 $Q$ 近似 $P$（我们通常的做法）</strong>：真实世界要求必须是字符 <code class="language-plaintext highlighter-rouge">a</code>（100%），你的模型给了 <code class="language-plaintext highlighter-rouge">a</code> 50% 的概率。虽然不够完美，但好歹留了余地，模型受到的惩罚（Loss）是<strong>有限的</strong>。</li>
  <li><strong>用 $P$ 近似 $Q$（强行反过来）</strong>：真实世界是 50% 的概率随机抛硬币，但你的模型咬死 100% 绝对是正面，给反面的概率是 0。当真实世界真的开出反面时，你的模型预测概率是 0。在数学里，$-\log(0)$ 是<strong>无限大 (Infinity)</strong>！模型会受到毁灭性的无限大惩罚。</li>
</ul>

<p>正因为从 $P$ 看 $Q$ 和从 $Q$ 看 $P$ 产生的“惩罚力度”完全不对等，所以它没有资格被称为“距离”，只能被称为有方向的“散度”。</p>

<hr />

<h3 id="结语">结语</h3>

<p>下一次，当你敲下 <code class="language-plaintext highlighter-rouge">nn.CrossEntropyLoss()</code> 时，你可以自信地知道，你并不是在调用一个毫无感情的黑盒。你是在通过最小化交叉熵这个“总车费”，巧妙地逼近 KL 散度，从而让你的模型一步步收敛到真实世界的概率分布中去。</p>]]></content><author><name>Weiqing Liu</name><email>mailto:liuweiqing147@gmail.com</email></author><category term="tech" /><category term="machine learning" /><category term="cross entropy" /><category term="kl divergence" /><summary type="html"><![CDATA[在深度学习的日常搬砖中，写出 criterion = nn.CrossEntropyLoss() 简直就像喝水一样自然。无论是做图像分类、验证码识别，还是训练大语言模型，交叉熵似乎永远是分类任务的标配。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sixiangjia.de/assets/images/morandi.jpg" /><media:content medium="image" url="https://sixiangjia.de/assets/images/morandi.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="zh"><title type="html">房价暴跌，房租凭什么死撑？一场剥离金融幻觉的底层估值修复</title><link href="https://sixiangjia.de/finance/rental/" rel="alternate" type="text/html" title="房价暴跌，房租凭什么死撑？一场剥离金融幻觉的底层估值修复" /><published>2026-03-02T00:00:00+08:00</published><updated>2026-03-02T00:00:00+08:00</updated><id>https://sixiangjia.de/finance/rental</id><content type="html" xml:base="https://sixiangjia.de/finance/rental/"><![CDATA[<p>近期房地产市场有一个极其违背直觉的现象：很多城市的二手房价格已经跌去了 20% 甚至 30%，但打工人们发现，自己每个月交的房租依然坚挺，甚至在部分核心地段还有微涨。</p>

<p>很多人觉得这不符合经济学常识——皮之不存，毛将焉附？房价都崩了，房租凭什么不跌？</p>

<p>实际上，这不仅符合常识，而且是金融市场中最经典的 <strong>“均值回归”与“资产底层逻辑剥离”</strong>。房价和房租虽然挂钩在同一套钢筋水泥上，但它们在市场中的定价锚点，早就分道扬镳了。</p>

<h3 id="一-房价买的是看涨期权房租买的是物理效用">一、 房价买的是“看涨期权”，房租买的是“物理效用”</h3>

<p>要理解这个背离，首先要拆解过去高房价的构成。</p>

<ul>
  <li><strong>金融泡沫的挤出</strong>：过去一套 500 万的房子里，真正属于“居住”属性的价值可能只有 150 万，剩下的 350 万全是对资产未来每年单边上涨的<strong>投机溢价（看涨期权）</strong>。现在房价暴跌，跌掉的纯粹是那部分破灭的金融泡沫。</li>
  <li><strong>物理使用权的坚挺</strong>：租客付房租，买的仅仅是这一个月有个地方遮风挡雨的物理效用。房租从来没有享受过那 350 万的泡沫溢价，自然也就没有跟着暴跌的空间。</li>
</ul>

<h3 id="二-购房需求的蓄水池倒灌">二、 购房需求的“蓄水池”倒灌</h3>

<p>房价下跌的预期，反而从供需两端对租赁市场形成了强力支撑。</p>

<ul>
  <li><strong>买转租的挤压</strong>：当所有人发现房子成了“消耗品”而不是“理财产品”时，原本凑够首付准备上车的年轻人纷纷按下了暂停键。但肉身总要有地方安放，这部分庞大的“购房需求”被瞬间积压，全盘转化成了“租房需求”。</li>
  <li><strong>有效供给并未爆发</strong>：虽然二手房挂牌量激增，但许多房东宁可空置，也不愿投入高昂的装修成本将其转入租赁市场。需求端涌入大量观望者，供给端却增长缓慢，房租自然下不来。</li>
</ul>

<h3 id="三-租售比的残酷均值回归">三、 租售比的残酷“均值回归”</h3>

<p>如果用量化投资里的估值指标来看，这其实是一次极其标准的修复过程。</p>

<ul>
  <li><strong>曾经的畸形估值</strong>：过去国内一线城市的租售比（年租金/房屋总价）普遍在 1.5% 左右，换算成股市的指标，相当于市盈率（PE）高达近 70 倍。这种极度扭曲的估值，全靠“资本利得预期”在死撑。</li>
  <li><strong>分母变小，强制修复</strong>：当潮水退去，房地产重新回归“收息资产”的本质。在没有任何资本利得预期的通缩环境下，它必须提供足以对抗无风险利率的租金回报。在分子（房租）不变甚至微调的情况下，分母（房价）大幅下跌 30%，租售比自然就从 1.5% 强行修复到了 2.1% 甚至更高。</li>
</ul>

<h3 id="四-房租的真正锚点中位数劳动工资">四、 房租的真正锚点：中位数劳动工资</h3>

<p>房价的锚点是信贷总量和杠杆率，而房租的锚点极其死板——它死死锚定着当地年轻人的<strong>中位数劳动工资</strong>。</p>

<p>只要核心科技大厂、先进制造业和现代服务业依然聚集在一二线城市，只要这批高净值劳动力的人数和薪资基本盘没有出现腰斩级别的崩盘，大家每个月能咬牙拿出来付房租的预算基数就是相对固定的。</p>

<h3 id="结语">结语</h3>

<p>房价暴跌是“金融杠杆去泡沫”，而房租坚挺是“实体经济和劳动工资的硬支撑”。看懂了这个背离，也就看懂了中国房地产正在经历的世纪大转身：它正在从少数人加杠杆暴富的“金融炒作工具”，彻底回归为占用现金流的“普通消费品”。</p>]]></content><author><name>Weiqing Liu</name><email>mailto:liuweiqing147@gmail.com</email></author><category term="finance" /><category term="real estate" /><category term="rental" /><summary type="html"><![CDATA[近期房地产市场有一个极其违背直觉的现象：很多城市的二手房价格已经跌去了 20% 甚至 30%，但打工人们发现，自己每个月交的房租依然坚挺，甚至在部分核心地段还有微涨。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sixiangjia.de/assets/images/morandi.jpg" /><media:content medium="image" url="https://sixiangjia.de/assets/images/morandi.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="zh"><title type="html">沉默的伤痕：为什么我们不能遗忘“慰安妇”的历史？</title><link href="https://sixiangjia.de/history/japanslavery/" rel="alternate" type="text/html" title="沉默的伤痕：为什么我们不能遗忘“慰安妇”的历史？" /><published>2026-02-24T00:00:00+08:00</published><updated>2026-02-24T00:00:00+08:00</updated><id>https://sixiangjia.de/history/japanslavery</id><content type="html" xml:base="https://sixiangjia.de/history/japanslavery/"><![CDATA[<p>在探讨近现代东亚历史与地缘政治时，有一个词汇始终重如千钧，那就是“慰安妇”。</p>

<p>这不仅仅是一段惨痛的二战记忆，更是国际法演进、地缘政治博弈以及人类良知之间至今未能彻底和解的缩影。随着战争亲历者的逐渐凋零，这段历史正面临着被时间掩埋的风险。今天，让我们拨开历史的迷雾，重新审视这场尚未结束的跨国维权。</p>

<h3 id="1-制度化的战争机器与人权灾难">1. 制度化的战争机器与人权灾难</h3>

<p>与历史上的许多战争暴行不同，“慰安妇”制度的可怕之处在于其<strong>高度的系统性与国家主导性</strong>。它不是个别士兵的泄欲或军纪涣散的偶然产物，而是由当时的日本军部和政府自上而下精心策划、建立和管理的“军事性奴役”网络。</p>

<p>从中国大陆、台湾地区，到朝鲜半岛，再到东南亚，数以十万计的女性被欺骗、绑架或强征，塞进这台残酷的战争机器中。她们被剥夺了作为人的一切尊严，成为了消耗品。在现代国际法的定义下，这是极其严重的反人类罪和战争罪。</p>

<h3 id="2-东京审判的盲区与被掩盖的真相">2. 东京审判的盲区与被掩盖的真相</h3>

<p>1945年二战结束，正义似乎得到了伸张，但在东京审判的法庭上，针对“慰安妇”的系统性犯罪却诡异地缺席了。</p>

<p>这背后是冷战阴云下的政治妥协。为了迅速稳固亚太局势、扶植日本成为对抗苏联的桥头堡，美国主导的远东国际军事法庭在很大程度上对这一罪行选择了无视。再加上当时国际法对“性别暴力”的认知局限，以及东亚传统社会对受害女性的道德污名化，导致成千上万的幸存者在战后只能咽下血泪，隐姓埋名。</p>

<p><strong>正义不仅迟到了，而且在很长一段时间内，它甚至没有出发。</strong></p>

<h3 id="3-打破半个世纪的沉默">3. 打破半个世纪的沉默</h3>

<p>转机出现在20世纪90年代。随着冷战结束和全球人权意识的觉醒，受害者们展现出了惊人的勇气。</p>

<p>1991年，韩国的金学顺奶奶成为首位公开揭露日军暴行的幸存者；随后，来自中国山西、海南等地的多位受害者也勇敢地站了出来，将日本政府告上法庭。她们拖着年迈的身躯，跨越国界，在闪光灯和法庭的质询面前，一遍遍撕开旧伤疤。</p>

<p>她们的诉求出奇地一致且克制：<strong>不要施舍性质的“民间慰问金”，只要求日本政府在法律层面承认国家责任，进行正式道歉与国家赔偿。</strong></p>

<h3 id="4-未竟的博弈与我们的责任">4. 未竟的博弈与我们的责任</h3>

<p>时至今日，这场维权之战依然步履维艰。</p>

<p>日本政府虽然曾通过《河野谈话》等形式做出过宽泛的政治表态，甚至在2015年与韩国达成了带有政治交易性质的“10亿日元治愈金”协议，但在<strong>核心的“国家法律赔偿”</strong>底线上，日本始终没有退让。右翼势力甚至不断试图修改教科书、否认强制性，试图从根本上抹杀这段记忆。</p>

<p><strong>为什么今天我们还要写下这些？</strong></p>

<p>因为历史的连贯性决定了未来的走向。关注“慰安妇”问题，不仅是对逝去生灵的告慰，更是对现代国际秩序底线的捍卫。如果国家主导的系统性反人类罪行能够通过时间的流逝和政治的粉饰而被原谅，那么人类社会将永远无法真正告别战争的野蛮。</p>

<p>那些在风烛残年依然坚持抗争的老人们，要的不仅仅是一个说法，而是人类文明在面对至暗时刻时，必须给出的一份及格答卷。</p>]]></content><author><name>Weiqing Liu</name><email>mailto:liuweiqing147@gmail.com</email></author><category term="history" /><category term="slavery" /><category term="japan" /><summary type="html"><![CDATA[在探讨近现代东亚历史与地缘政治时，有一个词汇始终重如千钧，那就是“慰安妇”。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sixiangjia.de/assets/images/morandi.jpg" /><media:content medium="image" url="https://sixiangjia.de/assets/images/morandi.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="zh"><title type="html">纪念碑到底在纪念谁？——关于“记住”、牺牲与影响现代人的一段不合时宜的想法</title><link href="https://sixiangjia.de/lifestyle/whatisdeath/" rel="alternate" type="text/html" title="纪念碑到底在纪念谁？——关于“记住”、牺牲与影响现代人的一段不合时宜的想法" /><published>2026-02-23T00:00:00+08:00</published><updated>2026-02-23T00:00:00+08:00</updated><id>https://sixiangjia.de/lifestyle/whatisdeath</id><content type="html" xml:base="https://sixiangjia.de/lifestyle/whatisdeath/"><![CDATA[<p>大年初四去了浦东滨江，远远看到了一座高耸的纪念碑，突然感到奇怪，在这里怎么会有一座突兀的建筑，进一步思考下，我产生了一些想法。（之前在浦西近距离看到的时候没有想法）</p>

<p>它们矗立在城市最醒目的位置，庄严、沉默、巨大，像一根钉子，把某段历史牢牢钉在当下的视线里。很多人会说：这是为了纪念先烈，提醒我们不要忘记。可我越来越觉得，它的主要作用，可能并不是“给过去的人一个交代”，而是“给现在的人一个方向”。</p>

<p>也就是说：纪念碑更像是写给现代人的。</p>

<h2 id="1-当时的人并不是为了纪念碑去牺牲">1. 当时的人，并不是为了纪念碑去牺牲</h2>

<p>一个很朴素的问题是：当时那些牺牲的人，真的是“为了后世立碑”才去牺牲的吗？</p>

<p>大概率不是。</p>

<p>很多牺牲来自于当下的处境：为了活下去、为了家人、为了同伴、为了某种信念、为了不被侮辱、为了不被迫跪下。那是一种逼近生存底线时的选择，往往混杂着恐惧、愤怒、冲动、责任、爱与不得不。</p>

<p>他们在做决定的时候，脑子里未必有“未来的纪念碑”“将来的颂歌”“子孙后代的记忆”。他们可能只是在那个瞬间，选择了某条路。</p>

<p>因此，如果我们把“纪念碑”当成牺牲的意义来源，就有点本末倒置：不是因为有碑，所以有人牺牲；而是因为有人牺牲，后来的人想用碑来解释、组织、包装这件事。</p>

<p>问题就在这里：解释的权力，掌握在“后来的人”手里。</p>

<h2 id="2-纪念碑是一种影响现代人的装置">2. 纪念碑是一种“影响现代人”的装置</h2>

<p>当纪念碑被放置在公共空间，它就不只是建筑或艺术品，而是一种叙事装置。</p>

<p>它不断向你输出一种信息：
“有些牺牲是崇高的。”
“有些死亡是值得的。”
“你应该记得。”
“你也应该准备好。”</p>

<p>这不是阴谋论式的“全是洗脑”，但它确实具备一种教育、塑形、导向的功能——尤其当它被放进仪式、教材、纪念日、口号和集体情绪里时，它会把复杂的历史压缩成一种更好传播、更容易动员的版本。</p>

<p>它告诉你“正确的感受方式”：要肃穆、要感恩、要热血、要继承。</p>

<p>可现实是，历史从来不只有一种感受方式。有人悲伤、有人麻木、有人困惑、有人愤怒、有人只想回家吃饭。纪念碑把这些差异统统收拢成同一种表情，这就是我觉得别扭的地方。</p>

<h2 id="3-真正的牺牲应该来自自愿而不是被塑造出来的冲动">3. “真正的牺牲”应该来自自愿，而不是被塑造出来的冲动</h2>

<p>我更在意的是：当一种纪念的方式，不断强调“牺牲是光荣的”，它会不会在无形中鼓励人去“走向牺牲”？</p>

<p>理想状态下，牺牲应该是自愿的、迫不得已的、极其稀有的——甚至最好根本不要发生。我们尊重牺牲，是为了珍惜生命，是为了避免后来的人再经历同样的痛苦。</p>

<p>但如果纪念机制变成一种“赞美牺牲”的机器，那它就可能反过来把牺牲变成一种可被期待、可被要求、可被浪漫化的东西。</p>

<p>这让我害怕。</p>

<p>因为一旦牺牲被浪漫化，人就更容易被推到“你应该”的位置：
你应该勇敢、你应该奉献、你应该忍耐、你应该成全大局。</p>

<p>而一个更值得追求的社会，应该尽量让人不必走到“牺牲”这一步。纪念的重点不该是“让你也学会牺牲”，而应该是“让你明白牺牲多么昂贵，因此要尽量不再发生”。</p>

<h2 id="4-没人记住才算死了这句话本身也是一种压力">4. “没人记住才算死了”——这句话本身也是一种压力</h2>

<p>还有一句常见的话：
“人真正的死亡，是被遗忘。”</p>

<p>听起来很浪漫，但我越来越觉得，它也可能是一种隐性压力。</p>

<p>因为它把“被记住”当成一种奖赏，把“遗忘”当成一种惩罚。它会让人焦虑：我做的事够不够伟大？我死后有没有人记得？我是不是应该留下些什么？</p>

<p>可人活一生，真的必须被很多人记住吗？
一个普通人的爱、劳动、照顾家人、认真活着，本来就值得尊重。生命的价值并不取决于是否能进入“公共记忆”。</p>

<p>更残酷的是：公共记忆从来不是公平的。谁被记住、谁被写进碑文、谁被讲述，往往取决于叙事权力，而不是纯粹取决于“谁更值得”。</p>

<p>当“被记住”被拔高成最高价值，它就可能把人再次工具化：你活着要有用，你死了也要有用，你最好成为一个符号。</p>

<p>这就是我说的“洗脑”意味：它不是让你理解历史的复杂，而是让你接受一种单一的价值排序。</p>

<h2 id="5-我真正想要的纪念可能是另一种东西">5. 我真正想要的“纪念”，可能是另一种东西</h2>

<p>我不是反对纪念。</p>

<p>我反对的是：用纪念去动员、去塑造、去消解个体的复杂情感，甚至把牺牲当成一种可复制的模板。</p>

<p>我更希望纪念能做到的是：</p>

<ul>
  <li>让我们看见牺牲背后的痛苦与代价，而不是只看见荣耀</li>
  <li>让我们尊重个体，而不是只崇拜符号</li>
  <li>让我们珍惜生命、避免重演，而不是被训练成“随时准备献身”的人</li>
  <li>让“普通人”也能被温柔地看见：不必伟大也值得被尊重</li>
</ul>

<p>如果纪念碑能让人更清醒、更珍惜、更不轻易鼓掌给死亡——那它才让我觉得它站在那儿是有意义的。</p>

<p>否则，它更像一根巨大的指挥棒：告诉你应该怎么想、怎么感动、怎么成为“合格的现代人”。</p>

<p>而我想保留一点不合格的权利。</p>]]></content><author><name>Weiqing Liu</name><email>mailto:liuweiqing147@gmail.com</email></author><category term="lifestyle" /><category term="death" /><category term="memorial" /><summary type="html"><![CDATA[大年初四去了浦东滨江，远远看到了一座高耸的纪念碑，突然感到奇怪，在这里怎么会有一座突兀的建筑，进一步思考下，我产生了一些想法。（之前在浦西近距离看到的时候没有想法）]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sixiangjia.de/assets/images/morandi.jpg" /><media:content medium="image" url="https://sixiangjia.de/assets/images/morandi.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="zh"><title type="html">算法时代的”精神零食”：我们为何要拒绝离奇的社会新闻？</title><link href="https://sixiangjia.de/lifestyle/lastman/" rel="alternate" type="text/html" title="算法时代的”精神零食”：我们为何要拒绝离奇的社会新闻？" /><published>2026-02-20T00:00:00+08:00</published><updated>2026-02-20T00:00:00+08:00</updated><id>https://sixiangjia.de/lifestyle/lastman</id><content type="html" xml:base="https://sixiangjia.de/lifestyle/lastman/"><![CDATA[<p>打开手机，我们的信息流里总是充斥着各种离奇新闻：今天推送一条”某地老人上厕所意外去世”，明天又弹出”老人买105岁可领的保险，最终成功退款”的荒诞故事。在算法的推波助澜下，这类新闻轻易占据热搜，引发评论区的狂欢。</p>

<p>但当我们关掉屏幕，除了大脑中残留的一丝猎奇感或对荒谬现实的短暂唏嘘，我们真正获得了什么？答案往往是：<strong>什么都没有。</strong></p>

<p>从实用主义和信息论的角度来看，这类铺天盖地的信息，仅仅是毫无价值的<strong>噪音（Noise）</strong>，我们从中提取不出任何能够指导未来的<strong>信号（Signal）</strong>。</p>

<h2 id="一问题的本质从统计学噪音到情绪消费">一、问题的本质：从统计学噪音到情绪消费</h2>

<h3 id="极端个例与大数定律的障眼法">极端个例与”大数定律”的障眼法</h3>

<p>以”老人上厕所去世”为例。这类新闻最大的卖点在于”罕见”和”突发”。但在一个拥有庞大人口基数的社会中，基于<strong>大数定律</strong>，发生概率极低的极端偶发事件，每天也必然会发生。</p>

<p>将这种完全没有统计学显著性的极小概率事件，包装成惊悚的新闻推送到大众面前，本质上是在利用人类对”危险”和”死亡”的底层生物学敏感。它提供不了一套可以被复用的防范逻辑，也揭示不了结构性的社会问题。它在信息论上的”信息熵”极高，消除不了任何现实的不确定性，只是单纯在消耗我们的注意力。</p>

<h3 id="荒诞新闻背后的情绪消费">荒诞新闻背后的情绪消费</h3>

<p>再看”买105岁可领的保险，最终维权退款”的新闻。它更像是一个具有黑色幽默色彩的荒谬剧本。这类新闻之所以有市场，是因为它为大众提供了一种零门槛的”社交货币”。</p>

<p>人们在评论区嘲笑规则的荒唐，或者同情当事人的遭遇，本质上是通过消费他人的困境，来获取一种群体归属感和瞬间的情绪宣泄。</p>

<h2 id="二道德困境当人成为流量的工具">二、道德困境：当人成为流量的工具</h2>

<p>康德曾提出过一个核心的道德律令：”永远要把人类当作目的，而绝不仅仅是手段。”然而，在流量经济的驱动下，媒体和算法恰恰相反。</p>

<p>它们将个体的离奇遭遇、甚至是生命的逝去，纯粹当成了赚取流量、广告费和眼球的工具。这是对个体尊严的剥离，也是一种隐蔽的虚伪。我们在手指滑动间，不知不觉成为了这个体系的共谋者。</p>

<h2 id="三尼采的末人与注意力经济">三、尼采的”末人”与注意力经济</h2>

<h3 id="注意力的夏普比率">注意力的”夏普比率”</h3>

<p>如果我们将个人的注意力视为一种核心资产，那么我们在分配这些资产时，理应追求更高的回报。衡量一则信息的价值，我们不妨引入类似<strong>夏普比率</strong>（Sharpe Ratio）的概念：为了获取这点微薄的情绪价值，我们承担了多大的认知消耗和时间成本？</p>

<p>大多数离奇新闻的”夏普比率”极低——投入大量时间和注意力，收获的却只是转瞬即逝的多巴胺刺激。</p>

<h3 id="末人的逃避机制">“末人”的逃避机制</h3>

<p>面对复杂、枯燥的现实生活，深度思考是一件极其耗费算力的事情。沉浸在他人离奇的、与自己毫无交集的故事中，是一种绝佳的逃避机制。</p>

<p>正如尼采笔下的”末人”（Last Man）状态——大众往往倾向于追求最简单、最不需要付出努力的消遣。用这些碎片化、戏剧化的奇闻轶事来填补时间的空白，可以有效地掩盖内心的虚无，让人无需去直面生存的重负，也无需去追求更高的自我超越。</p>

<h2 id="四清醒者的选择构建信息护城河">四、清醒者的选择：构建信息护城河</h2>

<p>知道一个远方的人怎么遭遇意外，既不能帮你优化手头的代码，也不能帮你建立一套逻辑严密的交易策略。真正对人有帮助的，是把注意力收回，投入到那些具有复利效应的事情上。</p>

<p>看透这些信息的”无用性”，本身就是一种极好的信息过滤机制。我们无法叫醒一个在信息茧房里装睡的人，也很难劝说身边的人放弃这种多巴胺快餐。但我们可以选择对自己进行”课题分离”：</p>

<ol>
  <li><strong>主动屏蔽噪音</strong>：取消毫无营养的媒体关注，减少算法推荐的干预</li>
  <li><strong>寻找真正的信号</strong>：去理解底层技术的运作机制，研读经典重塑自己对世界的认知框架</li>
  <li><strong>夺回算力</strong>：拒绝将个人的核心算力，浪费在没有复利效应的互联网吃瓜之中</li>
</ol>

<h2 id="五平衡的视角拥抱末人的权利">五、平衡的视角：拥抱”末人”的权利</h2>

<p>然而，我们也需要承认一个现实：在这个充满压力和不确定性的世界里，选择沉浸在这些荒诞、离奇的社会新闻中，也是一种可以被接受的生活方式。</p>

<p>大众需要赛博按摩，需要情绪的宣泄口，也需要零门槛的社交谈资。如果有人选择在一天疲惫的工作后，用这些信息”垃圾食品”来麻痹大脑、换取片刻的轻松，这是他们不可剥夺的自由和权利。</p>

<p>世界本来就需要这种巨大的精神缓冲地带，不是每个人都必须时刻追求认知升维和系统构建。做个快乐的”末人”，无可厚非。</p>

<h2 id="六结语觉知与行动">六、结语：觉知与行动</h2>

<p>真正的分水岭在于 <strong>“觉知”</strong>。问题的核心不在于这些新闻存在与否，而在于你是否 <strong>清楚地知道自己在消费什么</strong>。</p>

<p>如果你在内心深处已经做出了选择——你决心要拒绝被低级多巴胺圈养，你更渴望把算力投入到具有复利效应的事务中，去构建属于自己的技术壁垒或思想护城河——那么，你需要的不是去和沉浸其中的人辩论，而是为自己装配一套极其敏锐的 <strong>“信息雷达”</strong>。</p>

<p>训练自己能在标题弹出的零点一秒内，立刻识别出它的底层代码：</p>

<ul>
  <li><strong>它是客观的信号，还是情绪的诱饵？</strong></li>
  <li><strong>它是能优化决策的模型，还是纯粹的统计学噪音？</strong></li>
  <li><strong>它是需要深度处理的干货，还是消耗注意力的黑洞？</strong></li>
</ul>

<p>你可以选择做末人，这是一种自由；但如果你决心清醒，你的核心竞争力就在于：<strong>在识别出垃圾信息的那一瞬间，拥有毫不犹豫将其 Drop 掉的冷酷与果决。</strong></p>

<blockquote>
  <p>建议阅读：“奶头乐”骗局：一场精英主义的傲慢意淫</p>
</blockquote>]]></content><author><name>Weiqing Liu</name><email>mailto:liuweiqing147@gmail.com</email></author><category term="lifestyle" /><category term="lastman" /><summary type="html"><![CDATA[打开手机，我们的信息流里总是充斥着各种离奇新闻：今天推送一条”某地老人上厕所意外去世”，明天又弹出”老人买105岁可领的保险，最终成功退款”的荒诞故事。在算法的推波助澜下，这类新闻轻易占据热搜，引发评论区的狂欢。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sixiangjia.de/assets/images/morandi.jpg" /><media:content medium="image" url="https://sixiangjia.de/assets/images/morandi.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="zh"><title type="html">从 MySQL 协议到 Cloudflare Tunnel：深挖 TCP 的“有状态”江湖</title><link href="https://sixiangjia.de/tech/http-tcp/" rel="alternate" type="text/html" title="从 MySQL 协议到 Cloudflare Tunnel：深挖 TCP 的“有状态”江湖" /><published>2026-02-19T00:00:00+08:00</published><updated>2026-02-19T00:00:00+08:00</updated><id>https://sixiangjia.de/tech/http-tcp</id><content type="html" xml:base="https://sixiangjia.de/tech/http-tcp/"><![CDATA[<p>最近在折腾 Home Assistant (HASS) 的公网穿透。我使用了 Cloudflare Tunnel，但发现了一个诡异的现象：本地访问秒开，CF 访问却转圈。在排查过程中，我从应用层的 HTTP 一路杀到了传输层的 TCP，甚至重新认识了 MySQL 这种老牌协议。</p>

<hr />

<h3 id="一-协议的门派为什么-mysql-必须走-tcp">一、 协议的门派：为什么 MySQL 必须走 TCP？</h3>

<p>在穿透 HASS（HTTP）时，我们觉得理所当然，但当我尝试穿透 MySQL 时，碰了壁。</p>

<p><strong>1. 应用层代理（L7）的局限</strong>
HTTP 代理像是一个懂多种语言的翻译官，它能听懂网页请求。但 <strong>MySQL 是私有二进制协议</strong>，它有一套专属的“暗号”。</p>

<ul>
  <li><strong>HTTP 代理：</strong> 听不懂 MySQL 在说什么，直接拒收。</li>
  <li><strong>TCP 转发（L4）：</strong> 像一个搬砖工，不拆包，只管把数据流从 A 端搬到 B 端。</li>
</ul>

<p><strong>结论：</strong> 凡是像 MySQL、SSH 这样不走 HTTP 路线的私有协议，在穿透时必须回归到<strong>传输层代理（TCP Forwarding）</strong>。</p>

<hr />

<h3 id="二-核心博弈有状态-stateful-vs-无状态-stateless">二、 核心博弈：有状态 (Stateful) vs 无状态 (Stateless)</h3>

<p>理解了 TCP 转发后，我发现了一个更有趣的概念：<strong>状态</strong>。</p>

<ul>
  <li><strong>HTTP 的“渣男”属性（无状态）：</strong> 请求完就忘。为了记住你是谁，我们得给它挂载 Cookie 和 Session。</li>
  <li><strong>TCP 的“执着”属性（有状态）：</strong> 每一个连接都有一个“五元组”身份标识。它必须维持一个长期的会话。</li>
</ul>

<p><strong>MySQL 为什么不选 HTTP？</strong> 因为它需要极其严苛的“有状态”环境。事务（Transaction）处理需要服务器死死记住你刚才锁了哪行数据。这种深度的上下文绑定，是无状态的 HTTP 无法低成本提供的。</p>

<hr />

<h3 id="三-实战避坑cloudflare-tunnel-的调优">三、 实战避坑：Cloudflare Tunnel 的调优</h3>

<p>在折腾 <code class="language-plaintext highlighter-rouge">cloudflared</code> 的过程中，我通过日志发现了两个让穿透变慢的“元凶”：</p>

<h4 id="1-udp-被运营商-qos">1. UDP 被运营商 QoS</h4>

<p>默认的隧道协议可能会被运营商限速。</p>

<ul>
  <li><strong>手术操作：</strong> 强制开启 <code class="language-plaintext highlighter-rouge">--protocol http2</code>。</li>
  <li><strong>效果：</strong> 将不稳定的 UDP 握手转为成熟的 TCP 连接，体感延迟瞬间下降。</li>
</ul>

<h4 id="2-地理位置的随机抽奖">2. 地理位置的“随机抽奖”</h4>

<p>我在日志里看到了 <code class="language-plaintext highlighter-rouge">hkg</code>（香港）和 <code class="language-plaintext highlighter-rouge">sjc</code>（圣何塞）。</p>

<ul>
  <li><strong>扎心真相：</strong> 如果流量被随机分配到了美国圣何塞，数据包就要跨越太平洋。</li>
  <li><strong>对策：</strong> 通过设置代理环境变量（如 <code class="language-plaintext highlighter-rouge">http_proxy</code>），配合 V2Ray 等工具，强行将隧道连接锁定在亚洲节点。</li>
</ul>

<hr />

<h3 id="四-进阶当网络切换时我们在经历什么">四、 进阶：当网络切换时，我们在经历什么？</h3>

<p>最后，我研究了从 Wi-Fi 切换到 5G 时的断连问题。</p>

<p>由于 TCP 是有状态的，IP 一变，连接即毁。这也是为什么 HASS 页面会卡死。</p>

<ul>
  <li><strong>未来的解药：</strong> <strong>HTTP/3 (QUIC)</strong>。它不再基于 IP，而是基于 <strong>Connection ID</strong>。</li>
  <li><strong>感悟：</strong> 技术的发展，本质上就是在不断修补底层协议“太有状态”或“太没状态”所带来的副作用。</li>
</ul>

<h3 id="五-websocket披着-http-皮的-tcp-灵魂">五、 WebSocket：披着 HTTP 皮的 TCP 灵魂</h3>

<p>在排查 HASS 穿透时，你可能会问：既然 HTTP 是无状态的，为什么我点击开关，手机能<strong>实时</strong>收到状态反馈？</p>

<p>这就是 <strong>WebSocket</strong> 的功劳。它是我们这篇探讨中“状态”的集大成者。</p>

<ol>
  <li><strong>借壳上市（握手阶段）：</strong>
WebSocket 起初是一个普通的 HTTP 请求（无状态）。它通过在 Header 里写上 <code class="language-plaintext highlighter-rouge">Upgrade: websocket</code>，像是在问服务器：“咱们能不能换个持久的方式聊天？”</li>
  <li><strong>定情终身（通信阶段）：</strong>
一旦握手成功，它就彻底撕下了 HTTP 的伪装，回归了 <strong>TCP 的本质</strong>。它变成了一个双向、实时的管道。
    <ul>
      <li><strong>为什么快？</strong> 它省去了 HTTP 频繁的 Header 传输。</li>
      <li><strong>为什么怕断？</strong> 因为它是<strong>有状态</strong>的。它死死绑定在底层的那条 TCP 连接上。</li>
    </ul>
  </li>
</ol>

<h3 id="六-总结网络世界的状态真相">六、 总结：网络世界的“状态”真相</h3>

<p>通过这次对 Cloudflare Tunnel 的深度调优，我们可以把学到的知识串成一条线：</p>

<ul>
  <li><strong>传输层 (TCP)：</strong> 它是地基。它是有状态的，负责保证包裹不丢（MySQL、SSH、WebSocket 都离不开它）。</li>
  <li><strong>应用层 (HTTP)：</strong> 它是快餐。它是无状态的，负责简单快速地分发内容（网页、图片、API）。</li>
  <li><strong>特殊的应用层 (MySQL)：</strong> 它是老古董。它直接在 TCP 上跑二进制，因为 HTTP 的无状态和文本格式对它来说太沉重了。</li>
  <li><strong>现代的应用层 (WebSocket)：</strong> 它是混合体。它用 HTTP 开头，用 TCP 的方式持久运行，专为实时监控（HASS）而生。</li>
</ul>

<hr />

<h3 id="七-最终实战心得如何让穿透稳如泰山">七、 最终实战心得：如何让穿透稳如泰山？</h3>

<p>如果你也像我一样，通过 Cloudflare Tunnel 访问家里的服务，请记住这三条黄金法则：</p>

<ol>
  <li><strong>强制协议转换：</strong> 将 <code class="language-plaintext highlighter-rouge">cloudflared</code> 的协议改为 <code class="language-plaintext highlighter-rouge">--protocol http2</code>。这能让你的隧道在复杂的公网环境中，从脆弱的 UDP 转向成熟稳定的 TCP，从而保护上层的 WebSocket 不轻易断连。</li>
  <li><strong>路由分流：</strong> 利用 V2Ray 或代理，把隧道终点锁在亚洲（如香港）。物理距离（RTT）是实时交互最大的敌人，再好的协议也跑不过光速。</li>
  <li><strong>HASS 安全策略：</strong> 务必在 HASS 的 <code class="language-plaintext highlighter-rouge">trusted_proxies</code> 中添加隧道 IP。如果握手因为安全校验慢了 1 秒，上层的 WebSocket 体验就会大打折扣。</li>
</ol>

<hr />

<h3 id="结语">结语</h3>

<p>技术圈常说“大道至简”，但真实的互联网底层却充满了各种为了平衡“性能”与“扩展性”而做的妥协。</p>

<p>从 <strong>MySQL</strong> 的二进制执着，到 <strong>HTTP</strong> 的断舍离，再到 <strong>WebSocket</strong> 的重修旧好，以及 <strong>Cloudflare Tunnel</strong> 在中间的巧妙撮合。理解了这些，你就理解了为什么在网络切换的一瞬间，你的智能家居会短暂“失灵”。</p>

<p><strong>底层决定上层，状态决定实时。</strong></p>]]></content><author><name>Weiqing Liu</name><email>mailto:liuweiqing147@gmail.com</email></author><category term="tech" /><category term="pve" /><category term="linux" /><summary type="html"><![CDATA[最近在折腾 Home Assistant (HASS) 的公网穿透。我使用了 Cloudflare Tunnel，但发现了一个诡异的现象：本地访问秒开，CF 访问却转圈。在排查过程中，我从应用层的 HTTP 一路杀到了传输层的 TCP，甚至重新认识了 MySQL 这种老牌协议。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sixiangjia.de/assets/images/morandi.jpg" /><media:content medium="image" url="https://sixiangjia.de/assets/images/morandi.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="zh"><title type="html">解决 OBS 录制与直播中“桌面音频”音量过大的全指南</title><link href="https://sixiangjia.de/tech/obs-voice-too-loud/" rel="alternate" type="text/html" title="解决 OBS 录制与直播中“桌面音频”音量过大的全指南" /><published>2026-02-19T00:00:00+08:00</published><updated>2026-02-19T00:00:00+08:00</updated><id>https://sixiangjia.de/tech/obs-voice-too-loud</id><content type="html" xml:base="https://sixiangjia.de/tech/obs-voice-too-loud/"><![CDATA[<p>在进行视频录制或直播时，很多新手都会遇到一个棘手的问题：<strong>桌面音频（如游戏声、音乐）声音太大，直接盖过了麦克风的人声</strong>。这不仅会让观众感到刺耳，还会导致后期音频无法处理。</p>

<p>本文将教你如何通过 OBS 内置的功能彻底解决这一问题。</p>

<hr />

<h3 id="一-基础调节混音器与增益-gain">一、 基础调节：混音器与增益 (Gain)</h3>

<p>最直观的解决办法是在 OBS 主界面的“音量混音器”中拖动滑块，但如果滑块拉到最低依然觉得大，你可以使用 <strong>“增益”</strong> 滤镜。</p>

<ul>
  <li><strong>增益 (Gain) 的本质</strong>：它是一个音量控制工具，既可以放大声音，也可以强制缩小声音。</li>
  <li><strong>如何操作</strong>：
    <ol>
      <li>在“桌面音频”处点击三个点（或齿轮图标），选择 <strong>“滤镜 (Filters)”</strong>。</li>
      <li>添加 <strong>“增益”</strong> 滤镜。</li>
      <li>将值设为<strong>负数</strong>（例如 <code class="language-plaintext highlighter-rouge">-10 dB</code> 或更低），这样可以从源头上压低那些默认音量极高的软件声音。</li>
    </ol>
  </li>
</ul>

<h3 id="二-自动化管理开启避让-ducking效果">二、 自动化管理：开启“避让 (Ducking)”效果</h3>

<p>如果你希望在自己说话时，背景音乐自动变小，而不说话时音量自动恢复，那么“避让”效果是最佳选择。</p>

<ul>
  <li><strong>实现原理</strong>：通过在桌面音频上挂载一个“压缩器”，让它实时监听你的麦克风信号。</li>
  <li><strong>配置步骤</strong>：
    <ol>
      <li>进入桌面音频的“滤镜”菜单，添加 <strong>“压缩器 (Compressor)”</strong>。</li>
      <li>找到 <strong>“侧链/辅助音频源”</strong> 选项，并将其设置为你的 <strong>“麦克风”</strong>。</li>
      <li><strong>核心逻辑</strong>：只要麦克风检测到你说话，桌面音量就会立刻按比例下压，实现“人说话，背景音让路”的专业效果。</li>
    </ol>
  </li>
</ul>

<h3 id="三-安全防线添加限制器-limiter">三、 安全防线：添加限制器 (Limiter)</h3>

<p>为了防止突发的巨大声响（如游戏里的爆炸声）导致爆音或损伤观众听力，你必须设置上限。</p>

<ul>
  <li><strong>作用</strong>：无论原始声音多大，输出结果都不会超过你设定的阈值。</li>
  <li><strong>建议设置</strong>：在桌面音频滤镜中添加 <strong>“限制器”</strong>，并将 <strong>“幅度 (Threshold)”</strong> 设置在 <code class="language-plaintext highlighter-rouge">-6.0 dB</code> 左右。</li>
</ul>

<hr />

<h3 id="总结建议">总结建议</h3>

<table>
  <thead>
    <tr>
      <th>解决场景</th>
      <th>推荐方案</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>背景音持久性过大</strong></td>
      <td>使用 <strong>“增益”</strong> 滤镜设置负值</td>
    </tr>
    <tr>
      <td><strong>需要人声清晰，背景音做陪衬</strong></td>
      <td>开启 <strong>“避让 (Ducking)”</strong> 侧链压缩</td>
    </tr>
    <tr>
      <td><strong>防止突发性巨响</strong></td>
      <td>添加 <strong>“限制器”</strong> 滤镜</td>
    </tr>
  </tbody>
</table>

<p>通过以上组合拳，你就可以精准控制 OBS 的每一个音符，让你的视频听起来更加专业。</p>]]></content><author><name>Weiqing Liu</name><email>mailto:liuweiqing147@gmail.com</email></author><category term="tech" /><category term="windows" /><category term="obs" /><summary type="html"><![CDATA[在进行视频录制或直播时，很多新手都会遇到一个棘手的问题：桌面音频（如游戏声、音乐）声音太大，直接盖过了麦克风的人声。这不仅会让观众感到刺耳，还会导致后期音频无法处理。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sixiangjia.de/assets/images/morandi.jpg" /><media:content medium="image" url="https://sixiangjia.de/assets/images/morandi.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>