<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>船长日志</title>
	<atom:link href="http://www.cslog.cn/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cslog.cn</link>
	<description>最让我激动的是不知道下一个星球上能发现什么...</description>
	<lastBuildDate>Wed, 30 Jul 2025 16:06:05 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>膜、智能与自由——一份关于生命的不对称叙事</title>
		<link>http://www.cslog.cn/Content/asymmetric-and-freedom/</link>
		<comments>http://www.cslog.cn/Content/asymmetric-and-freedom/#comments</comments>
		<pubDate>Wed, 30 Jul 2025 16:06:05 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[人工智能]]></category>
		<category><![CDATA[我思我在]]></category>
		<category><![CDATA[意识]]></category>
		<category><![CDATA[智能]]></category>
		<category><![CDATA[演化论]]></category>
		<category><![CDATA[生命意义]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1359</guid>
		<description><![CDATA[一、引子：从一道边界开始 想象一颗刚刚冷却的行星。熔岩凝固，雨水落下，无机盐在潮 &#8230; <a href="http://www.cslog.cn/Content/asymmetric-and-freedom/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>一、引子：从一道边界开始</p>
<p>想象一颗刚刚冷却的行星。熔岩凝固，雨水落下，无机盐在潮间带里结晶。就在某一微秒，两股成分不同的水流相撞，表面的脂质分子被推向彼此，自发卷曲，形成一个闭合的囊泡——膜。它薄得几乎透明，却把世界分成“内”与“外”。这道最原始的拓扑手术，同时制造了第一道不对称：囊泡里外的化学势不再相等。于是，流动、扩散、能量梯度，一切后来的故事，都从这道差开始。</p>
<p>二、膜：把世界切成可运算的局部<br />
膜不是墙，而是阀门。它让某些分子通过，把另一些挡在外面；把光子的能量转成质子泵的扭矩；把随机的布朗运动翻译成一连串可被内部网络读取的比特。生命因此第一次拥有了“内部”。内部允许延迟反应：先储存信号，再集中处理；先模拟，再行动。于是，膜不仅隔离，更把“外部噪声”降维成“内部信息”，把“环境”翻译成“模型”。<br />
独立的生命体，本质上是一台把外部不对称内化为内部协调的机器。协调效率的判据很简单：在同样扰动下，内部资源重新配置的速度是否快于外部扰动的累积速度。若答案是“是”，生命就活下来，并把这套膜-代谢-信息装置复制出去；若“否”，膜破裂，故事结束。</p>
<p>三、智能：在概率不平均处下注<br />
当外部差异越来越复杂，仅靠分子开关的布尔逻辑已不够。进化开始制造新的膜——神经膜、细胞网络、大脑皮层，层层嵌套，层层扩大有效上下文。<br />
智能的核心任务，是侦测并利用“概率不平均”。所谓不平均，是雨云在某一区域更厚、猎物在某一季节更肥、敌人的下一步更可能向左。智能体提出假说，下注资源，在反馈里微调先验。它永远无法证明“这就是真理”，却能用一次次后验更新把“活得久、传得广”当作临时奖杯。<br />
从细菌趋化到人类科学，公式都一样：<br />
观测 → 压缩成模型 → 用模型预测 → 行动 → 环境给出奖惩 → 模型再压缩。<br />
架构的每一次革命——从感知机到 Transformer，从 RNN 到 Mamba——都只是把“能同时记住的相关历史”拉长一点，把“可并行激活的上下文”拓宽一点。我们称之为“有效 context length”的军备竞赛，其实是在为不对称洪流建造更大的蓄水池。</p>
<p>四、意识：高阶控制器及其代价<br />
当 context 长度超过某个阈值，系统不得不在内部再建一层“关于内部状态的索引”。这就是意识：一个在高维状态空间里动态分配注意力的元算法。<br />
它的工作是回答：此刻，哪一段记忆、哪一条假说、哪一项情绪值得被提升到全局广播？哪一些计算可以外包给小脑、基底节、肠道菌群？<br />
意识并不制造新能量，它只是让能量在更恰当的时机流向更恰当的动作。代价是极高的代谢账单：人脑占体重 2%，却耗掉 20% 的葡萄糖。因此，意识只在生存回报足够高时才出现。换句话说，意识是复杂系统在极端不对称环境中买下的“生存加速保险”。</p>
<p>五、生命：用不确定性换取自由<br />
如果宇宙是一台完全确定的自动机，所有未来态都已写在初始条件里，那么膜、智能、意识统统失去意义——没有差异，就没有选择；没有选择，就没有生命。<br />
幸亏量子涨落、混沌、测量误差让信息永远残缺。残缺留下缝隙，缝隙允许下注。生命在不确定里冲浪，把“继续存在”本身活成了意义。<br />
更妙的是：正因为信息永远不全，生命反而获得自由。自由不是推翻因果律，而是在因果链的缺口里做出不可被提前计算的选择；是在下一次观测降临之前，先对自己唱一段尚未被证伪的叙事。<br />
于是，自由不再是哲学家的奢侈品，而是信息残缺带来的工程剩余。它像膜两侧的离子差一样真实，可以被测量、被利用，也被下一代膜继承。</p>
<p>六、递归：膜的再生产<br />
故事并未结束。今天的人类在实验室里合成人工细胞，用 CRISPR 编辑膜蛋白；在计算机里训练千亿参数的大模型，把互联网当外部养料，把 GPU 当新的线粒体；在区块链上写下智能合约，让代码成为可编程的膜，隔离风险、封装信任。<br />
膜换了材质，却从未消失。它继续膨胀，继续把更大的外部差异翻译成内部可运算的结构，也继续让生命在不确定里下注、在残缺里生长。</p>
<p>七、尾声：回到那道最初的边界<br />
如果某天宇宙热寂，所有差异归零，最后一道膜也终将蒸发。但在那之前，生命会不断书写新的脚注：<br />
“我们以不对称为食，以不确定为翼；<br />
我们永远无法抵达真理，却永远在去往真理的路上；<br />
而那路上的每一次呼吸、每一道裂缝、每一个尚未证伪的假说——<br />
都是自由。”
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/asymmetric-and-freedom/">http://www.cslog.cn/Content/asymmetric-and-freedom/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/asymmetric-and-freedom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在线学习推演模型：在不确定中追索规则的智能方式</title>
		<link>http://www.cslog.cn/Content/online-learning/</link>
		<comments>http://www.cslog.cn/Content/online-learning/#comments</comments>
		<pubDate>Thu, 17 Jul 2025 04:30:52 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[人工智能]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1355</guid>
		<description><![CDATA[在这个充满不确定性的世界里，几乎所有的智能系统——无论是人脑、动物、企业组织还是 &#8230; <a href="http://www.cslog.cn/Content/online-learning/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1 data-start="59" data-end="84"><span style="font-size: 16px;">在这个充满不确定性的世界里，几乎所有的智能系统——无论是人脑、动物、企业组织还是AI模型——都在做着一件事情：</span><strong style="font-size: 16px;" data-start="141" data-end="169">从过去的局部经验中总结出规律，去试探未来的反馈。</strong></h1>
<p data-start="171" data-end="260">这种机制看似朴素，却蕴含着极为深刻的哲学与技术含义。我将它称为一种“在线学习推演模型”（Online Inductive Probing Model），并尝试从以下几个维度展开：</p>
<hr data-start="262" data-end="265" />
<h2 data-start="267" data-end="288">一、时间维度的单向性：我们只能用过去</h2>
<p data-start="290" data-end="346">无论是谁，都无法逃脱时间的箭头。我们做出所有判断的依据，<strong data-start="318" data-end="332">只能是过去已发生的事</strong>。未来尚未发生，也无从取样。</p>
<p data-start="348" data-end="362">更具体地说，任何推理或模型：</p>
<ul data-start="363" data-end="444">
<li data-start="363" data-end="377">
<p data-start="365" data-end="377"><strong data-start="365" data-end="377">只能使用历史数据</strong></p>
</li>
<li data-start="378" data-end="405">
<p data-start="380" data-end="405"><strong data-start="380" data-end="405">基于有限区域的信息（空间、语义或感知范围）</strong></p>
</li>
<li data-start="406" data-end="421">
<p data-start="408" data-end="421"><strong data-start="408" data-end="421">提出一种规则或结构</strong></p>
</li>
<li data-start="422" data-end="444">
<p data-start="424" data-end="444"><strong data-start="424" data-end="444">并在未来遇到反馈后进行修正或淘汰</strong></p>
</li>
</ul>
<p data-start="446" data-end="462">这就是最原始也最通用的学习方式。</p>
<hr data-start="464" data-end="467" />
<h2 data-start="469" data-end="492">二、无法证实，无法证伪：试探是唯一的方式</h2>
<p data-start="494" data-end="528">这套模型有个悖论：它既无法完全证实所推理的“规则”，也无法彻底证伪。</p>
<ul data-start="529" data-end="594">
<li data-start="529" data-end="547">
<p data-start="531" data-end="547">因为未来未到，验证永远是延后的；</p>
</li>
<li data-start="548" data-end="569">
<p data-start="550" data-end="569">而未来反馈往往不完全、不连续、不明确；</p>
</li>
<li data-start="570" data-end="594">
<p data-start="572" data-end="594">所以，一个假说只能“暂时有效”，直到它失效。</p>
</li>
</ul>
<p data-start="596" data-end="615"><strong data-start="596" data-end="615">这是一种永远在路上的认知模式。</strong></p>
<p data-start="617" data-end="628">我们只能不断“试探”：</p>
<ul data-start="629" data-end="660">
<li data-start="629" data-end="636">
<p data-start="631" data-end="636">抛出预测；</p>
</li>
<li data-start="637" data-end="644">
<p data-start="639" data-end="644">接受反馈；</p>
</li>
<li data-start="645" data-end="652">
<p data-start="647" data-end="652">修正模型；</p>
</li>
<li data-start="653" data-end="660">
<p data-start="655" data-end="660">再次预测。</p>
</li>
</ul>
<p data-start="662" data-end="708">这非常像贝叶斯更新，也像进化选择。你永远不能证明自己是对的，但可以不断修正偏差，靠近有效性。</p>
<hr data-start="710" data-end="713" />
<h2 data-start="715" data-end="731">三、提升学习效率的两条路径</h2>
<p data-start="733" data-end="763">既然这是个结构性困境，我们就只能在<strong data-start="750" data-end="758">试探效率</strong>上下功夫。</p>
<h3 data-start="765" data-end="787">1. 加快预测节奏：增加反馈密度</h3>
<p data-start="788" data-end="828">如果你能在短时间内做出更多“小预测”，哪怕是微小反馈，也能加快模型的迭代。比如：</p>
<ul data-start="829" data-end="886">
<li data-start="829" data-end="843">
<p data-start="831" data-end="843">股票市场中的高频交易策略</p>
</li>
<li data-start="844" data-end="861">
<p data-start="846" data-end="861">人类认知中的“快速验证小假设”</p>
</li>
<li data-start="862" data-end="886">
<p data-start="864" data-end="886">AI中的强化学习 agent 快速与环境互动</p>
</li>
</ul>
<h3 data-start="888" data-end="910">2. 增强感知能力：扩展输入维度</h3>
<p data-start="911" data-end="941">另一种方式是“装更多眼睛和耳朵”，也就是增加传感器和数据源：</p>
<ul data-start="942" data-end="1011">
<li data-start="942" data-end="967">
<p data-start="944" data-end="967">人工智能中，添加多模态输入（图像+语言+动作）</p>
</li>
<li data-start="968" data-end="989">
<p data-start="970" data-end="989">人类学习中，去倾听他人经验、跨领域观察</p>
</li>
<li data-start="990" data-end="1011">
<p data-start="992" data-end="1011">企业经营中，提升用户反馈、监控系统建设</p>
</li>
</ul>
<p data-start="1013" data-end="1053">本质上都是：<strong data-start="1019" data-end="1053">提升输入的覆盖面与密度，从而让模型拥有更多可参考的“过去”。</strong></p>
<hr data-start="1055" data-end="1058" />
<h2 data-start="1060" data-end="1093">四、架构的历史演进：在扩展有效 context length</h2>
<p data-start="1095" data-end="1147">从历史的视角看，人类所有关于“学习架构”的进化，本质上都围绕一个目标：<strong data-start="1130" data-end="1146">延长“有效上下文”的范围</strong>。</p>
<p data-start="1149" data-end="1233">从最原始的口口相传、记忆规则，到文字、书籍、数据库、互联网，再到今天的人工智能模型（如Transformer、GPT），不断扩大的都是我们能纳入推理系统的“过去内容”。</p>
<blockquote data-start="1235" data-end="1271">
<p data-start="1237" data-end="1271"><strong data-start="1237" data-end="1271">有效 context length = 可用于决策的经验范围</strong></p>
</blockquote>
<p data-start="1273" data-end="1334">AI系统里，我们从 RNN（短记忆）到 LSTM（门控记忆）到 Transformer（全局注意力），无不体现出这个趋势。</p>
<p data-start="1336" data-end="1350">而未来的发展，也会持续提升：</p>
<ul data-start="1351" data-end="1416">
<li data-start="1351" data-end="1371">
<p data-start="1353" data-end="1371"><strong data-start="1353" data-end="1361">时间跨度</strong>（处理更久远的过去）</p>
</li>
<li data-start="1372" data-end="1393">
<p data-start="1374" data-end="1393"><strong data-start="1374" data-end="1382">多维感知</strong>（整合更多形式的信息）</p>
</li>
<li data-start="1394" data-end="1416">
<p data-start="1396" data-end="1416"><strong data-start="1396" data-end="1404">状态空间</strong>（建模更复杂的外部世界）</p>
</li>
</ul>
<hr data-start="1418" data-end="1421" />
<h2 data-start="1423" data-end="1448">五、但 context 的扩大，也带来副作用</h2>
<p data-start="1450" data-end="1484">需要注意的是，并非“context 越长越好”。以下风险会随之而来：</p>
<ul data-start="1485" data-end="1560">
<li data-start="1485" data-end="1514">
<p data-start="1487" data-end="1514"><strong data-start="1487" data-end="1496">过拟合历史</strong>：模型过度相信过去规律，错失变化信号</p>
</li>
<li data-start="1515" data-end="1537">
<p data-start="1517" data-end="1537"><strong data-start="1517" data-end="1525">响应迟缓</strong>：记忆过重会拖慢反应速度</p>
</li>
<li data-start="1538" data-end="1560">
<p data-start="1540" data-end="1560"><strong data-start="1540" data-end="1548">信息冗余</strong>：噪音累积，信号反而稀释</p>
</li>
</ul>
<p data-start="1562" data-end="1595">所以，任何智能系统都需要在<strong data-start="1575" data-end="1587">记忆 vs 适应</strong>之间做动态平衡。</p>
<hr data-start="1597" data-end="1600" />
<h2 data-start="1602" data-end="1623">六、从本质看：这是所有智能的底层模式</h2>
<p data-start="1625" data-end="1661">你会发现，无论人类思维、公司决策，还是AI系统，几乎都遵循这个通用架构：</p>
<blockquote data-start="1663" data-end="1694">
<p data-start="1665" data-end="1694"><strong data-start="1665" data-end="1694">有限经验 → 提出模式 → 未来验证 → 反馈修正</strong></p>
</blockquote>
<p data-start="1696" data-end="1755">这就是一种“后验智能”（post-hoc intelligence），<strong data-start="1731" data-end="1755">在无法预知中不断调整自己，从而适应未来。</strong></p>
<p data-start="1757" data-end="1772">而“智能”的本质，可能就只是：</p>
<ul data-start="1773" data-end="1814">
<li data-start="1773" data-end="1785">
<p data-start="1775" data-end="1785">提出合理假设的能力；</p>
</li>
<li data-start="1786" data-end="1798">
<p data-start="1788" data-end="1798">快速验证假设的能力；</p>
</li>
<li data-start="1799" data-end="1814">
<p data-start="1801" data-end="1814">容忍错误并及时调整的能力。</p>
</li>
</ul>
<hr data-start="1816" data-end="1819" />
<h2 data-start="1821" data-end="1840">七、未来方向：更快、更广、更精准</h2>
<p data-start="1842" data-end="1858">我们真正要追求的，或许是这三点：</p>
<ol data-start="1859" data-end="1958">
<li data-start="1859" data-end="1896">
<p data-start="1862" data-end="1896"><strong data-start="1862" data-end="1873">更快的反馈循环</strong>：从年级考试 → 每日小测 → 实时眼动追踪；</p>
</li>
<li data-start="1897" data-end="1926">
<p data-start="1900" data-end="1926"><strong data-start="1900" data-end="1911">更广的感知范围</strong>：从单一维度 → 多模态融合；</p>
</li>
<li data-start="1927" data-end="1958">
<p data-start="1930" data-end="1958"><strong data-start="1930" data-end="1943">更精准的上下文建模</strong>：从纯数据 → 意义结构图谱。</p>
</li>
</ol>
<p data-start="1960" data-end="1977">也许这正是智能系统未来的发展路径。</p>
<hr data-start="1979" data-end="1982" />
<h2 data-start="1984" data-end="1995">小结：命名与比喻</h2>
<p data-start="1997" data-end="2014">我们可以为这种结构起个名字，比如：</p>
<ul data-start="2016" data-end="2190">
<li data-start="2016" data-end="2055">
<p data-start="2018" data-end="2055"><strong data-start="2018" data-end="2027">试探式智能</strong>（Probe-based Intelligence）</p>
</li>
<li data-start="2056" data-end="2096">
<p data-start="2058" data-end="2096"><strong data-start="2058" data-end="2068">后验推演模型</strong>（Post-hoc Inference Model）</p>
</li>
<li data-start="2097" data-end="2135">
<p data-start="2099" data-end="2135"><strong data-start="2099" data-end="2109">时间盲测系统</strong>（Temporal Blind Probing）</p>
</li>
<li data-start="2136" data-end="2190">
<p data-start="2138" data-end="2190"><strong data-start="2138" data-end="2150">延迟反馈学习架构</strong>（Delayed Feedback Learning Architecture）</p>
</li>
</ul>
<p data-start="2192" data-end="2196">它就像：</p>
<ul data-start="2197" data-end="2257">
<li data-start="2197" data-end="2211">
<p data-start="2199" data-end="2211">在雾中行走，靠回声定位；</p>
</li>
<li data-start="2212" data-end="2234">
<p data-start="2214" data-end="2234">在黑箱前试按按钮，根据灯光变化理解机制；</p>
</li>
<li data-start="2235" data-end="2257">
<p data-start="2237" data-end="2257">或者像盲人摸象，每一次触摸都是一次推理。</p>
</li>
</ul>
<p data-start="2259" data-end="2290">这是不完美的，但确实是<strong data-start="2270" data-end="2289">所有智能体正在使用的最现实方式</strong>。</p>
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/online-learning/">http://www.cslog.cn/Content/online-learning/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/online-learning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>测试和分析auto-gpt0.3</title>
		<link>http://www.cslog.cn/Content/auto-gpt-stable-0-3/</link>
		<comments>http://www.cslog.cn/Content/auto-gpt-stable-0-3/#comments</comments>
		<pubDate>Tue, 09 May 2023 18:19:36 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[人工智能]]></category>
		<category><![CDATA[autogpt]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1351</guid>
		<description><![CDATA[上一次测试auto-gpt0.2.2，发现1：不停地重复在网上找和下载文件，结果 &#8230; <a href="http://www.cslog.cn/Content/auto-gpt-stable-0-3/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>上一次测试<a href="https://github.com/Significant-Gravitas/Auto-GPT">auto-gpt</a>0.2.2，发现1：不停地重复在网上找和下载文件，结果还是没有能力把指定文件下载下来。<br />
2：我手动下载了文件，让它读取分析，发现读了之后马上报错自动退出了。说是提交给openai的token超字数了。。。</p>
<p>今天我又配置了当前最新的stable 0.3 auto-gpt，还是测试同样的任务，让它整理《红楼梦》中的小说人物关系图谱。<br />
首先，发现下载文件还是下载不了。跟0.2.2很像。<br />
没办法，我手动下载了文件给它。<br />
然后，发现它执行代码一定要在docker运行。我查了代码，修改成直接可以运行了。<br />
又然后，我发现它一直想执行还没保存的代码文件，我通过对话提示它先写好代码文件再执行文件。以后每次要执行代码我发现都要做这样的提示。显然里面有个逻辑问题。也许是execute_python_file命令应该对应一个新的文件，而execute_code应该创建一个新的文件，接的参数是代码内容，而不是文件名。操作的时候让代理先保存代码文件，然后执行。<br />
又又然后，我发现在访问代码时，openai.error.APIConnectionError，不知道是不是网络环境问题，遇到这个问题程序就中止了。我修改了代码，让它遇到问题后重试。<br />
最后，还是发现了tokens遇长的问题，我不知道哪里的代码又不严谨。。。到这里，愉快的一下午就快结束了。</p>
<p>看来这个任务还是很难完成。</p>
<p>目前看来，auto-gpt还十分不成熟，原因是，1里面的代码里的bugs非常多；2系统有几个如google查询，读写文件，执行代码等功能模块，但这几个模块的调动很不协调，操作很不连贯，它们的组合经常十分生疏，如同请一个有理论，但完全没有实践基础的几个技术人员一起完成一个大任务。</p>
<p>显然，在人工智能发展的路上，这些问题都会被解决。但现在而言，从效率角度看，在实际工作中用auto-gpt还是比较早的。auto-gpt在设计的时候，是用来完成通用任务的。我感觉现在来说，还需要很多的调整和磨合。让人工智能做不同的事，本身要学习经验。而让人工智能做重复的事，这可我感觉现阶段应该使用prompt+特定的任务代码+gpt的形式可能更实在一些。
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/auto-gpt-stable-0-3/">http://www.cslog.cn/Content/auto-gpt-stable-0-3/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/auto-gpt-stable-0-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>中文LLaMA Alpaca大语言模型在text-generation-webui和llama.cpp上的部署</title>
		<link>http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/</link>
		<comments>http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/#comments</comments>
		<pubDate>Fri, 05 May 2023 17:19:25 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[人工智能]]></category>
		<category><![CDATA[alpaca]]></category>
		<category><![CDATA[llama]]></category>
		<category><![CDATA[llama.cpp]]></category>
		<category><![CDATA[大语言模型]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1344</guid>
		<description><![CDATA[中文LLaMA模型和指令精调的Alpaca大模型在text-generation &#8230; <a href="http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>中文LLaMA模型和指令精调的Alpaca大模型在text-generation-webui和llama.cpp上的部署<br />
LLaMA是facebook的meta公司放出来的大语言模型，这个模型的中文能力非常差。<a href="https://github.com/ymcui/Chinese-LLaMA-Alpaca" rel="noopener" target="_blank">Chinese-LLaMA-Alpaca</a>在原版LLaMA的基础上扩充了中文词表并使用了中文数据进行二次预训练，进一步提升了中文基础语义理解能力。目前已开源的模型版本：7B（标准版、Plus版）、13B（标准版）。这些版本可以在16G，甚至可以在8G内存的个人电脑上部署。似乎不用显卡。今天我在16G内存的个人笔记上部署了。这是记录。</p>
</div>
<div>
<p>由于笔记本电脑只有16G，所以我选择是LLaMA/Alpaca Plus版本（7B）版本。7B的模型占内存13GB，8bit量化后是7.8GB。</p>
</div>
<div>
<div></div>
<h2 data-heading="模型下载与合并">模型下载与合并</h2>
</div>
<div>
<p>部署需要<a href="https://github.com/facebookresearch/llama" rel="noopener" target="_blank">原版LLaMA模型</a>和中文LLaMA模型Chinese-LLaMA-Plus-7B与中文Alpaca模型Chinese-Alpaca-Plus-7B。三个模型要合并成一个模型。<br />
页面也提供了Colab在线合并的方式，在线合并的话就不用下载上面的三个模型，只要下载合并好的模型就可以了。</p>
<p><span id="more-1344"></span><br />
我的Colab免费账号内存比较低，所以我选择了下载模型后<a href="https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/%E6%89%8B%E5%8A%A8%E6%A8%A1%E5%9E%8B%E5%90%88%E5%B9%B6%E4%B8%8E%E8%BD%AC%E6%8D%A2" rel="noopener" target="_blank">本地合并</a>。</p>
</div>
<div>
<p>注意，本地合并过程中要用到一个protobuf 3.20.0库。网页没有提及。</p>
</div>
<div>
<p>说是合并要用到13G内存，但在我的16G内存笔记上合并过程没有遇到问题。</p>
</div>
<div>
<div></div>
<h2 data-heading="text-generation-webui部署">text-generation-webui部署</h2>
</div>
<div>
<p><a href="https://github.com/oobabooga/text-generation-webui" rel="noopener" target="_blank">text-generation-webui</a>是一个网页界面的大语言模型工具。部署<a href="https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/%E4%BD%BF%E7%94%A8text-generation-webui%E6%90%AD%E5%BB%BA%E7%95%8C%E9%9D%A2" rel="noopener" target="_blank">参看教程</a>。<br />
注意这个教程是针对没有合并模型的。如果模型合并了，只要加载合并好的一个模型就可以运行了。<br />
<code>python server.py --model llama-7b-hf --cpu</code></p>
<p><code></code><img class="aligncenter size-medium wp-image-1345" title="2023-05-05_181823" src="http://www.cslog.cn/wp-content/uploads/2023/05/2023-05-05_181823-502x600.png" alt="" width="502" height="600" /><br />
不知道是什么原因，我测试发现text generation webui的反应非常慢。发个你好要几分钟才回复。让它写个诗，几小时只写了几行。几乎没有可用性。不知道是不是我没有开启GPU模式的原因。</p>
</div>
<div>
<div></div>
<h2 data-heading="llama.cpp部署">llama.cpp部署</h2>
</div>
<div>
<p>text generation webui太卡了，我转向<a href="https://github.com/ggerganov/llama.cp" rel="noopener" target="_blank">llama.cpp</a>。<a href="https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/llama.cpp%E9%87%8F%E5%8C%96%E9%83%A8%E7%BD%B2" rel="noopener" target="_blank">参考教程</a>。<br />
我是在windows 11下部署，所以要先安装<a href="https://github.com/skeeto/w64devkit/releases" rel="noopener" target="_blank">w64devkit</a>。在它里面运行make。然后参考上面的教程就可以了。<br />
我先对模型进行了8bit的量化。<br />
<code>quantize.exe ./zh-models/chinese_alpaca_plus_7B_pth/ggml-model-f16.bin ./zh-models/chinese_alpaca_plus_7B_pth/ggml-model-q8_0.bin 7</code></p>
</div>
<div>
<p>然后启动<br />
<code>main.exe -m zh-models/chinese_alpaca_plus_7B_pth/ggml-model-q8_0.bin --color -f prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3</code></p>
<p><img class="aligncenter size-medium wp-image-1346" title="中文LLaMA Alpaca在llama.cpp的表现" src="http://www.cslog.cn/wp-content/uploads/2023/05/2023-05-05_191558-720x525.png" alt="" width="720" height="525" /></p>
<p>llama.cpp的响应速度非常快。差不多几秒就回复了。但似乎回复的结果不是非常好，很多错误。看来这个模型的可用性还不是很高。而且回复经常中断。</p>
</div>
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/">http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>评老唐的估值体系（《价值投资实战手册》读后感）</title>
		<link>http://www.cslog.cn/Content/review-1/</link>
		<comments>http://www.cslog.cn/Content/review-1/#comments</comments>
		<pubDate>Wed, 13 Jul 2022 04:17:37 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[投资理财]]></category>
		<category><![CDATA[书评]]></category>
		<category><![CDATA[投资]]></category>
		<category><![CDATA[理财]]></category>
		<category><![CDATA[股市]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1339</guid>
		<description><![CDATA[这段时间读了老唐（唐朝）的《价值投资实战手册》（原版和第二辑），这里分析一下老唐 &#8230; <a href="http://www.cslog.cn/Content/review-1/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>这段时间读了老唐（唐朝）的《价值投资实战手册》（原版和第二辑），这里分析一下老唐使用的估值方法。</p>
<p>老唐的估值方法的基础其实就是绝对估值法。主要是看各投资品的绝对收益数值，哪个高投资哪个。在老唐书里，讨论的投资品压缩到了2种，就是无风险债券和股票。老唐的估值法就是比较这两种投资品。甚至不是用来做这两大类的选择，目的不是为了决定整个股票仓位，而是用于挑选哪个股票更合适。因为在老唐看来，股票的收益一般会比债券高，只是哪个股票更好，债券的收益主要是拿来参考。老唐书里也没有介绍股票之外的投资品的投资细节，主要是股票投资的好处和估值方法及股票选择实例。可以这样说，对于投资，现在的老唐眼里只有股票。对于股票，他有一套自己的择股方法，并使用这个方法，在过去的的十来年，有过平均收益25%以上的成功历史。<br />
老唐股票操作守则：</p>
<p><span id="more-1339"></span><br />
首先确定一个上市公司的3年后的合理估值。计算方法：3年后预计自由现金流x(1/无风险收益率)，高杠杆企业估值打七折<br />
买点：股价低于合理估值的一半时买入。<br />
卖点：<br />
1。企业基本面恶化<br />
2。有更好的投资对象<br />
3。股价超过3年后合理估值的150%<br />
4。当年动态PE超过50<br />
其它时间不操作</p>
<p>选股池条件：<br />
1。公司利润真实可靠<br />
2。公司利润可持续<br />
3。企业运营资本投入少<br />
分析<br />
首先，老唐取3年时间，我感觉是明智的。现在的环境变化很大，时间太长变数太多，不容易预测，太短市场因素影响大，业绩因素体现的不明显。<br />
这个合理估值就是把第三年的收入，当成永远持续按无风险收益率增长的固定收入，把它等同于类似债券投资的估值。老唐一再强调这是一个简化后的简化方法。这样的简化一个是为了方便计算；另一个是本身企业的运营变数太多，详细的预测作用也是有限的。<br />
在我看来，这是一个非常粗暴和简陋的计算方法。老唐竟然是用这个获取了这么高的收益率，有点难以相信。这个公式本身其实是有不少问题的。主要是两个：一个是怎么预测3年后的自由现金流数值；另一个是怎么就突然把这个企业3年后就现金流固定下来，认为企业会以这个现金流为基础，并每年以风险收益率的速度自由现金流增长。这两个是这个公式成立的前提条件。在我看来都是不可能的条件。</p>
<p>关于3年后的自由现金流的确定，老唐提供了两个方法，一个是自己对企业的跟踪和调查，另一个是参照别人研报的推算（可以平均几家，然后砍一刀，打8折）。<br />
关于以第三年现金流作为恒定收入的做法，老唐提供了一个这样的辩解：“将。。。三年后仍然可能的成长性的优势与未来收益确定性低于100%的劣势相互抵消”。大意就是说企业可能变的更好，也可能变坏，于是不如当成不变。。。。<br />
3年后的无风险收益率（老唐认为可以参考银行短期低风险理财产品的年化收益率，如民生银行的“天天增利”。）也是变动的，不可能准确预测。</p>
<p>显然，老唐的合理估值不是一个科学严谨的估值方法。但老唐为什么能成功呢？我认为在老唐的成功不在于估值方法本身。而在于他的砍价能力。一个是合理估值的半价买入！！！另一个就是动不动再打个7折，8折。这个相当于“合理估值”的3，4折买入。无论“合理估值”对不对，买的足够低，赚钱的概率就大很多。</p>
<p>老唐能成功的另一个诀窍在于股票池的限定。1。公司利润真实可靠、2。公司利润可持续、3。企业运营资本投入少。这三个条件其实把大多数的国内上市公司排除开了，只留下了极个别优质的企业。要求企业再投入少，利润可持续。如果一个企业利润持续，那把它3年后的现金流收入固定下来，就相当于很保守的估值法了。所以是这个前提，让上面的估值公式可以操作。</p>
<p>另外，这个方法其实有一个很大的悖论，老唐认为买点是3年后合理估值的50%，这样在3年后如果达到合理估值，年化收益为26%，而理论的前提又是把股票当成债券，同债券的风险收益率4-5%点的收益做比较的结果。。。卖出时要求当前股价达到3年后合理估值的150%以上。这样的要求显然是很无理的要求。但老唐却通过实践做到了。这种不可能只能是基于一个条件：市场的高度无效性！！！市场价格必需在估值上下大幅度的波动，让老唐有以超低价格买入，并以远高于合理估值的价格卖出。</p>
<p>老唐估值法的简化理解<br />
通过以上的分析，我发现老唐估值法其实可以更简单的理解为：<br />
在一个高度无效的市场，找几个利润可持续，再投入少的顶尖优质企业，如老唐投的贵州茅台，洋河股份、腾讯控股、分众传媒。因为这些企业的质量优秀，在3年内以20-25Pe卖出可能性是没有问题的。<br />
等他们在3年后PE20左右的估值一半的价格买入。<br />
当他们涨过这个估值的150%时卖出。<br />
期间哪个下跌的多了，可以卖出估值高的调整到估值低的。</p>
<p>核心点其实是两个，1。找的企业要是优质的，优质体现在两个方面，一是3年后和利润能达到预测，二是3年后市场对它的估值应该能达到PE20以上。2。以非常便宜的价格买入。前提是市场高度无效，股价波动大，提供了买入卖出机会。
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/review-1/">http://www.cslog.cn/Content/review-1/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/review-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>不好之好</title>
		<link>http://www.cslog.cn/Content/the-benefit-of-no-good/</link>
		<comments>http://www.cslog.cn/Content/the-benefit-of-no-good/#comments</comments>
		<pubDate>Tue, 28 Jun 2022 11:08:33 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[成败几何]]></category>
		<category><![CDATA[我思我在]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1336</guid>
		<description><![CDATA[事物是发展的。如果顺心，即会从不好慢慢变好，由好到最好。从前向后看，当然是最好的 &#8230; <a href="http://www.cslog.cn/Content/the-benefit-of-no-good/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>事物是发展的。如果顺心，即会从不好慢慢变好，由好到最好。从前向后看，当然是最好的时刻最让人期待。我们希望健康;我们希望富有，我们希望幸福。最好的时刻真的好吗？应该是的，因为它最好嘛。但仔细思考，你们感应恐怖，因为在那之后怎样？必定又是不会那么好了。不然怎么说那时刻最好了呢？最健康之后应该就是衰老、最富有之后就慢慢式微、最幸福之后恐怕就是意外之变了。所以，最好其实也不好。</p>
<p>把最好都想的不好，你会说我是多么的悲观主义呢？应该会说是悲观之极吧？但我还真是固执之人，我偏要认为自己乐观之极。因为我说最好不好的目的不是否定最好，而是要摆出这个阵式，然后颂扬不好之好。既然最好不好，那什么好呢？不好啊。在不好时，你可以变的更好。什么时候最好呢？最好最好不要来，或者来的越晚越好。比如去世时到来。</p>
<p>2019-03
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/the-benefit-of-no-good/">http://www.cslog.cn/Content/the-benefit-of-no-good/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/the-benefit-of-no-good/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>惠普HP 39GS图形计算器刷newRPL系统及RPL系统语言入门教程</title>
		<link>http://www.cslog.cn/Content/hp-39gs-newrpl/</link>
		<comments>http://www.cslog.cn/Content/hp-39gs-newrpl/#comments</comments>
		<pubDate>Fri, 24 Sep 2021 15:02:06 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[信息处理]]></category>
		<category><![CDATA[hp39gs]]></category>
		<category><![CDATA[newRPL]]></category>
		<category><![CDATA[rpl语言]]></category>
		<category><![CDATA[图形计算器]]></category>
		<category><![CDATA[教程]]></category>
		<category><![CDATA[计算器]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1330</guid>
		<description><![CDATA[RPL (Reverse Polish Lisp) 语言是惠普公司为计算器开发的 &#8230; <a href="http://www.cslog.cn/Content/hp-39gs-newrpl/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>RPL (Reverse Polish Lisp) 语言是惠普公司为计算器开发的的一种编程语言。网友开发了<a href="https://newrpl.wiki.hpgcc3.org/doku.php?id=manual:chapter1:introduction" target="_blank">newRPL系统</a>，让RPL语言运行在更多平台上。</p>
<p>目前newRPL可以运行的平台有<br />
惠普图形计算器：HP 50g、HP 48GII、HP 40gs、HP 39gs、HP Prime G1 (第一代)<br />
Windows等电脑<br />
Android (7.0及以上)</p>
<p>其中的hp 39gs计算器便宜又大碗。某宝上几十块就可以买到。下面记录下hp 39gs上刷和使用newRPL系统的经验。</p>
<p>newRPL下载：<br />
下载newRPL rom <a href="https://sourceforge.net/projects/newrpl/files/" target="_blank">https://sourceforge.net/projects/newrpl/files/</a> 或 <a href="https://www.hpmuseum.org/forum/thread-14562.html" target="_blank">https://www.hpmuseum.org/forum/thread-14562.html</a><br />
下载39gs的rom，下载最新版本。<br />
下载 hp计算器的 Connectivity Kit<br />
<a href="https://www.educalc.net/1047482.page" target="_blank">https://www.educalc.net/1047482.page</a><br />
下载新版的usb驱动<br />
<a href="https://www.educalc.net/286482.page" target="_blank">https://www.educalc.net/286482.page</a> 注意是页面后面的链接<br />
安装Connectivity kit和新版的usb驱动。windows 10安装usb驱动会有问题，我找了一台windows 7系统安装刷机。</p>
<p>驱动安装正确后，用mini-USB数据线连接计算器和电脑，打开计算器，Connectivity kit应该会显示文件目录。</p>
<p>这样就可以开始刷newRPL系统了：</p>
<p><span id="more-1330"></span><br />
准备一个取手机sim卡的针，关闭计算器，按住hp 39gs的+和-两按键，用卡针捅一下计算器背后的reset，计算器会开机，选择1.UPDATE CODE,然后选择1.USB<br />
然后在Connectivity kit选择ROM Download那里选择下载好的newRPL .bin固件。然后就开始刷机了。刷机会清除计算器原来的系统和数据。完成后会提示你按一下ENTER键。</p>
<p>反应快很多</p>
<p>newRPL系统的使用入门</p>
<p>键盘和界面：<br />
<img class="aligncenter size-medium wp-image-1331" title="I2" src="http://www.cslog.cn/wp-content/uploads/2021/09/I2-720x433.jpg" alt="" width="720" height="433" /><br />
字显示小很多，可以一屏显示很多内容</p>
<p>新系统使用的按键布局不一样，新的布局与hp48gii或hp50g等比较接近，但不完全一样。这个帖子有专门为newRPL定制的贴纸，可以打印出来贴上去：<br />
<a href="https://www.hpmuseum.org/forum/thread-16487-post-146313.html#pid146313" target="_blank">https://www.hpmuseum.org/forum/thread-16487-post-146313.html#pid146313</a></p>
<p><img class="alignnone" src="https://www.transsys.com/images/newRPL/keypad7-600-dpi.png" alt="" width="600" height="600" /><br />
简单来说<br />
A-F对应第行菜单内容，菜单第一字母灰色的有下一级菜单，被选中会进入下一级菜单，按MENNU回到根菜单<br />
G-L对应第二区菜单，一般是显示变量名，按中直接调出对应位置的变量。<br />
方向键<br />
上下键可能移动箭头</p>
<p>三个切换键：<br />
ALPHA按键单击切换到大写字母输入，再次单击切换大小写，双击退出字母模式。<br />
Shift左和shift右不用解释<br />
这三个按键可以按住与其它按键组合实现更多功能。</p>
<p>基本使用<br />
rewRPL改变原来计算器的使用方法<br />
计算 1+2<br />
1，ENTER 屏上在输入1后会显示第一行1，这是最新的Stack栈。Stack是重要的概念。<br />
2, ENTER 输入2后，第1行变成2。第一行永远是最后输入的内容。原来的内容被移到2。<br />
+ 得到结果3， +这个命令会将前面两个stack的内容相加。得到结果3，直接放到当前的第1行Stack<br />
注意这种先输入数字，再输入操作的倒装语法方式。</p>
<p>有的命令只使用一个输入，如<br />
输入<br />
5, ENTER<br />
左shift, 2输入！命令，直接得到5！的结果120</p>
<p>可以不用每次输入ENTER，直接用空格分隔输入，如<br />
1 2 +<br />
也可以计算1 + 2</p>
<p>1 2 + 2 /<br />
可以计算<br />
（1 + 2）/2，得到 1.5<br />
留意命令在数据后面，结果变成新的数据的规则。</p>
<p>可以使用单引号直接输入代数形式的计算，如<br />
&#8217;1 + 2&#8242;<br />
输入后这个不会马上计算，可以使用EVAL命令计算它的结果，得到&#8217;2&#8242;<br />
注意结果也带引号，可以使用-&gt;NUM命令让它变数字。</p>
<p>将数值存到变量<br />
如，将123存到 x<br />
123 &#8216;x&#8217; STO<br />
注意x要带引号<br />
调用变量<br />
x 1 +<br />
直接得到124</p>
<p>编写程序：<br />
程序使用《 》符号包围：<br />
《 + 2 /》 &#8216;AVGRAGE&#8217; STO<br />
将求平均的功能存到AVGRAGE变量<br />
使用这个变量：<br />
1 2 AVGRAGE<br />
会直接得到1.5<br />
相当于输入：<br />
1 2 + 2 /</p>
<p>求勾股定理的程序：<br />
《 -&gt; x y &#8216;√(x^2+y^2)&#8217; 》 &#8216;hypo&#8217; STO<br />
使用：<br />
1 2 hypo<br />
得到&#8217;√5&#8242;<br />
可以使用-&gt;NUM命令让它变小数形式。</p>
<p>可以调用的命令很多，如IF/THEN/ELSE、CASE条件判断，FOR、DO、WHILE等循环。。。</p>
<p>更多的命令参看：<br />
<a href="https://newrpl.wiki.hpgcc3.org/doku.php?id=manual:chapter6" target="_blank">https://newrpl.wiki.hpgcc3.org/doku.php?id=manual:chapter6</a></p>
<p>快捷操作<br />
命令自动补完功能：<br />
在输入一个字符后，这个字符相关的命令会在底部中右显示，显示的命令按ALPHA+右方向键可以调用，更多的相关命令可以使用ALPHA+上或下方向键切换。</p>
<p>文本选择与复制、粘贴：<br />
左Shift，左方向键：定义选择开始<br />
左Shift，右方向键：定义选择结束<br />
左Shift+左方向键：复制<br />
左Shift+右方向键：粘贴<br />
左Shift+下方向键：剪切</p>
<p>插入变量的内容：<br />
G-L,直接调用变量<br />
右Shift+G-L，输入变量的文字内容<br />
左Shift, G-L STO存到变量 注意，原来内容被覆盖！！！不要误按（重要变量可使用LOCKVAR保护起来）<br />
右Shift, G-L RCL调变量</p>
<p>四种输入方式<br />
1.直接输入数字和命令，运行会直接得到结果<br />
2.&#8221; 代数模式：如&#8217;1+1&#8242;,输入后运行 EVAL会得到结果， 调用-&gt;NUM会得到数字结果<br />
3.《 》编程模式<br />
4.字母输入模式：按ALPHA后输入大写或小写字母，或插入双引号&#8221;"后。</p>
<p>菜单导航<br />
MENU 在菜单1区显示总菜单<br />
A-F进入相应菜单区1的项目<br />
右Shift, A-F在菜单2区显示子菜单<br />
右Shift+M 菜单2区返回</p>
<p>Stack栈的操作<br />
上方向键开始栈选择，ON键退出<br />
多选：移动第一个，按空格键（-)，移到最后个再次按空格键，第三次按空格取消选择<br />
选择后：<br />
左方向键：将当前栈移到1<br />
右方向键：将1移到当前位置<br />
左Shift+左方向键：复制<br />
左Shift+右方向键：粘贴<br />
左Shift+下方向键：剪切<br />
ENTER，将当前复制到1<br />
在没有stack被选中的情况下，按下方向键，开始编辑stack 1的内容</p>
<p>常用命令</p>
<p>变量:<br />
存储变量 42 &#8216;Mynum&#8217; STO<br />
调出变量 直接按G-L的相应按键或 &#8216;Mynum&#8217; RCL<br />
删除变量 &#8216;Mynum&#8217; PURGE<br />
锁定变量 LOCKVAR 将变量只读<br />
解锁变量 UNLOCKVAR<br />
从目录中移除变量快捷方式 HIDEVAR<br />
解除移除 UNHIDEVAR</p>
<p>目录:<br />
创建目录 &#8216;TEST&#8217; CRDIR<br />
删除目录 PGDIR<br />
返回上级目录 UPDIR</p>
<p>更多newRPL的资源<br />
newRPL的wiki网站：<br />
<a href="https://newrpl.wiki.hpgcc3.org/doku.php?id=manual:chapter1:rpl" target="_blank">https://newrpl.wiki.hpgcc3.org/doku.php?id=manual:chapter1:rpl</a><br />
hp 50g的高级用户手册（包含RPL语言教程与手册，英文）<br />
<a href="https://www.hpcalc.org/details/7141" target="_blank">https://www.hpcalc.org/details/7141</a>
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/hp-39gs-newrpl/">http://www.cslog.cn/Content/hp-39gs-newrpl/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/hp-39gs-newrpl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>怎样学快一点？论学习的速度</title>
		<link>http://www.cslog.cn/Content/learning-2/</link>
		<comments>http://www.cslog.cn/Content/learning-2/#comments</comments>
		<pubDate>Mon, 30 Aug 2021 17:16:47 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[成败几何]]></category>
		<category><![CDATA[我思我在]]></category>
		<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1327</guid>
		<description><![CDATA[不同的人学习不同的东西，有的人看一眼就学会了，有的人可能学习很久还是不能入门。是 &#8230; <a href="http://www.cslog.cn/Content/learning-2/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>不同的人学习不同的东西，有的人看一眼就学会了，有的人可能学习很久还是不能入门。是什么导致这样的差异呢？</p>
<p>我将导致学习速度的不同因素拆分，分为以下几个：</p>
<p>1。最明显的，投入真正学习的时间。很多人说想学什么想学什么，比如想学习英语，想学习乐器，问题是你真正投入时间了吗？还是只是一直在口头说说。没有投入真正的学习时间，说想的永远只是梦想或幻想吧。成功学上有一个10000小时原则。要真正掌握什么，真金白银地投入10000个小时学习啊。光说是没有用的，浪费口水而已。</p>
<p>2。学习时候的注意力。有的人虽然投入了学习的时间，但学习的时候没有集中精力，比如一边学习一边看电视，或者一边学习，一边心里想其它东西。这样的学习低效是可以预见的。这种三心二意的做事其实本身也是很浪费时间的，因为很可能做的想的二三件事都没能做好。有的时候人要取舍，选择在一个时间把一件事做好。</p>
<p>3。学习的材料，<span id="more-1327"></span>比如教材的质量，是否精心编排的教材。是否有形象的图示，是否有适当的影音辅助教学；教学的老师。好的老师最重要的是应该提起学生对学习内容的兴趣，其次是教学的方法，用适当的方法让学生容易掌握这些学习内容。当然自学的话自己就得找到好的材料，好的方法。学者在学习遇到瓶颈时，可以试着换换学习教材，学习方法，或老师。</p>
<p>4。相关联的基础知识。学习者在学习新东西的时候，事行应该掌握这些新内容的前提基础知识。如果基础知识扎实，学习新内容就比较快；相反，如果很多基础知识都不懂，那新知识听起来很可能就云山雾罩，不明所以。比如让一个小学生去听大学的专业课程，几乎就是白费时间。如果你学习一个东西，发现很基础概念或原理都不明白，那就说明当前的知识对你来说太进阶了。这时候应该怎么办？你应该退出这个课程，去找一个基础的，适合自己的课程去学习基础，学会了再回来。这里说一个我自己的实例。当年我在初中二年级时，因为当时学校条件差，当时的英语老师精神有问题，在课堂上所有的学生都没能好好学习，上英语课时好多学习到讲台上和老师嬉戏，所以我的初二英语没有学好，期末考试时100分只考了20多分，其中大多是选择题选C蒙对的。初三时我意识到这个问题，想学好英语，但因为没有英语基础，初三课堂上老师的课程对我来说太难了，很多听不懂，于是我放弃了课堂学习，开始自己买英语教材从入门学习英语基础。自学了一年，终于将英语基础补了上去。中考150分的英语，考了130多分，高中时因为英语成绩不错，还当上了英语科代表。</p>
<p>5。大脑的开放性。这个说的是世界观，是否认识到这个世界你不懂的非常多，不骄傲，而是应该时时虚心学习，做到求知，并虚心。和他人相处的时候，随时明白对方可能是自己的学习对象。而不是到处炫耀自己的才识。一心不能两用，当一个人忙于炫耀与表现的时候，他自然就失去了很多接收和学习的机会。你可以做一个永远装知识的袋子，你的知识会越装越多；也可以做到处吹泡泡的肥皂水，越吹越少。拉长时间来看，对人的一辈子来说，其实心态这个因素对人是最重要的，虚心的人累积下来，知识越来越多。前面几个因素只是影响学习的速度。</p>
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/learning-2/">http://www.cslog.cn/Content/learning-2/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/learning-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>谈学习之学习的目的</title>
		<link>http://www.cslog.cn/Content/learning-1/</link>
		<comments>http://www.cslog.cn/Content/learning-1/#comments</comments>
		<pubDate>Sat, 07 Aug 2021 05:00:19 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[成败几何]]></category>
		<category><![CDATA[我思我在]]></category>
		<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1321</guid>
		<description><![CDATA[我从小好学。可惜条件不好，学习之路磕磕碰碰，导致到现在也没成啥大事。但我还是喜欢 &#8230; <a href="http://www.cslog.cn/Content/learning-1/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>我从小好学。可惜条件不好，学习之路磕磕碰碰，导致到现在也没成啥大事。但我还是喜欢学习，并从学习中得到快乐，就如天真孩子一样，我为此感到幸运。我准备花时间跟大家分享一些关于学习的心得。这是第一篇。</p>
<p>谈学习的目的</p>
<p>正如做其它事一样，学习的第一要点是动机。有充分的理由学习才会投入时间、精力认真去学习。学习的理由可以是兴趣。喜欢什么东西去学习什么自然是很好的，你会自觉的投入时间精力。不过由此去学习的问题是学习到的知识并不一定有实际的用途。注意知识如果不用，是会被遗忘掉的（这个不是大脑的缺点，而是一功能，因为大脑的容积有限，遗忘就如手机的内存清理，清除不常用的内容，会留下更多的空间可以储存更实用的东西）。是不是现在不用的东西就不能学的，<span id="more-1321"></span>其实不是的。因为有时候一种知识在你没有熟悉或掌握之前，你并不知道它有什么用，怎么用，或许你学了，知道了用法，你就会去用它，并为你创造价值。比如本来是没想过学习瑜伽，只是因为一时的兴趣，你学习了，发现它很好，自己喜欢，而且对身体很有作用，你甚至转行成为了一个瑜伽教练，想把它教给更多的学员。或许在接触这个知识前，你没有想过可能自己会做这么大的改变。这就是因兴趣学习的惊喜。总之，因为兴趣去学习，有时候是单单享受学习过程的快乐（或痛苦？），结果知识不用而被遗忘，或者学习了新知识后，因为新知识带来的新视界，改变了自己的人生轨迹，两个都有可能。总结：有时候学了才知道有什么用，有时候学了才知道没啥用。如果有兴趣又有时间，与其刷抖音，不如学学看。</p>
<p>学习最靠谱的理由是马上需要用到知识。类似于临阵磨枪。这种学习有急切的紧迫感，而且已经清楚学到了就要用上，不会浪费。</p>
<p>学习最不靠谱的理由是别人都在学，或者别人让你学，因为这些学习都不是自己由衷的想要学习。这样的学习没有内动力。不单是学习，做任何事没有内动力，靠外力的学习基本都是事倍功半，吃力不讨好。自己不单不享受这一敷衍过程，而且学习效率十分低下，学到的知识也大多数对自己没有作用或不愿意去用，浪费时间、精力与生命，甚至金钱。如果你是老师或家长，以命令的形式向孩子发出的学习要求，就是这种情况。监督的家长也将是痛苦的要命。这时候应该怎么办？当然是停止这一多输过程。这是一小道，成功的概率很小。正道是什么，是引导学习者找到学习的正确目的。让他悟的学习的理由，是为了兴趣，还是为了马上要用到知识（中小学的基础知识可以为将来更多的高级知识打基础，打开学生的眼界，还可以用来应付必须的考试）。花更多的时间让学习者明白学习的理由，比花时间监督心不在焉的学习过程高效多了。就如武学中的打通任督二脉，或者参禅中的悟道，过了这关，让学习者明白学习的理由，有了内动力，余下的基本就是一马平川，过了不了，所有的努力只是徒劳的消耗时间。</p>
<p>无论如何都找不到学习的理由怎么办？那就不要学啊。没有理由还做什么？可以把时间花在其它有意义的事上。或者转变题材，学习自己感兴趣的课题上。人生不是一条直线，非要吊死在一棵树上。与其在不想学的东西上浪费时间，为什么不学习一些自己感兴趣的东西呢？不是说别人学的东西自己一定要学习，现在的社会内卷的这么利害，如果剑走偏锋，自己掌握了大多人没有的知识，反而让自己更为稀有，具有更高的价值。这就是管理学上的差异化吧。
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/learning-1/">http://www.cslog.cn/Content/learning-1/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/learning-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>将小爱同学（小米AI音箱）接入Home Assistant（基于红外遥控器）</title>
		<link>http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/</link>
		<comments>http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/#comments</comments>
		<pubDate>Fri, 02 Feb 2018 11:39:08 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[人工智能]]></category>
		<category><![CDATA[homeassistant]]></category>
		<category><![CDATA[小米]]></category>
		<category><![CDATA[智能家居]]></category>
		<category><![CDATA[树莓派]]></category>
		<category><![CDATA[硬件]]></category>
		<category><![CDATA[遥控器]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1316</guid>
		<description><![CDATA[小米音箱（小爱同学）做的不错，但是目前功能上还是有很多限制，比如不能启动电脑。H &#8230; <a href="http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>小米音箱（小爱同学）做的不错，但是目前功能上还是有很多限制，比如不能启动电脑。<a href="https://home-assistant.io/">Home assistant</a>是一个开放的智能家居平台，集成非常多的<a href="https://home-assistant.io/components/">模块</a>，比如<a href="https://home-assistant.io/components/wake_on_lan/">Wake on LAN模块</a>就可以实现通过网线唤醒电脑的功能。可惜目前不能通过小米音箱直接连接Home Assistant。好在小爱同学兼容自家的万能遥控器，我们想到了把Home Assistant设备变成一个遥控终端，通过一个红外万能遥控器和一个红外接收器做为一个桥接中介，实现小米音箱间接控制Home Assistant平台的目的。本文参考了<a href="https://bbs.hassbian.com/thread-2404-1-1.html">这个教程</a>。</p>
<h2>需要的东西</h2>
<p>运行Home Assistant的设备（电脑、NAS、树莓派等，我用的是树莓派2代）<br />
红外接收器（我使用的是一个通用USB接收器，树莓派用户可以DIY一个）<br />
<a href="http://item.mi.com/1144200006.html">小米（创米）万能红外线遥控器</a><br />
<a href="https://www.mi.com/aispeaker/?cfrom=search">小米AI音箱</a></p>
<h2>给Home Assistant设备添加红外遥控接收功能</h2>
<p>将红外接收器连接到home assistant设备上。确认红外设备存在，如<br />
<code><br />
pi@raspberrypi:~ $ ls /dev/lirc0<br />
/dev/lirc0<br />
</code></p>
<p>安装<a href="http://www.lirc.org/">红外线收发lirc程序</a>：<br />
<code><br />
pi@raspberrypi:~ $ sudo apt-get install lirc liblircclient-dev<br />
</code></p>
<p>测试红外线接收功能正常：<br />
<span id="more-1316"></span><br />
<code><br />
sudo mode2 -d /dev/lirc0<br />
</code><br />
运行上面命令后找一个红外遥控器对着接收器按任意键，应该可以收到类似这样的字符：<br />
<code><br />
Using driver default on device /dev/lirc0<br />
Trying device: /dev/lirc0<br />
Using device: /dev/lirc0<br />
Running as regular user pi<br />
pulse 2750<br />
space 750<br />
pulse 550<br />
...<br />
</code><br />
好，现在Home Assistant设备可以接收到红外遥控信息了。下一步，让Home Assistant和红外遥控器可以通信。</p>
<h2>让Home Assistant接收红外遥控数据</h2>
<p>随便给lirc指定一个接收的遥控器数据表，这里用的是xbox360的遥控器，你不需要有这个遥控器，因为后面可以用小米万能遥控器把它模拟出来。<br />
下载xbox360遥控器的数据表,把它设置到lirc:<br />
<code><br />
pi@raspberrypi:~ $ wget http://lirc.sourceforge.net/remotes/microsoft/Xbox360<br />
pi@raspberrypi:~ $ sudo mv Xbox360 /etc/lirc/lircd.conf<br />
</code></p>
<p>创建/etc/lirc/lircrc文件，内容：<br />
<code><br />
begin<br />
remote = Microsoft_Xbox360<br />
button = KEY_STOP<br />
prog = home-assistant<br />
config = KEY_STOP<br />
end<br />
begin<br />
remote = Microsoft_Xbox360<br />
button = KEY_PAUSE<br />
prog = home-assistant<br />
config = KEY_PAUSE<br />
end<br />
</code><br />
这里只以两个按键为例子，参看上面/etc/lirc/lircd.conf的内容，你可以多添加几个按键。</p>
<p>重启lirc<br />
<code><br />
pi@raspberrypi:~ $ sudo systemctl restart lircd.service<br />
</code></p>
<p>现在在米家app给小米万能遥控器添加Xbox360遥控器（使用搜索功能添加，里面有两个，我添加的是“微软DVD播放器”那个），现在测试<br />
<code><br />
pi@raspberrypi:~ $ ircat home-assistant<br />
</code></p>
<p>按遥控器上的停止按键，应该会收到相应的代码。<br />
<code><br />
</code><br />
现在米家app可以给home assistant设备发信息了，下一步要做的是根据这个信息，触发不同的动作。</p>
<h2>Home assistant根据遥控器指令触发动作</h2>
<p>编辑 HomeAssistant 的configuration.yaml文件，加入<a href="https://home-assistant.io/components/lirc/">lirc组件</a>，<br />
<code><br />
lirc:<br />
</code><br />
配置home assistant的自动化指令：<br />
<code><br />
automation:<br />
- alias: 打开灯<br />
trigger:<br />
platform: event<br />
event_type: ir_command_received<br />
event_data:<br />
button_name: KEY_PAUSE<br />
action:<br />
service: homeassistant.turn_on<br />
entity_id: group.a_lights<br />
</code><br />
上面的KEY_PAUSE就是刚刚配置的遥控器按键。action可以换成你想要的效果，我是帮来它来启动我的电脑了。重启homeassistant,让配置生效，现在对着树莓派按暂停播放键，就Homeassistant就会触发相应的动作了。</p>
<h2>让小米AI音箱控制万能遥控器</h2>
<p>先打开米家app，在底部点选“智能”，在“我在”tab中点右上角的“+”号创建新智能条目，在选择条件界面选择“手动执行”，选择“小米万能遥控器”-〈遥控模式〉-〈微软DVD播放器〉-〈暂停/播放〉-〈右上角“确定”〉设置你想要的名称，比如“启动电脑”<br />
好了。打开小米AI app，在底部点选“技能中心”-〈小爱训练计划〉-〈创建训练〉-〈为问题命名，比如“启动电脑”〉-〈设备控制〉-〈选择刚创建的“启动电脑”〉-〈打开〉，预览后保存。<br />
（相关的图文教程<a href="http://bbs.xiaomi.cn/t-13957311">点这里</a>）</p>
<p>好了。现在对着小米同学说“启动电脑”，小米音箱会指示小米万能遥控器发送一个KEY_PAUSE按键，这时home assisant收到后，就会触发启动电脑的动作了。</p>
<p>参看：<a href="https://www.hackster.io/austin-stanton/creating-a-raspberry-pi-universal-remote-with-lirc-2fd581">Creating a Raspberry Pi Universal Remote With LIRC</a><br />
另一种通过第三方平台桥接小爱同学和home assistant的方法： <a href="https://bbs.hassbian.com/thread-2404-1-1.html">https://bbs.hassbian.com/thread-2404-1-1.html</a>
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/">http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
