Bayesian Personalized Ranking Loss
BPR的思想是给定一个由用户,正向物料,随机采样的负向物料组成的三元组 ,针对用户 的正确排序(将 排在 前面)的概率是 ,BPR Loss就是要 :-> 将这一正确排序的概率最大化。
由于 对应的真实label永远是1,因此将 代入Binary Cross-Entropy的公式,得到BPR Loss如公式(5-14)所示,符号含义参考公式(5-13)。
Bayesian Personalized Ranking Loss
BPR的思想是给定一个由用户,正向物料,随机采样的负向物料组成的三元组 ,针对用户 的正确排序(将 排在 前面)的概率是 ,BPR Loss就是要 :-> 将这一正确排序的概率最大化。
由于 对应的真实label永远是1,因此将 代入Binary Cross-Entropy的公式,得到BPR Loss如公式(5-14)所示,符号含义参考公式(5-13)。
示意图 #card
优点 #card
缺点 #card
如何定义正样本,即哪些q和t在向量空间内应该相近;
取决于不同的召回场景
I2I召回。 q 和 t 是物料。 #card
U2I召回。 是用户, 是物料。#card
U2U召回。 和 都是用户。#card
如何定义负样本,即哪些q和t在向量空间内应该较远;#card
[[负样本主要靠随机采样]]
hard negative
如何将q和t映射成Embedding;#card
如何定义优化目标,即损失函数。#card
多分类的Softmax Loss,只要求把正样本的概率值预测得越高越好。正样本来自用户真实反馈,负样本往往未曾想用户曝光过。
nce loss
Sampled Softmax Loss
LTR 思想,把用户喜欢的排在前面,最求排序的相对准确
Pairwise Loss
[[Marginal Hinge Loss]]
额外建立了一个 向量缓存 ,存储物料塔在训练过程中得到的最新的物料向量。
如何采样 #card
在训练每个Batch的时候,先进行Batch内负采样,同一个Batch内两条样本中的物料互为Hard Negative
额外从向量缓存采样一些由物料塔计算好的之前的物料向量 b,作为Easy Negative的Embedding
尽管在一个Batch内热门物料比较集中,但是向量缓存汇集了多个Batch计算出的物料向量,从中还是能够采样到一些小众、冷门物料作为Easy Negative的。所以,混合负采样对物料库的覆盖更加全面,更加符合负样本要让召回模型“开眼界、见世面”的一般原则。
图3-1 推荐系统的“评分卡” #card
tf.keras.layers.Embedding 用法 #card
1 | import tensorflow as tf |
独占 embedding 例子 #card
[[@CAN: Feature Co-Action for Click-Through Rate Prediction]] 的目标有两个:像FFM那样,让每个特征在与其他不同特征交叉时使用完全不同的Embedding;不想像FFM那样引入那么多参数而导致参数空间爆炸,增加训练的难度。提出的特征交叉结构 #card
总结下来,PS训练模式是Data Parallelism(数据并行)与Model Parallelism(模型并行)这两种分布式计算范式的结合。
数据并行。#card
模型并行。#card
推荐系统中的特征数量动辄上亿,每个Embedding又包含多个浮点数,这么大的参数量是单个节点无法承载的,因此必然分布在一个集群中。
接下来会讲到,由于推荐系统中的特征高度稀疏的性质,一轮迭代中,不同Worker节点不太会在同一个特征的参数上产生冲突,因此多个Worker节点相对解耦,天然适合模型并行。
[[向量召回]] 基本流程 #incremental #card
(1)训练一个模型 ,将 中的每个实例 和T中的每个实例 都映射到同一个向量空间。
(2)将T中几十万,上百万个实例喂入模型M,映射成向量。再把这几十万,上百万个向量灌入Faiss或Milvus这样的向量数据库,建立索引。
(3)在线服务时,对于一个Q类的实例 ,通过模型M将其映射成向量 。再在向量数据库中,通过近似最近邻(ANN)搜索算法,查找与 最近的 个 类的邻居向量 。这些邻居向量对应的 作为召回结果返回。
部分内容来源于文章 [[fm:推荐算法中的瑞士军刀]]
[[AutoInt]]
DIN实现了用户兴趣的“千物千面”,但是仍有不足,就是它只刻画了候选物料与序列元素的交叉,却忽略了行为序列内部各元素之间的依赖关系。对用户行为序列建模的方法是采用双层Attention#card
+
产品是什么?#card
产品定义中的重点?#card
1.商业价值;
2.功能集合
化重点:「商业价值」,所以说没事少脑补一些有的没的,什么是“好”的产品,“好”的产品是能经过商业市场检验,能活下来,活的好的产品,而不是乱七八遭各种脑补功能、需求和需要的产品,一切产品不以商业价值为目的的产品,在当今社会是不能称作为“好”产品
产品思维是什么?总体是以下五个部分:
1、需求识别思维#card
2、供给思维#card
3、商业匹配思维#card
4、说明书思维#card
5、迭代思维#card
PM的核心技能又是什么?#card
1、产品设计:了解用户需求,挖掘产品机会,设计出合理的产品架构,实现产品的有效开发
2、技术管理:熟悉互联网技术,掌握产品开发流程,控制产品开发进度,确保产品质量。
3、 市场营销:了解市场趋势,分析用户行为,推广产品,提升产品知名度。
4、 项目管理:组织项目团队,制定项目计划,控制项目进度,确保项目顺利完成
5、数据分析:分析用户数据,挖掘产品机会,改进产品设计,提升产品体验
主流产品岗位要求#card
1~3年的岗位,公司看中的是基础技能,如竞品分析、原型设计、文档撰写、需求落地等基本功;
而3~5年的岗位,公司看中的则是偏产品架构、商业化的能力,如产品战略规划、商业思维等等
能力
行业洞察的能力#card
快速了解一个行业,因为如今跨行业趋势已经越来越明显。这就要求公司内的员工要具备跨行业工作的知识储备、视野和能力。
不仅仅是要快速了解行业,更重要的是能在一个行业有深刻的认识和积累,并深刻洞察行业发展趋势及脉络。
如果把每个细分行业比作一条赛道的话,那产品经理就该这样给自己提问:这个行业的市场规模有多大?(赛道规模)这个行业发展趋势如何,未来5年是一个什么走向?(赛道趋势)目前有哪些行业玩家,它们都是怎么布局的?(竞争情况)在这个赛道,我们有什么积累和竞争优势?(优势分析)
只有当你能清晰明了地回答上面几个问题,才能在关键时刻做出更有利于公司业务的产品决策。
用户洞察的能力
很多方法论把“用户洞察”等同于“用户研究与分析”,提倡通过大数据分析来掌握用户动态,以用户画像代替具体的个体来指导业务走向。#card
用户洞察与用户研究不同,用户洞察更把人当作人,而不是数据或者指标。#card
商业化的能力#card
16年左右整体行业的诉求是「增长」;而这两年,可以很明显的感觉到各个公司的商业化速度都在加快,所以行业的诉求又变成了「商业化变现」。
整个行业从来没有像现在这样渴望赚钱。这里面当然包含了多重因素,一方面是本身行业的周期发展,另一方面,疫情其实也加速了这个过程。于是,你会看到能帮着企业赚钱的产品经理(包括任何岗位)越来越值钱了。
产品规划的能力#card
当你对行业有了一定的洞察,对用户有了深刻的了解,又掌握了不错的商业化变现思维和能力,这个时候最重要的就是产品规划的能力了。
所谓产品规划,就是你能站在公司战略角度,结合行业现状、业务现状,制定出产品下一个阶段的重点目标,并规划出一个最合理、投入产出比最高的产品路线图,告诉大家我们接下来一个季度、接下来一年到底该怎么干、到底该干什么。
初阶和高阶产品的一个很大的分水岭,也是产品规划能力。前者更多的是一个支持的角色,后者则是整个产品团队的指挥官,是产品核心方案的策划者。
对于很多人来说确实不太容易。既要懂行业、又要懂用户、还要会商业化思考、产品规划能力。每一项技能和思维的打磨,都需要付出大量的心血,绝不是一时之功。
但是这些都是一个「产品」本应该去做的,甚至说是本来应该有的技能,天天被骂主要是因为各个方面都会缺失,初阶的都做的不好,更不要提高阶的「规划能力」了。
方法论本质是解决问题的工具,具备标准化、系统化和可复用性的特点。是通过总结、抽象日常过程和细节,创建一套标准、系统、可复用的理论方法以解决特定问题。#card
1、标准化能少走弯路,而标准的产品方法论不仅可以让我们按部就班地执行任务,还能提高工作效率和减少错误率。
2、系统化可减少遗漏,帮助我们有序地展开思路,从而避免因考虑不周而导致问题遗漏。
3、可复用能提高效率。避免重复造轮子,提高解决问题的效率。
产品方法论
大致上在 PM 岗位上的产品方法论主要有三种类型,分别是:理解问题,分析问题,处理问题
1、「理解问题」需要运用逻辑理论类方法论 #card
逻辑理论的主要作用有两个:
一是避免陷入思维陷阱;
二是辅助进行思维延伸。
例如
在投入太多、不舍得退出的情况下,我们可以考虑沉没成本的概念;
在制定产品战略时,我们可以考虑要投入多少才能实现最大的边际效应;
在寻找目标用户时,我们可以考虑长尾理论,像拼多多一样将下沉市场部分考虑进去。
还有很多类似的理论逻辑,有时候,我们可能对某个问题只有模糊的概念,通过学习和应用这些理论逻辑,能让我们的思路更加清晰,更加深入理解问题的本质
2、「分析问题」需要运用分析框架类方法论 #card
3、「处理问题」需要运营解题思路类方法论 #card
一、如何构建方法论 #card
我们可以通过学习他人方法论和自己总结方法论的方式来构建方法论,也可以通过对比分析他人的方法论来梳理自己的方法论,然后在实践中改进。也可以在实践中总结自己的方法论后,去参考借鉴他人的方法论来改进完善自己的方法论,「既要读万卷书 ,也要行万里路」。
能够直接被吸收的方法论普遍为「逻辑理论」和「分析框架」。这些方法论虽然可以被直接套用,但最好还是要有自己的理解,并在具体场景下进行微调。方法论可以提供思路,但最终的「思考」还是需要自己去完成。
而「解题思路」这类方法论,因为每个人的实际情况不一样,所以能在大部分场景通行的方法论并不多见。更多的还是由个人总结的方法,比如产品经理的工作流程,虽然各个团队整体大致相同,但具体落实到不同文化、类型、规模的公司都会有不同的产品工作流程。
面对同一类问题,不同人的解题思路应该取其精华去其糟粕,融合改进。虽然改进后的解题思路会更全面,但仍然存在许多没有考虑到的问题。因此,吸收他人的解题思路需要根据个人情况和使用场景不断思考、实践和复盘,才能真正将其变成自己的东西。
如果不经过这个过程,不经思考的套用别人的方法论,最后只会是效果差强人意。俗话说:“学我者生,似我者死”。学习和应用产品方法论也是如此。
二、如何总结自己的方法论? #card
自己总结解题思路的步骤分为四步:计划-执行-调整-复盘
首先,通过制定详细的计划,将整个解决问题的过程分解成可行的步骤,确定每一步的时间和资源需求,以及对应的实现策略。
其次,依照计划执行,在过程中不断地检查进度和达成目标,遇到问题及时调整方案。第三步是调整,即对已有方案的进一步完善和改进,充分发挥自己的想象力和创造力,找到解决问题的最佳路径。
最后一步是复盘,对整个过程进行回顾,反思过程中可能出现的问题以及未来应该注意的地方,为后续的解决问题积累经验。
这个四步的解题思路,不仅仅适用于个人解决问题,同样适用于团队协作解决问题。通过遵循这个步骤,可以使团队成员的工作更加高效,团队更加协调和有序,同时也可以帮助团队充分挖掘潜在的解决方案。
方法论总归只是理论,构建好产品方法论只是开始,最终的目的还是要将其用于实践当中,读万卷书和行万里路是相辅相成的。正所谓,学而不思则罔,思而不学则殆,学习他人理论但不实践思考就会迷惘而无所适从,而单纯的实践思考,但不去学习新的知识就会逐渐懈怠,故步自封。#card
因此,自己「反思」(复盘)工作,和学习他人工作经验都很重要,只有俩者同步进行才能让自己的产品方法论不断优化完善。
仅仅理解产品工作内容学到的知识是死的,只有了解工作流程之间的联系并勾通应用场景才能做到活学活用产品知识。因此,我们需要在实践中不断总结经验,加深对于产品知识的理解和掌握,才能在实际工作中更好地应用所学的知识。
我们只需要熟悉知识框架结构,并记住知识的概念和作用即可。具体的应用方法和技巧80%都是不用记的,只需通过反复调用20%的常用内容以达到记忆和熟练应用的效果。
很多产品经理只注重结果,只知道按照流程去完成任务,却缺乏自己的独立思考能力,这样做的话只是能完成工作,而不能做好工作。任何产品经理在工作一段时间后都能够成功地落地一个产品,但不是每一个产品经理背后都有一款成功的产品,而成功的产品是产品经理晋升的最佳资本。
因此,流程只是达成目标的工具,产品经理的工作应该以目标为导向。
虽然我说了很多关于PM的事情,其实所有岗位的思路、甚至是学习、阅读等等的思路框架都是相同的。在完善自身「知识体系」的同时,也要更要践行“[[读写说教]]” #card
你会「读」,不见得你会「写」;你会写不见得你会「说」,你会说不见得你会「教」;你读写说都会,你「教」不了不懂的人,说明你自己不是真的「会」,如果真的「会」,你都「教」不了不懂的人?
“读写说教”是一个流程也是一个最基本的逻辑。简明扼要的表述,让不懂的人也能理解,这是个比较高阶的水平段位,在此互勉,学以致用。
“产品思维”是每个互联网从业者都会高频听到的词汇之一,但“产品思维”绝不应简单理解为产品经理的思维,其重点是「产品化」的思维模式。
我们常用“产品思维”作为一种idea或方案的评判标准,而不是将某个“产品经理”的想法视为「产品思维」。
一、为什么需要产品思维???#card
优秀的思维模式能够很好地还原和预测物理世界的真实规律。而在一个完整的软件产品开发周期里,会出现三种标准模型。
1、实现模型:代表研发工程师开发产品的代码模式。比如是云端服务,还是混合服务;是用分布式架构,还是集中式架构;是用机器学习等等
2、呈现模型:代表工程师(包括PM和QA)设计的产品功能界面及系统。好的呈现模型能做到和用户的心理模型基本一致,差的呈现模型会和实现模型没什么两样。
3、心理模型:代表真实用户使用产品时的心智模型及操作预期。有些模型是对现实生活的投影,比如:看到手推车的图标,知道是选购商品的清单;浏览照片时,知道左右滑动可以翻看下一张照片。还有一些模型是由主流产品培养出来的,比如:下拉内容列表刷新内容;扫描二维码打开网页或APP;滑动接听电话等等
那么结合现实的分工情况,“呈现模型”就是「产品思维」的一种投影和落地;相应的,实现模型和心理模型分别对应技术思维和用户思维
所以好的「产品思维」能把呈现模型变成用户和技术之间的最佳桥梁,所以怎样强调产品思维的重要性都不为过。如果你做不了这个桥梁,那么对不起,你不仅被各部门骂还是个废物,不配叫做「产品」
二、什么是产品思维???
产品思维本质上是一种「实现思维」,它天然存在理想和现实的矛盾性。#card
正如我们无法脱离用户和开发的角度去描述“产品”本身的好坏。
如何对产品思维下一个完整的定义,需要我们先理清它与“用户思维”和“技术思维”之间的关系。
用户思维本质是一种「需求」思维(注意,这里不是「需要」),即“我”需要得到什么样的服务或则体验。特点如下:#card
A,是一种个人主观视角;
B,聚焦某个具体场景,追求细节;
C,对时效性的要求更高,很少有用户愿意为未来的长期收益买单;所以是「需求」并不是「需要」
D,关注反馈,而非预期;
E,习惯使用“快思考”(参见《思考,快与慢》中的“系统1”)
最典型的例子是大多数产品的用户反馈都是希望添加新功能,而每个人在其描述的立场都是非常合理的。#card
以微信为例,很多人提议希望能收到删除好友的通知,而不是等到自己发消息时才尴尬地发现消息已无法发出。
站在被删除用户的角度上,他的提议是合理的;站在主动删除好友的角度上,现有的模式又是更得体的。
所以,用户思维不是一种普世思维,它是个体在某个场景下的思考方式。
更有意思的是,真实的产品用户一般不会主动提及“用户思维”,这个词往往在产品或市场内部被广泛传播,其目的是设定产品边界,避免没有价值的设计,是“[[同理心]]”的另一种表达方式。#card
技术思维本质上是一种「成本思维」,即“我”需要付出什么样的资源来达到既定目标。特点如下:#card
A,是一种系统视角;
B,聚焦通用性;
C,对未来的可扩展性要求高,而不是功能细节上的瑕疵;
D,关注功能的边界场景大于常规场景;
E,习惯抽象和数字化一切实物;
最典型的例子是需求评审会上开发经理和产品经理的各种争端:#card
开发人员骂产品缺少“技术思维”,其实在研发视角里,真正的特例是极端条件下的输入和输出,而不是大客户。#card
「技术思维」的最佳实践是用最少的技术成本实现最大的吞吐量,同时还能随着系统负荷地增加保持稳定。
相比之下,产品界面是否难看,功能是否易用,都属于「次优先级」的目标。
和“用户思维”类似,开发人员很少主动提及“技术思维”。而且开发人员理解的“技术思维”往往是更偏向于专业性的编码思维。“#card
技术思维”一般是产品内部用来权衡ROI的部分论据,
当然也有更高阶的产品经理会把“技术思维”贯穿在自己的产品设计里面,比如对未来产品功能的可扩展性和复用性的考虑。
id:: 67013df2-e702-4916-83bb-ef6e78b6cfdb
产品思维#card
产品思维是平衡“需求”和“成本”的链接器,是一种“实现”思维。特点如下:
所有的商业产品都是产品思维的最佳体现。无论是实物商品,还是软件应用,用户都会用脚投票,让那些真正具有产品思维的团队获得商业上的延续。
高级的「产品思维」往往会将日常需求抽象到人类的顶级需求。
而对需求的理解程度取决于产品思维对需求源动力的抽象高度。而且来自用户侧的需求描述,往往视角较低,正如福特说“客户只想要更快的马车”,而不是福特重塑汽车工业通过流水线生产的T型车。
需求溯源的方式和路径有很多,比如Musk追求“第一性原理”,站在工程师的角度去解构现实问题;也有常见的“5 Whys”式提问法,通过层层逻辑递推得到根本原因;也可以通过“5W”的原则,再现需求的真实场景;互联网产品一般通过user story的方式,把需求发起方,功能和目的串联在一起。
当然并不是所有的产品都需如此,很多工具产品只是为了解决个人生活或工作的效率问题。强行拔高没有必要,也没有任何意义。但是溯源本身是非常有价值的,一个是认清需求背后的动机;一个是挖掘需求共性,增加产品单位投入辐射的用户数量。
产品思维是被海量产品决策培养出来的「平衡术」。大到产品商业化的主赛道,未来一个季度的营收目标;小到产品界面的按钮颜色,页面的加载效果,这些都是「产品思维」在权衡背后的利益体后做出的决策。
归类到底,产品经理的大部分决策是在多个维度去平衡产品目标和用户需求。
在中文互联网世界中,每天都有一亿的用户在教张小龙怎么做产品,但是微信一直都坚守着自己的迭代路径和产品目标。所以做产品就是回归商业的本质 —— 平衡供需关系。
当然,从用户角度、从产品角度、从商业角度各个不一,取决于什么屁股什么脑袋。如果一个产品盲目追随用户的声音,会变成一个什么都有的四不像(从用户端来看,你提的「需求」问题能有1%被产品重视就很不容易了);如果一个产品一味追求产品目标,比如商业价值,它会变成被用户唾弃的垃圾应用(比如做黑灰产的产品)。
@世界的参数倒影:为何GPT通过Next Token Prediction可以产生智能
链接: 世界的参数倒影:为何GPT通过Next Token Prediction可以产生智能 - 知乎
如果我们把“章鱼测试”里的章鱼换成ChatGPT或GPT 4,您会怎么看这个问题呢?也就是说,下述两种观点,您支持哪一种呢?
一种观点与“章鱼测试”看法类似,认为GPT 4这种LLM模型仅仅学会了语言中的单词共现等浅层的表面统计关系,其实并未具备智能,只是类似鹦鹉学舌的语言片段缝合怪而已;#card
另外一种观点则认为:GPT 4不仅学会了语言元素间的表面统计关系,而且学到了人类语言甚至包括物理世界的内在运行规律,文字是由内在智能产生的,所以LLM具备类人智能。#card
@曾经火热的Graph Embedding和GNN在推荐系统上还有前途吗?
链接: 曾经火热的Graph Embedding和GNN在推荐系统上还有前途吗? - 知乎
[[GNN的收益来源是什么?]] :-> 信息利用能力的增强
[[GNN对拓扑结构的利用,对于推荐系统的收益够不够大?]]
有的朋友可能会说,我们把用户和物品之间的行为也加入图中,不久可以把知识、行为和图结构一起编码了吗?#card
看起来会让生成的Graph Embedding包含更充分的信息,推荐效果肯定会有提高。
这个分析是有道理的,早期Pinterest也通过这一方式获得了收益,但这种超大规模的图训练也存在一些致命的问题。[[GNN在实际应用中的一些致命问题]]
关于技术更迭的思考
站在工程师的角度,我们要有火眼金睛,敏锐的分清哪些是看上去很美的方案,哪些是一针见血的方案,它们之间是有本质不同的。
最重要的判断依据还是对于收益来源的精准分析。这里面有理性的成分,也有技术直觉的成分。玄学一点来说,这种直觉才是算法工程师应该建立的护城河。
就像“击败雅虎的不会是另一个门户网站,击败google的也不会是另一个搜索引擎”一样,淘汰一个技术的也不会是它的下一版,而是另一个维度的新方案。
大模型毫无疑问在知识的广度和利用能力上,大大超出基于知识图谱的GNN,也就当之无愧的成为推荐系统新的更强大的信息输入源。
对于行为信息比较丰富的推荐系统来说,比如说抖音、小红书,其大量的用户行为之间的协同关系就可以充分表征内容的相似性了,#card
它不再那么需要知识本体和属性间的连接来补充这种相似性。
更何况,现在主流的推荐系统也已经通过直接添加特征的方式学习过知识图谱包含的知识了,由GNN提供的增量就更加微不足道了。
另一方面,对于一些纯知识性的推荐系统,比如说豆瓣、IMDB、知网等,#card
这些网站中知识的链接是非常重要的,知识间二度、三度的关联也是有价值的。
而且它缺乏足够多的用户互动信息来覆盖表达物品之间的相似性,那么GNN就是有价值的。
首先,实事求是的讲,主流的深度学习训练框架对于图数据的训练并不友好。#card
我们是可以通过一些工程手段讲图数据转换成序列数据进行处理,但这需要比较重度的投入。
而且由于要维护整个知识图谱的拓扑结构并在其上采样,GNN的训练成本往往很高,进一步增加了工程投入。
其次,GNN训练得到的Graph Embedding的实时性比较差,它的训练也无法做到目前主流深度学习模型的实时更新。#card
因此GNN不可能作为推荐主模型来使用,只能把生成的Graph Embedding用于召回和特征输入。这让GNN的重要性大打折扣。
在深度学习推荐系统早期,大家的实时性都比较差,训练成本没有打下来的时候,GNN还有一定的优势,但如今主流的推荐模型都是实时更新的情况下,GNN的成本和实时性的问题进一步加大了产生绝对正收益的难度,让本来收益来源基础就比较薄弱的方案更加难以打平。
推荐系统优化效果的收益来源 #card
收益总是来源于样本、特征和模型三个方向的一个或多个。
可以再精炼成两个方面,收益要么来源于信息的增加(样本、特征),要么来源于信息利用能力的增强(模型)
例子
那么GNN如果有收益的话,就一定来自于信息利用能力的增强。
我们拿一个比较经典的GNN方案[[RippleNet]]来说,它一层层的从中心节点扩展学习到周围节点,有二跳、三跳关联关系的学习能力。本质上来说,它利用了knowledge graph点与点之间的拓扑结构,并把拓扑结构中蕴含的关系信息编码到Embedding中去,可以说GNN增强了对知识图谱中关系结构的利用能力,这才是GNN的主要收益来源。#card
早期基于Random Walk的Graph Embedding生成方案更加纯粹的利用了节点间的拓扑结构。比如Node2vec分别基于BFS和DFS随机游走生成序列后,再进行Embedding编码。所以本质上,Node2vec没有引入任何新的知识信息,而是增强了对关系结构的利用能力。 #card
大模型的出现可以说是对GNN的降维打击。如果说曾经GNN对于知识图谱的学习还可谓是有独特优势,在大模型出现之后,GNN在该方向上的优势也荡然无存。大模型对于开放世界知识的全量学习,几乎可以吊打GNN对个别领域的知识学习。特别是多模态大模型几乎可以对文本、图片、音频、视频等任意信息进行同一空间内的Embedding化,更是让GNN的未来更加暗淡。#card
Bender & Koller 两位说英语的荒岛幸存者被困在相邻岛屿上,中间隔着危险水域。幸运的是,他们发现了前任居民留下的电报机,电报机通过一条水下电缆连接起来,他们能够通过电报传递信息。#card
但是,他们不知道的是:附近水域里,生活着一个具备超级智能的章鱼,它劫持了水下电缆并拦截了他们之间传送的消息。尽管章鱼不懂英语,但其超级智能使其能够检测到电报信息文字的统计模式,并能准确表示各种电报信号间的统计关系。
在章鱼觉得自己已经学好这些统计规律之后,它切断水下电缆,将自己两个长触手定位在电缆的两个末端,基于它所识别出来的统计模式,接收并自己来回复两名漂流者的电报信号。
无论两位幸存者是否注意到交流对象已发生变化,章鱼发送出去的信息,在本质上似乎没有任何含义。
毕竟,章鱼只是遵循它从人类之间的前期交流中学到的统计模式,而并没有看到过任何人类对信号的解释,比如“椰子”或“海水”所代表的真实含义。此外,章鱼甚至可能都不明白这些信号是具有意义的,或起到了促进交流的功能
example:根据多个 [[F-Note]] 写一个 [[L-Note]] #card
用自己的话重写 fleeting notes 的内容 example #card
第一个例子是健身之后的疲劳感,或者跑完马拉松之后一头倒下的那种感觉。人往往是通过疲劳感来感受到生命力的,健身、跑马拉松之后你会非常疲劳,但同时身体告诉你,你很有生命力。#card
为什么健身的人会觉得自己有生命力呢?
一方面,运动确实是在燃烧生命,如果不燃烧就得不到生命力的感觉,比如躺平很快就会产生无意义感、空虚感,你必须要让它燃烧。在燃烧的过程中是有痛苦的,但是你的意识能够对此有一个清晰的叙述:我为什么干这个、我要怎么干、我会不会失控……这个过程可以自己调配,有一定的自主性,这种意识的存在是非常重要的。
为什么要谈生命力呢?#card
第二个例子,很多行动力非常高的年轻人,看上去非常忙,一天到晚要做很多事情,但他们往往会觉得这种忙是在消耗他的生命力,#card
我想通过这个例子讨论,我们如何在一个不理想的状况下去寻找生命力。#card
健身的例子虽然典型,但它不是非常有代表性,因为我们生活中的绝大部分时间不是在健身,而是在做很多工作。这些工作总是不那么令人愉快的,也不是百分百自己想做的。这个时候,我们的意识能不能跟行动产生间隔。但是我们能不能够告诉自己:我做这个事情确实是不太令人满意的,但是有怎样的原因。如果我们能对此做一个前因后果的叙述,就能够保证一定的生命力。
现在我们看到的生命力的消耗,不仅是忙,而且在忙的过程中没办法让意识从行动当中抽身出来,对自己有一个叙述,大家都觉得被碾压了。
我希望通过分析来展示,意识无法抽身
的责任不是完全在于我们个人的。
项飙之前谈工作的观点
最后一个例子,很多艰苦的、或者我们看上去无意义的劳动,在不同的情况下对人的影响是不一样的。但凡人们能够对那种无意义的劳动产生一种 有意义的叙述
,他就不会一直感到被碾压。#card
总的来讲,生命力不等于 行动力 ,对生命力很重要的是意识和行动之间的 间隔 。
链接: 快手推荐算法工程师的1年半: 业务驱动的算法创新 - 知乎
第一,跨界学习,但有选择性。#card
我不会把自己局限在推荐算法这一个领域,而是广泛涉猎各种AI技术和理论基础。我会关注最新的NLP或CV领域里有突破性的论文,从中汲取灵感,但不怎么喜欢看推荐系统的论文——说实话,这个领域平均质量比较差,大家都在玩小数据集,都在搞自己的baseline,每篇论文都声称自己超越了前人,很难让人信服。
我更喜欢阅读经典书籍,比如《Probabilistic Machine Learning》《动手强化学习》,以及一些高质量的公开课,比如香港大学的信息论、UC Berkeley的CS285强化学习课程。这些系统性的理论知识比追逐最新论文更能给我带来深刻的理解和灵感。当然,需要写论文时我也会认真调研现有工作。
第二,问题驱动,从业务痛点出发。#card
第三,写作倒逼思考。#card
有了初步想法后,我喜欢尝试把它整理成论文形式。这个"倒逼"机制特别有用——它逼着我系统思考问题,找理论依据,设计合理实验,最终不断完善算法。
正是这种方法让我在一年半时间里完成了四篇算法研究,更重要的是在实际业务中创造了价值。
第四,小步快跑,迭代验证。#card
动机:为什么watch time预测总不够准?#card
在快手,我最初负责多样性相关工作,这强烈依赖于各种PXTR(预测值)的准确性。日常工作中我发现一个有趣的现象:我们的模型在整体指标上看起来还不错,但对单个用户-视频对的时长预测却经常有很大偏差。有时候模型预测用户只会看几秒,结果他看完了整个视频;有时候预测会看很久,实际却几秒就划走了。
思考后我意识到问题的本质:我们一直在用一个点估计(单一期望值)来预测本质上充满不确定性的行为。我们无法完全获取用户的信息,导致用户的行为本身就是随机的。同一个用户在同一个时间看同一个视频的时长是一种分布,这种不确定性用单一值根本无法准确捕捉。
灵感:分位数回归的应用#card
解决思路的灵感来得很偶然。一天早上,我在会议室里看《Probabilistic Machine Learning》这本书,读到Quantile Regression(分位数回归)章节时,突然有种被闪电击中的感觉——分位数回归不就是描述分布的好方法吗?它能同时预测多个分位点,从而刻画整个分布的形状!
当天我就迫不及待地开始实现这个想法。基本思路是:不再预测单一的期望watch time,而是同时预测多个分位数(比如10%、25%、50%、75%、90%分位数),从而捕捉watch time的整个条件分布。这样,我们不仅知道用户可能观看多久(中位数),还能了解这个预测的不确定性范围(分位数间距)。
意外的发现:分布特性与预测准确性的关系#card
在论文的Rebuttal过程中,一位审稿人提出了一个尖锐问题:“有什么量化的数据支持分布建模的重要性吗?”。这个问题确实难倒了我。
为了回应这个问题,我进行了一项额外实验:研究分布特性(如IQR,即分布宽度)与预测准确性之间的关系。结果出乎意料地清晰:
1 | IQR范围 UAUC MAE 样本比例 |
+ 这张表告诉我们:分布不确定性越小(IQR越小)的样本,预测准确性越高(UAUC更高,MAE更低)。这个发现不仅回答了审稿人的问题,还让我对用户行为本质有了更深的理解:用户行为的可预测性是不均匀的,有些行为模式(如重度用户)更稳定可预测,而另一些(如新用户或探索行为)则充满不确定性。
+ 有了这个watch time分布建模方法后,我们就可以根据业务需求设计不同的推断策略了,比如保守估计、动态分位数融合等。最终,CQE算法在线上带来了可观的留存(LT)、时长、播放量(VV)和多样性收益。
问题:学术界的方法为何如此复杂?
当时学术界流行用因果推断来消除这类偏见。
我阅读了大量论文,发现它们都构建了复杂的因果图,用反事实推理或后门调整等高深技术。
这些方法理论上很优美,但实施起来较为复杂,让我不禁怀疑其在工业界的实用性。
洞察:简化的力量
我开始质疑:这些复杂方法的核心价值到底在哪?它们真能细化到用户ID级别吗?在实际业务环境下,会不会有更简单直接的方法效果一样好甚至更好?
带着这些疑问,我尝试了最简单的方法:直接对齐预测值(PXTR)的均值。具体做法是,对于每个偏见因素(如视频时长),计算不同条件下的预测均值,然后从原始预测中减去这个条件均值的偏差。
令我惊讶的是,这个简单方法在线上测试中带来了显著收益!这让我对学术界复杂方法的必要性产生了深刻质疑。
理论突破:从均值对齐到分布对齐
这个洞察让我把前面的CQE与新的对齐思想结合起来,形成了AlignPxtr(Aligning Predicted Behavior Distributions)算法。它的核心是:通过条件分位数映射,将不同偏见条件下的行为分布对齐,从而消除偏见影响。
AlignPxtr的成功让我深刻认识到:在算法设计中,简单往往是一种力量。有些问题看似需要复杂的理论框架,但仔细思考后可能发现有更直接、更有效的简化方法。正如爱因斯坦说的:“Everything should be made as simple as possible, but not simpler.”(一切应该尽可能简单,但不能过于简单)。
效果 #card
问题背景:如何优化长期用户留存?#card
灵感源泉:卧室里的强化学习书籍#card
当时我正躺在床上翻阅《动手强化学习》这本书,思考如何将RL应用到留存优化中。传统的强化学习方法需要设计合适的reward函数,并通过试错学习找到最优策略。但在实际业务中,这面临两个巨大挑战:一是如何设计与长期留存挂钩的reward函数;二是在线探索可能带来负面用户体验。
正当我为这些难题发愁时,翻到了书中关于行为克隆(Behavior Cloning)的章节,突然灵光一闪:快手有海量用户数据,其中不乏高留存用户,何不直接克隆这些"专家"用户的行为模式?相比复杂地设计reward和冒险的在线探索,这种方法直接得多!想到大语言模型的Pretrain和SFT(监督微调)阶段本质上也是行为克隆,我更加确信这个思路的可行性。
创新点:多层次专家与策略多样性
进一步思考后,我发现单纯的二分法(专家/非专家)太过简化。用户活跃度有多个层次,从超高活跃到高活跃再到中等活跃,每个层次可能有不同的行为模式。#card
结合这些思考,我设计了SEC(Stratified Expert Cloning)算法,它包含三个关键创新:#card
多层次专家分层:根据活跃度将专家分为多个层级,分别学习不同层级的行为模式
熵正则化:借鉴LeCun的工作,引入熵正则化防止策略崩塌,促进多样性
自适应专家选择:为每个用户动态选择最合适的专家策略
惊人的效果:改变数十万用户的留存 #card
算法工程师的元认知:我的思考方式
这一年半的工作经历,让我对算法创新的本质有了更深的思考:
复杂与简单的权衡#card
在算法设计中,我常陷入一个两难选择:是追求理论上完美但实现复杂的方案,还是选择实用简单但可能次优的方案?
经过反复实践,我的结论是:理论洞察很重要,但最终方案应该尽可能简单。好的算法像冰山,水下是深厚的理论思考,水上却是简洁易懂的实现。我的三个算法都体现了这一点——它们背后有深入的理论分析,但最终实现却相对直观简洁。
AlignPxtr可能是最典型的例子——我直接用简单的对齐方法取代了复杂的因果推断框架,不仅实现更简洁,效果还可能更好。这正是我经常提醒自己的:不要被复杂性迷惑,真正的优雅往往是简洁中蕴含深度。
理论与实践的循环提升#card
我发现,理论思考和实践验证之间存在一种奇妙的正反馈循环。好的理论指导实践方向,而实践中的反馈又能纠正和完善理论。
比如在SEC研究中,起初我只考虑了行为克隆的基本思路,但实践中发现策略崩塌问题,这促使我引入熵正则化;而熵正则化的效果又让我进一步思考多样性在推荐系统中的理论意义。这种"理论-实践-再理论"的循环迭代,让我的思考不断深入、算法不断完善。
在反复实践中,我意识到:创新不是一蹴而就的灵光乍现,而是在这种循环中渐进式产生的。每次迭代都在我的思维中植入新的种子,最终生长为有价值的算法创新。
结语:算法创新的本质#card
经过一年半的实践,我对算法创新的本质有了更深理解:它不是为了创新而创新,而是为了解决实际问题;它不仅仅是数学和代码,还包含对业务的深刻理解;它的价值不在论文发表数量,而在于给用户和业务带来的实际改进。
回想起写这三个算法的初衷,我都是从一个简单的业务问题出发:CQE源于"为什么watch time预测总不准"的困惑,AlignPxtr源于对复杂因果推断方法的质疑,SEC则是想避免复杂的强化学习探索。每次,都是从实际问题出发,通过深思熟虑和反复验证,最终发展成一个完整的算法框架。
这告诉我:真正有价值的创新,往往源于对实际问题的深刻洞察,而不是为了创新而创新。
关注问题#card
第一、特征是重要的先验知识,但是有时我们自认为加入了一个非常重要的特征,但是模型效果却没有提升,这是特征无用呢?还是加的位置不对呢?
第二、在多目标的场景下,如果某个目标比较稀疏,我们如何利用先验知识辅助它,使其能学得更好呢?
信心满满地设计了特征,感觉非常有业务sense,吭哧吭哧打通了上下游数据链路,模型预测一看,离线指标却稳如泰山。造成这种情况的原因有很多,其中一个可能就是,如果你的特征确实有用,但他没发挥作用的原因,很可能是特征的位置不对。#card
第一,如果你先重要的特征加到DNN底部,层层向上传递,恐怕再重要的信息到达顶部时,也不剩下多少了。
第二,DNN的底层往往是若干特征embedding的拼接,动辄五六千维,这时你新加入一个特征几十维的embedding,被“淹没”恐怕也不会太奇怪。那么,特征究竟要如何加才能发挥效用呢?这正是本文探讨的话题。
那么,哪些特征要进wide侧,哪些特征要进deep侧?:-> wide侧负责记忆,因此要将“强业务背景,显而易见的特征,喂入Wide侧”。
在推荐领域加入wide侧#card
特征及特征对上的统计数据,<女性,20~30岁,商品类别是‘裙子’>上的点击率、加购率等;
或者,我们已经发现了非常明显的用户分层,比如登录用户 VS 未登录用户、高频VS低频,用户行为完全不同。为了提升模型对“用户是否登录”、“高频低频”这样强bias特征的敏感度,这些特征也。
这里多提一个扩展性案例、与用户分层类似,淘宝的STAR《One Model to Serve All: Star Topology Adaptive Recommender for Multi-Domain CTR Prediction》也是将domain-id这样的强bias特征,喂入一个非常简单的dnn,得到的logits再叠加到主网络的logits上,算是wide&Deep的一个变种。#card
对于一些强bias特征(eg:用户是否登录、来访天数),除了将它们加浅一些,离目标Loss更近,还有一种方法能够增强它们的作用,避免其信息在dnn中被损失掉,就是采用结构 :-> [[SENet]]或[[LHUC]]
SENET就相当于用户站在输入特征旁边,亲自下场辨认哪个特征有多重要,这其实也是一种变相的 self_attention 机制(如果SENET的输入是所有特征的话,可能就更接近self_attention的思想了)
强bias特征作为LHUC的输入,经过sigmiod激活函数后,输出是一个N维度向量。#card
当然,如果SENET的输出维度N直接是input_layer的维度也可以,这就从vector_size变成 element_size 。
喂入上层DNN这种结构,将一些先验认为重要的强bias的特征,放到裁判的位置,决定其他特征的重要性。#card
比如,如果产品设计不允许未登录用户购买商品,那么显然“用户未登录”这个特征值,就“应该”将转化相关特征的权重置为0,因为它不能代表用户的真实意图。
这样做,相比于将所有特征“一视同仁”、直接全部喂入DNN最底层,更能发挥重要特征的作用,将“先验知识”(比如这里的产品设计限制)深入贯彻。
一般都有哪些重要特征呢?
表征用户本身bias的,#card
表征上下文场景的bias的,#card
比如用户几点来APP啊;
用户当天有没有显著表露意图,比如淘宝上搜索了,加购了,购买了;
商品位置信息等等。
表征样本bias的,#card
当前,多目标在推荐领域已经是屡见不鲜,以商品推荐为例,我们曝光透出的商品,不仅要让用户点击,用户点击代表着用户愿意花时间和APP一起玩,这直接代表着APP的生态;而点击之后还要尽可能地加购,当然最终目标是转化,转化直接关系公司营收。因此,我们从来不做选择,我们全都要!#card
以商品推荐为例,点击环境的训练数据丰富、他的隐层输出,将极大帮助转化这个靠后环节的训练,当然这也符合一般认知,我们可以认为用户一旦点击了,他就朝着购买这个终极目标前进一步,用户加购了,则再进一步,
因此,将点击、加购信息直接显示迁移到转化上,是符合产品设定下用户真实习惯的。
外推性 #card
是指大模型在训练时和预测时的输入长度不一致,导致模型的泛化能力下降的问题。
例如,如果一个模型在训练时只使用了512个 token 的文本,那么在预测时如果输入超过512个 token,模型可能无法正确处理。
这就限制了大模型在处理长文本或多轮对话等任务时的效果。
一般建模观看时长用回归还是分类算loss?#card
回归 loss
training weighted LR #card
@Embedding-based Product Retrieval in Taobao Search
淘宝搜索的向量召回特征包括语义特征与个性化特征。
语义特征基于query和item title,#card
不同的是query侧使用多粒度的文本encoder,同时增加当前query的补充term(历史query,这里可能是历史统计得到的相似query),
而item侧语义特征则仍然使用title terms。
个性化特征#card
user/query侧使用实时、短期、长期的用户行为(点击过的商品、店铺等),
item侧则直接通过itemId获得商品embedding与语义特征拼接融合。
模型同样是双塔结构,
User tower的向量表示 #card
user/query侧一方面使用query多粒度term进行embedding映射,包括 1-gram,2-gram,query terms(q_seg)以及补充的query terms(q_his)。
此外,q_his的输入先经过和qseg的attention得到 ,q_seg同样也会通过Transformer得到深度的语义特征 。
最后各粒度特征通过加和,concat得到不同粒度的query表示向量矩阵 ,而后 分别和实时,短期,长期的用户行为的特征表示做multi-head attention,最后得到。
商品的表示比较简单,#card
不同于使用hinge loss或者tripe loss,本文使用sampled softmax cross-entropy loss来进行模型训练,#card
期望得到全局的正负样本距离度量,以尽可能的实现训练和预测分布的一致性(pair wise loss则更关注局部的正负样本距离度量)。
\hat{y}{\left(i^{+} \mid q_u\right)}=\frac{\exp \left(\mathcal{F}\left(q_u, i{+}\right)\right)}{\sum_{i{\prime} \in I} \exp \left(\mathcal{F}\left(q_u, i^{\prime}\right)\right)}, \
L(\nabla)=-\sum{i \in I} y_i \log \left(\hat{y}_i\right),
\end{gathered}
样本构造 + 训练数据使用点击日志,点击数据为正样本,由于使用了sampled softmax,负样本相当于从商品池中随机采样。#card + 难样本挖掘:人为对负样本加权#card + 对随机负样本query-item pair对进行模型预测(中间模型),取Top-N的内积score的item向量表示集合 I + 正样本 i+,线性相加得到难负样本表示 Imix + alpha 平衡样本的难度 由于引入了个性化特征、记忆性的Id特征,模型不可避免地引入相关性badcase(其实不加个性化特征也免不了)。因此策略上线时还做了一些额外的相关性控制策略#card + 通过核心term(如品牌、颜色、型号等属性)匹配限制,避免模糊匹配带来的语义漂移等问题 
@Mobius: Towards the next generation of query-ad matching in Baidu's sponsored search
搜索广告场景
Mobius的模型架构同样是双塔结构,不同于常规的二分类任务,这里可以认为是3个任务,user&query tower的输出向量和ad tower的输出向量分别分成三份,分别对应计算向量匹配分,#card
三个任务的logist输出经过softmax层归一化得到u-q-ad的pair对各任务的概率。通过这种方式,Mobius实际上将样本标签分成了三个类:#card
模型使用历史点击日志作为基础数据集(<user/query,ad,clicked/unclicked> 对)。为了实现上述的三分类,还需要一个是否为badcase的label。这里使用相关性Teacher模型(预先训练好的)根据阈值来判断pair对是否相关,随后将样本送到CTR模型(Neural Click Model),进而找到低相关且高点击的样本作为badcase。得到bad标签后,进行CTR模型训练和参数更新,由此循环迭代,伪代码如下:#card
除了基础的相关性特征(如query token和item title token),本文方案(DPSR)增加了多种个性化特征以提升模型对个性化信息的关注,
用户侧包括:#card
商品侧个性化特征包括:#card
模型采用经典的双塔架构,包括user/query tower和item tower两个模块。各特征离散化后通过embedding average或concat映射到固定维度后拼接,并经过DNN网络分别得到user和item的特征向量。此外,在user/query tower模块使用了multi-head来提取更加多样的特征(有点模型ensemble的感觉)。#card
item tower和user/query multi-head使用attention的方式进行匹配分数融合
Multi-head的attention仅在训练阶段计算,在线检索时,每个head将分别进行召回并通过内积分数截断同样数量的商品进行统一排序。
文章训练数据的构造比较简单直觉:#card
使用用户点击数据为正样本(10亿级别)。
负样本同样没有使用曝光未点击的商品,因为未被点击的商品不一定不相关。
random negatives、in-batch negatives,二者合并作为负样本参与训练
文章指出随着rand负样本比例的增加,商品的个性化(或热度)逐渐变强,更容易点击/成交,相应地相关性也会一定程度下降。
@如何提升链路目标一致性?爱奇艺短视频推荐之粗排模型优化历程
如何提升链路目标一致性?爱奇艺短视频推荐之粗排模型优化历程_AI&大模型_爱奇艺技术产品团队_InfoQ精选文章
最初采用的粗排模型可以归为上述第二类选型模型,是一个基于各个纬度统计特征的 GBDT 模型。统计特征维度主要包括下面几个维度: #card
在业务的精排模型优化升级为 wide&deep 模型后,我们对粗排模型和精排模型的预估结果做了详细的统计和分析,发现粗排模型预估为 top 的头部视频和精排模型预估的头部视频有很大的差异。归咎原因主要是以下两方面的原因:
特征集合的差异:#card
粗排 GBDT 模型中主要是一些稠密类统计特征,而精排 wide&deep 模型中发挥重要作用的特征主要是用户长短期消费的视频 id、视频 tag、up 主 id 等以及视频本身的 id、tag 和 up 主 id 等稀疏类型特征。
id:: 6804cbee-5d4a-4da2-84d7-d7c416843252
模型结构的差异:#card
树型结构模型和 DNN 模型的优化和拟合数据时的侧重点还是有很大的差异的。
除了预估结果和精排 wide&deep 模型有比较大的差异性外,GBDT 模型在特征处理和挖掘方面还需要投入大量的人力。综合以上分析,为了尽量弥补粗排模型和精排模型的 Gap,缩小粗排模型和精排模型预估结果的差异性,并节省大量特征统计和挖掘的人力成本,我们对粗排模型进行了一系列的升级和优化。
粗排双塔 DNN 模型结构图
+
+ 用户侧和 Item 侧分别构建三层全联接 DNN 模型,最后分别输出一个多维(512)的 **embedding 向量** ,作为用户侧和视频侧的低维表征。
+ 在构建粗排模型特征集合时,为了控制粗排模型参数的复杂度,我们对粗排的特征集合做了大量的裁剪,用户侧和视频侧都只采用了少部分精排模型的特征子集。 #card
+ 其中,用户侧特征主要选取了下面几维特征:
+ 1. 用户基础画像特征、上下文特征如手机系统、型号、地域等。
+ 2. 用户的历史行为特征,如用户观看的视频 ID、up 主 ID,以及观看视频的关键词 tag 等,以及用户 session 内的行为特征等。
+ 视频侧特征只保留了三维:
+ 1. 视频 ID
+ 2. up 主 ID
+ 3. 视频标签
+ 在蒸馏训练的过程中,为了使粗排模型输出的 logits 和精排模型输出的 logits 分布尽量对齐,训练优化的目标从原来单一的粗排模型的 logloss 调整为 :-> 三部分 loss 的加和,包括 student loss(粗排模型 loss)、teacher loss(精排模型 loss)和蒸馏 loss 三部分组成。#card
+ 其中蒸馏 loss 我们线上采用的是粗排模型输出和精排模型输出的最小平方误差,为了调节蒸馏 loss 的影响,我们在该项 loss 前又加了一维超参 lamda,我们设置超参 lamda 随着训练步数迭代逐渐增大,增强蒸馏 loss 的影响,在训练后期使得粗排模型预估值尽量向精排模型对齐,lamda 随着训练 step 的变化趋势如图四所示。#card
Embedding 参数优化 #card
将模型 embedding 参数的优化器替换为稀疏解优化神器 FTRL
其他层的参数依然还用 AdaGrad
练得到的粗排模型的 embedding 参数全为 0 的比率也高达 49.7%之多。我们在做模型导出时,裁剪掉了全为 0 的 embedding 参数,粗排模型大小减小了 46.8%,使得模型的传输速度也有近一倍的提升,同时线上加载模型的内存消耗也降低了 100%。
目的 #card
为了一劳永逸地解决粗排模型目标和精排模型目标一致性的问题,我们对粗排模型进行了又一次的迭代优化。
通过升级为级联模型,使得粗排模型能够自适应地对齐精排模型目标的变化,同时也节省了蒸馏训练的环节,大大地节省了训练资源消耗。
[[粗排目标是判断item是否在精排 topk]] 从实践的角度,级联模型对模型结构以及模型输入的特征集没有做任何修改,只是调整了粗排模型训练样本的生成方式,升级后的粗排模型从学习线上真实曝光点击/播放样本,调整为直接学习精排模型的预估结果,将精排模型预估 topn 的结果作为粗排模型学习的正样本。级联模型的样本生成方式具体如图六所示。#card
分析:固定缩放的缺陷分析 #card
动态 NTK 的公式定义 :-> 动态缩放因子: ,其中 是当前输入的实际长度。,这就允许模型在达到训练的上下文限制时较为缓慢地退化性能,避免了骤降。
当 时, ,频率基保持原样,位置编码与预训练一致。
当 时, ,按实际需要的长度逐步增加频率基的缩放,避免突然调整。
FashionBert和文本模态下的BERT一样,分为预训练和微调两个阶段,为了适应<query, title+image>的匹配,FashionBert在微调之前又增加了triple input的微调。
预训练阶段:#card
和常规的多模态BERT一样,以BERT结构作为encoder,文本模态为商品标题,Tokenize后输入到模型。
视觉模态为商品图片,先通过CNN网络提取成Patch Embedding输入到BERT。
文本和视觉特征输入以[SEP]分隔。
预训练任务包括图文匹配、Mask预言模型任务、Mask视觉特征任务。数据则使用商品维度的<title,image>对即可。
Triple Input微调:在检索任务微调之前,FashionBert先经过了一个<query, titel, image> 三元组输入的微调,以进一步适应<query, title+image>的跨模态匹配任务,训练数据为搜索点击日志构造的query-item信息对,整体结构如下:#card
跨模态匹配微调:跨模态微调任务与经典的DSSM架构一致,只是doc端的输入升级为图文特征。query、title、image可以共享同一个BERT模型,以Segment Id区分。训练数据同样为搜索点击日志构造的<query, item>pair对。#card
结构 #card
关于RoPE中不同维度的波长,有如下结论:存在某些维度 i ,其波长 大于在预训练期间看到的最大上下文长度 L 。也就是说:在训练期间,存在某一个维度,旋转一圈后超过了 token最大上下文长度 L 。具体每个维度的波形可以参考图1-3,即Sin方法的绘图,其中 。#card
如果某些维度的波长大于上下文长度 ,这说明该维度无法执行全旋转。在这种情况下,由于维度在预训练期间至少不会完全旋转一次,如果我们选择第一个token作为基准,那么在预训练期间每隔一个token到它的距离是唯一的,NTK可以用来确定它的绝对位置信息。
相反,如果某个维度波长小于L ,那该维度就执行了至少一次全旋转,我们就无法在这个维度描述绝对距离,只能描述相对位置信息。
#card 因此,作者认为,不要对『只编码相对位置信息的维度』 进行内插破坏,因为它们对于模型区分附近token的相对顺序至关重要。同时,应该始终对仅编码绝对位置信息的维度 进行内插,因为较大的距离将超出之前模型能够编码的距离。综上,可以制定一种考虑以上所有因素的显式且有针对性的插值方法,即:
如果波长远小于L,此时编码了相对位置的维度,因此不进行内插;
如果波长大于L,此时编码了绝对位置的维度,应该进行内插以防止超出绝对位置的最大可编码范围;
波长介于上述之间的维度,采用NTK-aware方法。
NTK-by-parts公式 #card
现状:PI会在扩展倍数特别大时显著降低位置编码区分不同位置的能力,这种现象称之为高频信息的损失。
[[RoPE]] 中周期和频率关系 #card
PI 频率降低、角频率降低、旋转角度降低原因 #card
NKT(Neural Tangent Kernel)的思想 :-> 高频外推+低频内插,即将 改为 ,也就是改变了基底(这里 , 。
位置编码的本质是求位置n的β进制数 #card
NKT推导2——统一高频外推和低频内插 #card
代码修改 #card
1 | from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig |
使用RoPE,以长度为L训练完成模型后,当输入超过L会发生性能剧烈下降,一些论文提出可以通过给模型喂一些长度大于L的输入来微调模型,进而逐步将原始窗口长度扩大,但其代价和成效不佳(实验结果如下图4-1)。#card
思路:将超出L部分编码值压缩到L内。#card
论文针对外推(Extrapolation)和内插( interpolation),也给出了一些实验,见图4-3: #card
图4-3的实验代码如下: #card
1 | import torch |
SimCSE仅通过简单的dropout mask操作来构造正样本对,并使用in-batch负样本,即在无监督语义匹配上取得不错的效果。在有监督模式下通过引入有标注数据也进一步提升了基线效果 #card
#card 在某个维度i下,波长被定义为: ,因此,有如下结论:
波长可描述为:在维度处嵌入的旋转位置执行全旋转 所需的token长度。
维度越高波长越长。
波长描述了维度i处执行全旋转2π所需的token长度 #card
YaRN 和 PI和NTK这种类型的插值方案区别 #card
像PI和NTK这种类型的插值方案不关心波长的维数,可以将其称为“盲”插值方法(blind interpolation),因为它们面对所有RoPE隐藏维度没有做任何针对性的处理。
YaRN,可将其归类为“有针对性的”插值方法,即对RoPE的不同维度做出不同处理。
对称性假设 #card
物品A 和物品 B 相似度相同,sim(A,B)=sim(B,A)
实际中可能存在 A 到 B(手机到手机壳),但反向关系 B 到 A 未必成立。
召回低相关性物品
静态相似性忽略时间变化 #card
根据历史数据计算的物品相似度是静态的,长时间保持稳定。
物品的热度、用户兴趣会随着时间变化(季节商品、新闻热点)
过时推荐
数据稀疏性与头部效应 #card
需要物品有足够多交数据,才能计算相似性。
长尾估计不准确
头部偏差,热门物品因交互频繁,可能与多个长尾物品错误关联。
热门推荐,牺牲了个性化
x2i 方法 #card
c2i
t2i
i2i
swing,相似 item
icf
u2i
u2x 方法 #card
u2c
u2t
标签偏好
实体
品牌
u2i
点击
收藏
购买
u2u
相似用户
社交关系
Zhe Wang et al. COLD: Towards the Next Generation of Pre-Ranking System. In DLP- KDD, 2020.
模型结构 #card
设计思路 #card
三塔模型的推理 #card
q2i2i:#card
获取当前query下曝光、点击、成交的item,进一步通过i2i的方法(协同过滤、swing等)扩召回更多候选商品。
同时通过类目限制(要求trigger item和cand item的类目一致)或其他离线相关性度量方法保证召回商品和搜索query的相关性,也可以直接通过query和召回商品的相关性度量保证相关性。
u2i2i:#card
u2s2i:#card
个性化召回相对于文本召回优缺点 #card
优势在于不需要精准的term命中即可召回相关的商品,且商品天然具有高点击/成交属性。
缺点在于如果相关性把握不好,会引入一些影响搜索体感的badcase。
倒排索引中的索引指的是什么 #card
用户输入搜索query后,系统如何从库中找到命中query词的商品?暴力的方法是先对query进行分词得到每个query的term,而后遍历每个商品信息的每个term词,如果query term在商品信息中全部命中,则召回该商品。这种暴力方法有显而易见的效率问题:#card
简单举例来说:假设有三个文档,“Winter is coming.”, “Ours is the fury.” 和 “The choice is yours.”, 经过简单的文本预处理(大小写转换、删除特殊字符、分词等),可以建立起如图所示的“倒排索引”。#card
倒排索引是文档term到包含该term文档id的字典,基于字典数据结构的hash机制,可以快速找到包含指定term的文档id集合。
可用搜索引擎如基于Lucene库的Elasticsearch
该类特征有两种比较常见的处理方式,
一是直接离散化作为模型的输入,#card
另一种方式则是先对内容进行隐语义表示,并将隐语义表示作为模型输入。#card
如对于文本,常见的隐语义表示可以通过word-embeding、经过微调的bert等Encoder进行语义向量特征提取;
对于图像亦可以使用常见的图像encoder模型微调后预测得到其向量表示。
[[倒排索引]] 解决暴力匹配的效率问题
+
u2x2i
u2i,向量召回
输入user特征和item特征,然后对齐user和item的向量表征
通过user的历史序列提取user的向量表征,然后和item的向量对齐
deepmatch
mind
多兴趣
用户行为序列
知识图谱
DSSM
探索性召回
item
热门
整体热门
区域热门
时效
策略规则类
认知召回
正排召回
向量召回
扩展召回
高销量召回
重查召回
兜底召回
单字召回
[[@搜推算法面试常见问题第七期:搜索召回]]
由于下游排序算力有限,系统无法对所有候选商品进行算分,需要有合适的多路召回融合策略。比较常见的融合思路如:
由于搜索一般有比较明确的query意图,因此通常情况下搜索召回的第一目标是相关性。而很多时候通过DSSM架构虽然可以得到语义泛化的特征表达,但也免不了因语义漂移带来的相关性badcase。#card
一方面可以在模型侧增加更多的语义特性(如query/item信息拓展、类目信息)或构造更难的样本等;
另一方面可以从策略出发,对向量召回做相应限制,常用的如:
对于策略覆盖范围,同样有两点:#card
1、由于策略很多时候不尽完美,向量匹配模型并不能对所有的query表现的都很好(如样本不均衡问题带来的模型偏置),通常需要进行case分析,总结表现不好的case类型,能优化即优化,优化成本较高的可以选择放弃该类型case的策略覆盖。
2、不是所有的query对召回都有相同的需求,如候选结果已经很丰富的query可能需要增加更偏向个性化程度高的商品、而对于本身候选不足或者空结果的query更迫切的是需要补充更多的相关商品候选。从这个维度也可以考虑一些策略上的调整。
向量召回策略变量较多,通过线上效果调整参数成本较高,需要合适的离线评测指标进行策略好坏度量,以加快迭代效率。比较常用的如#card
Recall@K来度量模型的排序能力;
如AUC/GAUC指标来度量策略的点击/成交效率;
对于标注有query-item相关程度的样本,还可以使用F1或AUC等指标回归模型的相关性区分能力。
不同的离线迭代目标同样需要设计好评测样本,以提升指标的置信度。
垂直送搜索特点
• 垂搜的⽂档普遍是结构化的,容易根据⽂档属性标签做 检索筛选。#card
• 电商:可以限定品牌、卖家、价格、颜⾊。
• 学术:可以限定关键词、作者、期刊、年份。
• 本地⽣活:可以限定类⽬、商圈、距离。
• 垂搜⽤户的意图明确。#card
• ⼤众点评⽤户搜索“寿司”,⽬的是找寿司餐厅。
• 淘宝⽤户搜索“拳击”,⽬的是找拳击相关的商品。
我是射手520
楼主,您好。有幸看到您盖的楼,您对历史、政治和经济的研究让我如醍醐灌顶,很多隐约迷惑的东西,似乎有了出路能去寻找答案。万分感谢。
说到置业,您对一线二线城市谈的较多,想听听您对类似我们这样城市楼市和经济的看法。我所在的是地级市,离您帖子提到的武汉有500公里。我所在的地市以汽车工业为主导,是三大汽车集团其中之一的发源地,目前是该企业的商用车基地。#card
在全省范围,离省会最远,但是在城市建设、居民生活水平、物价和房价可以排在全省前面,以前分析是因为我们这里是以工业为主,故经济发展比其他以农业为主的地市发展的要好,看了楼主的帖子,感觉跟离武汉最远也有关系。
我们当地最贵房价从05年前2000以内,到09年3000-4000元,到今年的5000元,最贵的6000元。
房价的飙升一方面随着全国大环境有关,我分析同时跟当地政府的发展思路密不可分,05年开始引进外地大开发商,新修了很多路,其中跟旧城区主干道平行的最重要的一条路,随着市政府入住,体育馆、美术馆,大开发商进驻,经过5年发展,该路段已经成为我们这里房价最贵的一条路,我们是小城市,在这里买房子的,除了投机成分以外,大部分应该是改善型住房,要大型小区,要绿化,这条路目前房子也是越盖越高。通过建设,当地政府财政也充裕,明显感觉对市政投入也大多了。#card
我目前的置业状况是,在老城区广场旁边有单位分高层住宅一套,虽然是塔楼,但在广场旁边,弱化了容积率高,当年放弃了单位地段相对没这个中心,总价低的多层住宅,就是看中了地段,这个投资较成功,按照现在市价,房屋总价基本翻番,该房屋目前由父母住。#card
08年底,在开始说的新地段够买一套房屋,120平米,多层住宅,周边政府规划为大学城,周边有两所大专院校,对于该房屋地段较为满意,虽然比不上新修的路的北边和中部靠近体育馆,靠近政府地段升值快,但较看好该地段前景,该地段新修了 一条连接老城区的通道,唯一不太满意是购买的顶楼,因为是购买的该小区的多层住宅没有电梯,如果有了孩子,住顶楼生活就不太方便。购入均价2900,目前周边的新盘均价4500元,该楼盘创造了摇号去选房的记录。该套房屋自住,当年购买房屋没有多贷款一步到位,现在如果想换个满意的难度就大的多,满意的房屋都5000往上了。这套房屋有15万左右的贷款。
虽然很看好武汉的楼盘,远远现阶段大于经济承受能力,目前放弃。
对于我们当地的楼盘,也超出了我们这种普通人的能力,虽然最近楼盘都卖的很火。#card
好在单位公积金较多,我打算收复30%,剩下用公积金贷款,再购置一套房屋,怕再过一段时间,我的改善型需求就满足不了。
前一段时间,有个机会,但是考虑按照目前房价,30%首复,要耗尽目前自己和家人积蓄,犹豫中,错过了机会。
目前这种状况,不知道是否该再次买房?
再次买房考虑标准时什么?我不太喜欢高层,但是原中心城区,没有大盘,都是单位或者小开发商盖的,基本没有绿化,在中心城区边上也有了一套高层住宅。#card
考虑学位房?我们城市不大,目前这套中心城区房屋虽然没有画片在最好的小学中学,但是离这些学校距离比较近。
在靠近那条政府搬入的路的北边靠近体育馆、美术馆(同时也靠近两所重点高中)地方置业,那里房价已经5000多,年底开盘的都是30层以上的高层,自住又不太考虑高层,总价也超出了承受范围。
在当地,离那个大企业居住地,区政府也新开了一条路,那条路待开发状态,据说区政府要搬过去(要搬也是2年以后,现在那条路只有一个大开发商在开发),那条路开车到市中心20分钟,那次有机会买的就是那个大开发商的楼盘,主推多层住宅并且带电梯,去年就预售完毕,这次犹豫中,错过了,住宅品质较好,目前地段太偏。
如果再有机会,该如何选择呢?
kkndme 地级市选房是比较麻烦的,因为投资风险要大于一线城市和省会城市。#card
地级市的购房需求,主要是以改善性需求为主,追求的是大盘,低密度,低楼层,高绿化,最好有个江景或者水景,环境优美的别墅是首选。
因为低级市城市较小,绝对的城中心如果环境比较嘈杂,小区不够高档最好不要选择。没有实力购置别墅,可以选择环境优美的高端住宅,最好是品牌大盘,一眼能够让人赏心悦目。
明确业务目标
将业务目标转化为机器学习可优化目标
样本收集
特征工程
模型选择和训练
离线评测验证
在线AB验证
通过离线验证和在线AB的结果反馈到2,形成一个增强回路慢慢起飞
用户角度:#card
+
公司角度:#card
特征缩放
Log-based#card
[[Normalization]] 和 [[Regularization]]#card
标准化将样本属性值缩放到指定的范围
正则化将样本的某个范数缩放到单位1
Robust Scaling#card
解决其他特征变换方法把特征值压缩到一个非常狭窄的空间,失去特征区分度
IQR 四分位距,确定第三四分位和第一四分位的差值
特征分桶
为什么?
{{embed 数值特征离散化分桶
}}
引入非线性
增强可解释性
对异常值不敏感,防止过拟合
分桶后可以对不同的桶做进一步的统计和组合
方法
无监督分桶#card
固定宽度(等宽)
分位数(等距)
对数转换并取整
有监督#card
卡方
决策树 [[GBDT+LR]]
缺失量较大直接删除特征
少量缺失值处理常用方法 #card
自适应层
缺失值用 w1
如果不是缺失值用 w2*x
均值插补
同类均值插补
建模预测,使用模型对缺失值进行预测
高维映射
多重插补
压缩感知及矩阵补全
对于数值异常,可以使用箱线图观察分析,#card
如个别样本特征出现极大值或极小值,可以采用最简单的均值、中位数等填充,
或者在数据量级不大的情况下,直接删除存在异常特征的样本。
基于文本的召回可以提供简单的基线,但由于召回要求term精准命中,常常会出现 召回能力不足 的问题,因此通常要配合以扩召回策略
常见的扩召回(基于文本)通常从两个维度出发:
扩充召回字段,如增加商品详细描述、商品品类、属性等基础文本字段,
或通过相似商品的基础文本信息作为本商品的扩充索引字段。
时间特征通常情况下是比较重要的特征,该类特征可以构造为#card
数值类型,如页面停留时长、距离上次曝光/点击时间等;
亦可以为离散特征形式,如年份、月份、星期、小时点、节假日等
方面,绝大多的模型都不能保证能够完美挖掘出基础特征所蕴含的所有信息,#card
另一方面,无脑将想到的特征灌给模型,无疑会增加模型的大小,其中可能会有很大一部分参数并没有很大的贡献,#card
特征工程的第一步是要找到对模型预测有用的特征,最常用的方式是基于经验分维度梳理,#card
如电商领域第一层可以按场景元素分成User特征、Item特征、Seller特征、Query特征、上下文特征等,
第二层可以按特征类型分成如类别特征、统计特征、语义特征、画像特征、时间特征、空间特征等。
此外,基于已有特征还可以进一步构造组合特征,对于一些重要的特征可以优化为实时特征。
选择特征的过程也要考虑特征是否可以 取到 ,以及该特征在线上是否能够 及时获取
x 轴覆盖度,y 轴刻画能力#card
1 完美特征(一般量少)
2 ID Combination 记忆
3 弱特征
4 泛化低纬度特征
过滤法#card
直接通过统计方法计算单特征和目标label的相关性,并选择topk,或通过卡阈值过滤掉一定数量的特征。
常见的特征相关性可以使用皮尔逊相关系数、卡方检验等方式度量。
迭代法通过迭代的方式进行特征选择,#card
模型选择方法也比较直觉,#card
可以考虑维度 #card
count:A_COUNT、B_COUNT、A_B_COUNT
nunique: A_nunqiue_B (按B对称的下文省略)
ratio: A_B_COUNT/A_COUNT 在A里各个B类所占的比例
average:A_COUNT/A_nunqiue_B A里各个B类的平均数
most: A_most_B 在A类里出现最高的B是哪个
pivot: A_B1_count、A_B2_count A和B类里特定的B1、B2的联合统计
pivot2: A_B1_count-A_B2_count A的B1行为和B2行为的加减乘除
stat1: A_stat_A_B_COUNT 基于A_B_COUNT对A的描述,
stat2 :A_stat_B_COUNT 基于B_COUNT对A的描述,
序列化:初步LDA,NMF,SVD,进一步Word2Vec,doc2vec 再进一步 图神经网络deepwalk,pPRoNE
特征编码#card
特征二元化
one-hot
[[离散化]]
是否选择
海量离散特征 + 简单模型
少量连续特征 + 复杂模型
分桶
特性
类别特征处理
特征交叉
手动构造二阶或三阶交叉特征#card
dnn 隐式交叉弱,不能很好拟合多项式交叉 pattern
内积式交叉只能实现二阶
外积式交叉的层数有限
内积交叉#card
[[DeepFM]] [[IPNN]] [[DLRM]]
将特征映射到相同的高维空间,通过内积计算特征之间的相似度达到交叉的效果
缺点
不同类型的向量映射到同一个特征空间,与 [[FFM]] 思想相悖
不同类型特征的维度是相同的
外积交叉#card
[[DCN]] [[@xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems]] [[OPNN]]
表达能力比内积强
不同 embedding size 的向量都能支持交叉
缺点
交叉项过多,样本不足容易造成过拟合
计算复杂度高
分桶#card
基于业务理解自定义分桶规则
基于特征的频次合并低频长尾部分
决策树模型
统计编码#card
count encoding
Target encoding [[目标编码]]
Odds Ratio
weight of evidence
特征哈希 Hash Trick #card
1)商品覆盖时效性,#card
因为很多时候商品候选规模在上亿级别,而粗排商品向量对特征变化敏感,回刷频率较高,甚至天级别的全库回刷。
除了工程链路上的优化提效,策略上还可以考虑只对增量和特征有变化商品进行特征向量预测;
另外还可以缩小策略覆盖范围,或只对特定圈定商品生效该粗排策略等。
2)query-user向量塔和item向量塔模型一致性问题,#card
由于双塔模型很多情况下需要频繁训练进行参数更新,在部署过程中可能会遇到query-user向量是版本A模型,而item侧向量是版本B模型的情况。
针对这个问题,一方面可以从工程侧进行模型同步控制进行解决。而在工程架构不能很好支持的情况下,也可以选择在夜晚进行模型更新,降低模型不一致带来的负面影响;
再次一点,可以选择减小模型更新频率,如日更改为周更。而减小更新频率也会损失一定的模型效果,一方面由于低频率更新需要考虑减少使用ID类型特征,以免过度依赖模型的记忆性,另一方面也是因为模型会损失增量更新带来的泛化能力。
粗排训练样本选择最简单的可以复用精排模型的样本,#card
一方面复用链路节省资源,
另一方面方便与精排特征对齐,维护简单以及便于联合优化;
然而如上提到的,粗排和精排样本的打分空间分布并不一致,直接使用精排样本训练粗排模型,将会使得粗排模型对于大量少曝光的样本打分存在偏差。#card
另一种思路则是使粗排尽可能推荐精排偏好的商品,具体实现可以将精排排序topN的样本作为正样本,其他为负样本等方法,#card
此外精排模型蒸馏也可以理解为该思路的一种实现方式。
样本选择空间偏差问题解的决方法不止如此,且无标准答案,很多时候还是需要不断实验改进,才能找到适合自己场景的样本选择方法。
粗排模型的评估可以参考精排使用AUC作为模型打分能力的判断标准,而由于样本选择偏差等问题,使得AUC有时也不能完全指导粗排模型优化。
另一种可以参考的评估指标是粗排topN和对应精排topN的HitRate,对应HitRate越高,则粗排的排序能力可以看作越接近精排
技术点#card
1、精排模型,主要介绍其演进脉络及各类型模型特点;
2、精排阶段的几个关键点的讨论,包括精排训练数据选择、特征工程、模型评估、分数融合、大模型的lifelong learning、deBais、实时化、工程链路等。
商品结构化信息包括类目、属性等,属性有多个维度如品牌、型号、尺寸、适用性别年龄等。除了直接使用文本索引召回,同样可以直接通过结构化id索引召回。#card
统计类特征通常为对用户行为、商品表现等维度的统计值,一般情况可根据情况作为 离散特征或数值型特 征进行变换处理。
举个例子,工程实现上,对于LR模型,其权重参数往往以稀疏存储的kv方式进行持久化,新特征权重可以以kv插入的方式动态增加,而不是事先确定好特征的数量。#card
实现这个目标有几种常见的思路:#card
1、减少排序候选,使用计算复杂度更高的模型,如使用长序列建模,复杂网络结构的排序建模等;
2、增加链路实效性,如模型实时(online learning)[1]、特征实时等;
3、多目标ensemble,手拍权重,或自动学习多个目标(CTR/CVR等)权重,如[2]使用贝叶斯优化方法进行在线超参数学习。此外还有个性化权重学习,如以点击或成交为目标,使得不同用户或搜索词ensemble权重不一。
输入的query和doc首先用词哈希的方法被表示成triple-gram的词袋向量(multi-hot向量,向量大小为词典大小,词出现的位置为1,没出现的位置为0)。
而后接入多层全连接网络,全连接输出query和doc的语义表征向量,并使用cosine相似度来度量二者的匹配分。
最后通过最小化Loss(Pairwise loss、Triple loss、InfoNCE等)使得query和doc的正样本对距离近,负样本对距离相对远
基于卷积网络
+ 在word embedding技术流行之后,基于卷积的DSSM往往会先将各个词映射成embedding 矩阵,进而对embedding矩阵做多核的卷积池化操作,进一步提升了文本表征的效果 #card
基于循环神经网络
基于BERT
特征增强#card
特征或者数据的增强可以在数据有限的情况下,通过一些简单的变换操作起到变相扩充样本的作用,进而提升文本特征输入的丰富度。同样,即使有足够的数据,特征/数据增强很多时候也能进一步提升模型的鲁棒性。
[[NLP 数据增强方法]]
特征融合可以分为两条思路:
特征内部:#card
补充特征:#card
多模态特征
在向量模型中引入个性化,比较直觉的思路是#card
在模型中引入个性化特征(如性别、地域、购买力、活跃度、商品销售热度等),
或者从训练数据构造上入手(如将数据构造成高成交效率&高相关、相关、不相关三类),
亦或者通过网络结构或策略上的设计(如引入多任务机制等)
3.12 Model Dictionary Compression
QR hashing (Shi et al., 2019) offers a solution by decomposing large matrices into smaller ones using quotient and remainder techniques while preserving embedding uniqueness across IDs. 通过使用商数和余数技术将大矩阵分解为较小的矩阵,同时保持不同 ID 嵌入的唯一性 #card
Example of non static vocab hashing paradigm #card
本页面灵感来自 ChangeLog of Me | cf020031308.github.io !
[[@Pattern recognition and machine learning]]
[[Raycast]] MacOS 启动器,替代 [[Alfred]]
[[Optimization]]
“追星”Transformer(五):Transformer的三个小细节——LayerNorm、Teacher Forcing与Beam Search - 知乎 (zhihu.com)
[[卷积和注意力区别]]
[[Tensorflow Baisc]]
[[@DeeprETA: An ETA Post-processing System at Scale]] Uber 基于深度学习的 ETA 系统设计
当前使用[[词典]]
Oxford Essential Dictionary
Collins Cobuild Essential English Dictionary
Collins Cobuild Intermediate Learner’s Dictionary
OALD4双解切换2022秋季版
Oxford Advanced Learner’s Dictionary 10th
[[@Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting]] 清华 [[NeurIPS/2021]]
[[@Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting]]
[[@Transformers in Time Series: A Survey]] 阿里达摩院关于 [[Transformer]] 在[[时间序列预测]]应用的综述
[[how to read a book]]
[[@Distilling the Knowledge in a Neural Network]]
[[@Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction]]
日常摘录 [[2022week40]]
[[Stop Taking Regular Notes Use a Zettelkasten Instead]],[[Eugene Yan]] 介绍如何用 Zettelkasten 笔记法学习机器学习知识
[[@Order Fulfillment Cycle Time Estimation for On-Demand Food Delivery]] 饿了么配送 ETA
[[Effective Flashcard Writing: Decomposing half a chapter of Thinking, Fast and Slow]] 以读[[思考快与慢]]为例,介绍如何制作记忆卡片
[[@A Tour Through My Zettelkasten]] 介绍如何使用 tiddlywiki 构建一个卡片管理系统
[[Spaced Repetition Forget about forgetting]] 介绍间隔重复背后的原理、 Anki 和 Remnote 的实践经验
[[FM]] [[AFM]] [[FFM]] [[@FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction]] [[NFM]]
[[GBDT]] [[XGBoost]] [[LightGBM]]
[[序数回归]] 考虑类别间关系的分类算法
[[@Applying Deep Learning To Airbnb Search]] Airbnb 搜索推荐从 GBDT 迁移到深度学习的尝试记录
[[STGCN]] 时空图卷积网络:用于交通预测的深度学习框架
[[从加减乘除到机器学习]] 机器学习相关的数学书
[[从加减乘除到机器学习/数学要素]]
[[福格行为模型]]
[[how to read a book]] 收集的读书方法汇总
[[Life Long Learning]] 根据李宏毅课程整理的增量学习相关笔记
[[沸腾新十年]]
[[Momentum Contrast for Unsupervised Visual Representation Learning]]
[[MacOS]]
Note
[[巨人术]] 两费技能好难受
[[OKR]]
[[笔记软件]]
[[iPad]] 买来看论文(虽然没有这个习惯……),思考如何在日常生活中使用。
Paper
[[@我的二本学生]] 这本书是作者和学生交流十多年后完成的,整体上按时间顺序给你讲一个又一个人的故事。除了故事之外,也没有给出更多具体的结论。
影响学生的发展大概有下面这三个方面:
最后,读完本书其实不应该感到悲观,书中所写和社会上所说,都是这个群体如何。事实上统计学不对个体负责,还是有机会的
[[服务器]]:购入一台腾讯云 2核4G8M 轻量应用服务器。使用宝塔面板管理,实在是太方便了。已经部署 [[Bitwarden]] 密码管理服务以及 [[WordPress]] 博客……
Note
[[任务术]] 狂野已无「恶魔之钟」,整理一下之前记录的笔记。
[[宇宙偶数术]] 10 月上传说卡组,T1 强度,内战靠贪!
先从 [[铁甲战士 开始练习
[[生命平衡轮]]
[[YJango@学习观]] 很早就收藏的视频,但是一直没有时间看。大概是从机器学习、认知科学角度解释学习,值得仔细看看。
Book
Paper
[[Masked Autoencoders Are Scalable Vision Learners]]
People
[[chyixian]] 文科博士在读,少数派中分享过几篇和阅读相关的文章
[[润Rhuen]] 豆瓣网友,最近在申请博士,每月分享月记。
Game
[[佣兵战纪]] 又肝又氪,冲了 200 多连一个火焰队或自然队都没有开出来,pve 快速推图都做不到……弃坑
[[杀戮尖塔]] 卡牌 Rogue 游戏,比佣兵战纪不知道好玩多少倍!
Book
Note
[[宝宝术]] 想不到暴雪这些零费随从都能进构筑,胡的时候还挺强的。
[[鬼灵贼]] 练习这种卡组,然后被砍了是不是很伤?
[[心火牧]] 一拳超人
[[Life Audit]]
[[Beancount]]
[[万智牌]]
Book
[[平面国]]
[[哲学的故事]]
Note
[[图论]] 可能只会写一手最短路…
[[Things 3]] 印象里面主流的 todo App 就这个没有尝试过,现在正需要一个简单清单软件。重新思考[[任务管理]]。
[[炉石传说]] 这游戏也挺氪的
Paper
[[Privileged Features Distillation at Taobao Recommendations]]:阿里巴巴优势特征蒸馏
[[@Distilling the Knowledge in a Neural Network]]
Book
Another
Paper
Book
[[@苏格拉底之死]]
[[哲学家们都干了些什么]]:有关形而上学、科学与人生的意义的讨论。
Note
[[VS Code]]
[[git]]
[[中概互联ETF]]
Note
20210307 [[数字坟墓]]
20210308 [[OKR]]
20210310 [[OKR 实践]]
20210321 [[Zettelkasten 编码]]
paper
book
blog
合并「博客折腾记:使用 Travis CI 自动部署」到博客折腾记:使用 Travis CI 自动部署博客 | 算法花园 (xiang578.com)
新年新气象!使用木子修改的 hexo-themes-next 主题。
在广告场景下,cvr 模型是这个问题的典型例子,因为转化是有延迟的,即在点击发生后过一段时间用户可能才会发生转化,且往往转化漏斗越深,延迟的时间越长
一种是等待事件的 label 完全回流再进行训练,比如说事件的真实 label 能在一天内完全回流,做天级训练即可,但是这不符合上面提到的 “及时” 的原则;
另一种则是实时把数据送入模型做 online training,但是这不符合上面提到的 “准确” 的原则,因为有些 label 可能还没回流。而实际上,实时性和准确性也是一个 trade-off 的关系。
Delayed FeedBack In Computational Advertising | 吴良超的学习笔记 (wulc.me) 如何解决 label 回传不及时,样本无偏#card
品牌广告往往是一个广告系统发展初期的广告模式,基本流程是广告主先付钱,平台保证曝光,如 cpt,gd 就是典型的品牌广告,前者没什么好说的,固定的广告位在特定位置强出就好了;后者则一般会涉及到库存预估和库存分配两个问题#card
库存预估:gd 承诺的是未来的曝光量,因此需要保证当前售卖的库存不能超过未来的曝光量;一般可以通过时序预估模型来进行预估
库存分配:将库存和 gd 计划作为 supply side 和 demand side 构造二部图,然后通过分配算法进行分配,常见的分配算法有 HWM 和 SHALE
上面的做法只是在解决 gd 广告的保量问题,但是随着优化的精细化,除了保量,还需要考虑一些其他问题,如#card
如果额外考虑以上这两点,#card
上面传统的分配算法就有点问题了,首先库存预估出来的量往往是总体的曝光量,gd 能占用其中多少的量需要拍一个数,或者根据 cpm 分配;
其次,上面分配算法是直接把这个曝光给这个 gd 广告的,不会判断质量的好坏,但我们实际是不希望把太差的量给广告主的,同时也不能对竞价有过多的挤压,
因此需要判断流量对于 gd 计划的质量,需要为 gd 计划考虑一种更加灵活的拿量方法。
综上, gd 广告 需要考虑保量、效果、溢价率以及对效果广告的挤压,因此建模时也需要把这些因素考虑进去。
将一个排序的过程拆成了多个阶段来选择 topk 个候选,带来的问题是每个阶段的排序优化目标可能会有割裂
[[@推荐系统技术演进趋势:从召回到排序再到重排]] 召回应该去适配精排 #card
[[@Embedding-based Retrieval in Facebook Search]] 精排适配新的召回 #card
since the current ranking stages are designed for existing retrieval scenarios, this could result in new results returned from embedding based retrieval to be ranked sub-optimally by the existing rankers
新的 ANN 召回的结果可能并不会被精排认可
那么从媒体 / 平台侧的角度来说,有什么手段去缓解广告主起量难的问题么?#card
+
一般来说,起量难的问题会随着广告候选变多而愈发严峻,而这也可以从 E&E 的角度去解读,因为在 dau 基本稳定的情况下,媒体展示广告的次数是有限的,如果让更多的新计划得到展示机会,势必会挤压老计划,而且新计划起量后,后续能否持续跑量也是个问题,属于 explore 的部分。
因此,一个朴素的思想是固定一些 explore 的 quota,专门用于处于起量阶段的计划,相当于给这些起量阶段的计划开的绿色通道;有了绿色通道后,需要考虑的第二个问题是:哪些计划能通过这些绿色通道?每个计划都给同等的机会显然不是最优的,因为不同计划起量后的表现不一样,因此一种更合理的做法是建模判断这些计划在起量后的表现能力,然后根据表现能力决定计划是否能进绿色通道,同时还需要考虑那些堆计划的 case,避免对相同或只做了微小改动的计划重复进入绿色通道,给更多广告主以探索的机会。
大部分客户投放广告关注的是其 roi(品牌广告其实也可以认为追求的是长期的 roi),而近年各个媒体平台上也出现了各种 roi 类的产品,但是 roi 类的产品要求广告主把付费金额等敏感数据回传,因此大范围推广还需要时间;#card
由于当前的广告系统都是基于 ecpm 排序和扣费的,因此构成 ecpm 的几个元素 (bid, ctr, cvr) 的值必须要准确,才能保证成本不会过高 (广告主亏) 或过低 (媒体亏)
首先需要重点关注的是 ctr、cvr 预估的准确性,而这个问题的难点在于能拿到的训练数据的 label 是 0 和 1 (代表是否点击 / 转化),但是实际中需要预估的是一个 rate,而这导致了没有一个绝对准确的 ground truth,退化成只能通过训练来逼近训练样本中的正负样本的比例,这也是为什么改变了训练样本的分布需要在 loss function 或预估值上做纠偏。另外,从概率论出发,大数定律告诉我们:当样本数量越多,则其算术平均值就有越高的概率接近期望值,但问题是很多计划的的 click、convert 数量非常少,所以训练也没法很好的学习出各个计划的期望 cvr。#card
+
另一个关键因素就是出价了,如果预估完全准确的情况下,按照广告主给定的出价来投放是最优的,但这显然是不太可能,因此#card
无论是在广告还是推荐,冷启动都是一个长期存在的问题,其原因是新用户 / 计划缺少历史数据,模型 / 策略对其学习不够充分,从而效果表现得很差;而在广告场景中,新计划比起新用户的冷启动往往是更常见且严峻的,因为对于成熟的媒体而言,dau/mau 等基本都是稳定的,但广告主会不断地新建计划。#card
在模型上,有不少针对冷启动的 paper,且基本都是针对 nn 这一类 embedding-based 的模型,其基本思路都是让冷启动 item 的 embedding 贴近 warm-up 阶段的状态,笔者将这类方法归纳成两类
(1) 利用 meta-network 为冷启动的 item 生成一个 id embedding#card
第一种方法的基本思想是利用 item 的 meta 信息 (即使冷启动 item 也有) 通过一个小网络 (即 mata-network) 生成 embeddding,然后增加一些 auxiliary task 来训练这个小网络,这些 task 就有很多选择了,更多是对业务的理解,如可以让 meta-network 吐出来的 embedding 与 item 在成熟期的 embedding 误差尽量小 (针对已经步入成熟期的 item 的样本),也可以利用冷启动 item 对网络进行二次的训练等
这种方法的两篇比较典型的 paper 可参考
Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to Learn ID Embeddings
Learning to Warm Up Cold Item Embeddings for Cold-start Recommendation with Meta Scaling and Shifting Networks
(2) 基于 MAML 的方法训练模型,让 embedding 更快收敛#card
策略上往往也需要对冷启动的计划有额外的举措;
一个跟 deep learning 的玄学程度不相上下的领域,这部分内容介绍可参考 [[exploration and exploitation]] 。
同样地,这些 explore quota 也应该根据每个计划的预期表现给予个性化的分配;即需要识别计划未来的表现,毕竟往往个性化分别比起均分都是最优的。此外,这些 quota 必然会对成熟期的计划造成一定的积压,所以也需要考虑冷启动和成熟期的 trade-off。
除了额外的扶持,冷启动的出价方法也需要额外考虑,#card
同时,在实际产品中,往往也需要联合产品教育广告主,冷启动期间就是会存在不稳定性,更容易出现超成本等问题,#card
持续跑量可以认为是计划渡过冷启动后,亦即计划进入了成熟期需要面临的问题,因为广告主在投放追求的往往是两个东西:成本和跑量,在成本能控住的前提下,跑量一般是越多越好的,但现状是在不少的媒体上,计划在进入成熟期不久就会掉量,而且往往是掉了之后就再也起不来了,也就是说计划的生命周期较短。
抛开第三个比较难改变的因素,针对其他几个原因,有一些思路也许值得借鉴#card
链接: https://m.okjike.com/originalPosts/6732c87fa8855e724b728c9b
这篇主要讲教育系统是如何捕获我们的生命力的?但是我感觉对于职场人、打工人也很有启发,因为系统对人的影响是相似的。
1.什么是生命力? #card
项飙认为生命力不等于行动力,对生命力最重要的是意识和行动力之间的间隔。
比如说你在健身和跑步的时候,身体和心理是可以分开来的。
这类任务让你在做无意义的活动时,可以产生一种“有意义的叙述。”
你可以一边跑步,一边让你的脑子从身体中解放出来,做一种“前因后果”的叙述:我为什么要跑步,我可以跑到什么程度,我达到了我设想的目标吗。
但是现在我们生活和工作中的很多任务,是把人这种停下来进行“有意义叙述”的时间剥夺了。
你的脑子没有停下来,而是一直在执行任务,简而言之就是人被工作碾压了。
人被安排在一个又一个任务里,没有“间隔”,脑子被工作任务过多的占有了。
因此,人也就没有能力从行动中抽身出来,反观自己的行动,从而形成叙述。
2.生命力的捕获和劳动力的捕获有什么不同?
比较有意思的是,这个访谈里对比了两个概念。
第一个概念叫劳动力的捕获,劳动力的捕获会产生 异化 , 异化 会让人产生 批判意识 。
第二个概念是生命力的捕获,这种捕获最典型的特征就是 工作 ,不仅占据了你的体力,而且还影响你的意识、注意力、精力等。
横向反思大概的意思,其实也是要抽离出来看待自己的任务。#card
意思就是你在面对一个任务的时候,不要一直想着接下来该怎么办?领导怎么想?我该怎么做?
而是时不时的停下来,想想我在做什么?我为什么要做这个事情?我的状态是什么样的?
行动空间概念可以理解为,你要时刻意识到自己有做其他事情的可能性。#card
1.top school Ph.D Student的能量和心力
research 心法总则 #card
Chonghe Wang(MIT) [[冲气以为和]] #card
Andrej Karpathy(Stanford) #card
Helen姐(Princeton Math Ph.D) #card
因为Helen没有实名上网,所以暂时不放真名,但Helen姐(现在在小红书分享)对我的影响是非常深刻的,她的思想非常先进,关于学习和个人发展的认识也非常深刻。这些分享是她早年间在微博分享的(现在可能已经不可见),我整理和收藏了多年。她对于女性科研工作者也有很强烈的鼓舞。
这些分享揭示了Ph.D的本质,和自学成才的本质,不要被虚荣心蒙蔽,不要为了和别人攀比而学习,不要为了学会什么fancy的名词获得什么title而沾沾自喜,避免无效学习,摆脱线性思维,靠自驱力和motivation,不要在意无关人士的评价。这些观点我相信会对很多人都有启发。
Haoshu Fang(SJTU-MIT) #card
科研第一阶段是学习技能阶段,但是不要上来打基础就打2年(从CS231n看起,Andrew NG的机器学习看起,深度学习花书看起),不是说看书没用,基础知识都必须全部要学,但是AI是高度实践性的学科,一定要知识结合代码。学习技能阶段最好找到active的senior member合作,具体看下文Fang博士的分享吧,要找到有能力愿意带你的前辈,跟着学。
Junior阶段怎么让大佬愿意带你?请见我的第一张图分享:
1.态度诚恳,踏实肯干,从帮别人打下手开始,学习别人的工作流程,工作技能,向有结果的人学习
2.long vision:首次合作愉快才会有长期合作机会(重视reputation,不看重一时得失)。最开始不要去斤斤计较几作,是去学习技能的(写文章,投稿)
科研第二阶段是熟练技能以后,开始以共一或独立做project,这一段时间就是Ph.D的training。
科研第三阶段是准教职阶段,提出大的目标/问题,用3-5年完成/回答。
Jun Cen(HKUST) #card
Cen博士把科研分为了四个阶段,入门摸索阶段-学会科研阶段-精通熟练阶段-合作带人阶段。
相比上面的思路新加了一个合作带人阶段,其实不用等到教职,从Senior Ph.D开始就会接触到这个阶段,学术合作也是很好地拓展自己交际圈和影响力的方式,在带Junior的过程中,训练自己当老师的技能和领导力。
Sida Peng #card
Junwei Liang(CMU)
梁老师是我的恩师,从梁老师这里学到了很多东西,作为AI PhD,如何设定目标,以及如何去达到目标。制作Awesome List也是获得影响力的方式,我的Awesome-Mamba-List受梁老师的insights启发。
工业界 or 学术界目标 #card
如何去达到目标 #card
Guodun Lee(ZJU)
@Gordon Lee 是我的好朋友兼人生导师,教会了我非常多的东西,我的第一篇一作工作,虽然现在看来不完美,但也得到了他的很多帮助。Gordon大量总结了自己读研的经验教训,硕士毕业有2A2B工作,虽然他是这个系列唯一一个MS,但我认为他是有PhD水平的。#card
Runsheng Xu(UCLA) #card
链接: Five Year Research Experience Exploring_By_Yujin_Tang - Google 幻灯片、写在Ph.D第0年:AI/CV科研菜鸟的持续进阶之路 - 知乎
[[1.top school Ph.D Student的能量和心力]]
[[3.非常具体(hands on)的AI科研目标&经验]]
4.我的AI科研CheatSheet与最佳实践
日常科研经验分享 方向和论文 #card
日常科研经验分享:读论文和做笔记 #card
如何提高炼丹能力 #card
为什么要社交 #card
开源项目 #card
我从失败中学到什么 #card
科研的本质是 项目管理 ,身兼:算法,开发,产品,运营(宣传),Manager(项目排期,进度管理)
我开新Project的流程 #card
Junior阶段如何找到大佬带你?#card
+
态度诚恳,踏实肯干,从帮别人打下手开始,学习别人的工作流程,工作技能,向有结果的人学习
如何面对科研中的挫败和无反馈感?#card
+
绝大多数时候失败,极少数时候成功
git管理:看看git commit次数,每天走之前commit一次,给自己正反馈
xiaoguang han 如何想 idea #card
1.git管理:看看git commit次数,每天走之前commit一次,给自己正反馈。 #card
2.Notion记录项目开发和实验日志,带时间戳,“可视化”自己的进展和进步 #card
+
#card 作者认为 V1 中每层只有 w 和 b 两个 d 维向量要学习,参数容量有限,限制模型的表达能力用 d维方阵替代 w
DCN 和 DNN 的连接方案 #card
Isotonic Calibration Layer in DNN
常规校准方法
Platt scaling
isotonic regression
isotonic regression layer
分段拟合,对预测值分桶,每个桶一个可训练的权重 wi
relu 保证非负
ei 由校准特征得到的 embedding
Potential Outcome Framework 简化问题的三个假设
Stable Unit Treatment Value Assumption [[稳定单元干预值假设]]#card
不同个体的潜在结果之间不会有交互影响
干预水平对所有个体一致
单元之间相互独立,一个单元受到的干预不会影响另外一个单元的潜在结果。举一个不满足的反例,某苹果手机降价后销量大涨,相关的手机壳等配件销量也随之上涨,苹果手机和手机壳等就不是独立的,类似地可以用GNN建模该关联。
干预形式是唯一的,对于同一种干预不存在能产生不同潜在结果的其他版本。举一个不满足的反例,如果将降价视为干预,打5折和打9折对销量的影响显然差异巨大,而应该将不同的折扣建模为多值干预。
[[No unmeasured confounders]] 没有未测量的混杂因子#card
可忽略性/非混淆假设(Ignorability / Unconfoundedness Assumption
给定X,则分配机制与Y无关
如果两个个体的x一样,则无论W是什么,其潜在结果一样
如果两个个体的×一样,则无论潜在结果是什么,它们的分配机制都一样
背景变量包含了所有的混杂因子。如果背景变量仅包含了部分混杂因子,那就无法去除干净伪相关的影响,预测的因果效应就存在高低估问题。不过想要做到这点挺难的,有时候我们都不知道有哪些混杂因子,更别提把它们都包括进来。
相同背景变量的单元无论受到何种干预其潜在结果也相同,并且无论潜在结果如何其受到的干预机制相同。
Positivity [[正值假设]]#card
干预是确定的,对于任何背景变量的单元,每一种干预的概率大于0。
and
common support / overlap
思路:ALiBi(Attention with Linear Biases)#card
举例:两个token之间存在一个相对位置差1,就加上一个 -1 的偏置,如果token之间的距离越远则这个负数就越大,代表它们之间的相关性更低。#card
代码 #card
两层 [[DCNv2]] 提供足够的交叉,但是会显著增加训练和推理时间。采用两种策略提高效率 #card
replaced the weight matrix with two skinny matrices resembling a low-rank approximation
reduced the input feature dimension by replacing sparse one-hot features with embedding-table look-ups, resulting in nearly a 30% reduction.
low-rank cross net 中引入注意力机制 #card
通过 temperature 平衡学习到的特征交互复杂度
skip connection 和 fine-tuning the attention temperature 有助于学习更复杂的特征俩惯性,并保持稳定的训练。
设计目标:通过绝对位置编码的方式实现相对位置编码 #card
设计思路:在NLP中,通常会通过向量q和k的内积来计算注意力系数(ATTN),如果能够对q、k向量注入位置信息,然后用更新的q、k向量做内积就能丝滑地引入 位置信息 了。
图3-1:RoPE的两种解释(左:直观解释,右:原始推导)#card
图3-2:RoPE的操作示意图#card
@LLM实践--理解Language Model是如何到PPO的 理论篇
链接:LLM实践–理解Language Model是如何到PPO的 理论篇 - 知乎
在下面的文章里,我们约定,在语言模型的场景下: 表示一条文本X采样自数据集D #card
假设我们数据集D只有下面4条文本。
中国的首都是哪里?北京。
中国的首都是哪里?中国的首都是北京。
中国的首都是哪里?中国的首都不是广州和武汉,是北京。
中国的首都是哪里?中国的首都不是广州,是北京。
约定 表示一条文本中的第 t 个token, 表示所有 t 之前的token。
奖励模型作用 :-> 给定一条文本X,奖励模型可以给这个文本打分 ,表示这条文本在人类定义的偏好下的好坏。
其中 和 分别表示好,坏文本的奖励分数。一般取每个文本最后一个token的 logits,乘一个shape=[embedding_dim,1]的矩阵,映射成一个1维分数。
从奖励模型的loss上看,模型建模的是相对分数,而不是绝对分数,实际也是如此。
不同domian的分数区间是不同的,很难找到一个统一的阈值划分好坏,所以用的时候一般要伴随使用norm(或者baseline)。
一个是KL散度的方向:假设需要训练的模型是分布 A ,作为基准的分布是分布 B ,从训练分布中采样的 称为正向KL,从基准分布中采样的 称为反向 KL 。 #card
正向 KL 有模式坍塌,反向 KL 会更全面的覆盖基准分布,但是部分概率拟合偏差较大。
在Post-train之前的阶段我会优先使用反向KL,比如预训练,持续训练,蒸馏,因为此时模型学习的目标是尽可能全面的覆盖自然世界知识。
在Post- train我一般优先尝试正向KL,这个时候模式坍塌是不可避免的,也是可接受的。
一个是KL散度的估计方式
蒙特卡洛估计是无偏的,当采样趋近于无穷的时候估计的就是KL散度本身,但是在采样数量少时方差太大。
离散KL散度本来是非负的,但使用蒙特卡洛估计时值可能为负。所以一个简单的考虑是让估计值非负来减小方差,绝对值估计或 [[K2 估计器]] 。
观察我们的数据集D,既然我们有一个能给文本打分的reward模型,不妨假设模型会这样给每个条数据打质量分:#card
虽然正确,但是太简短了,
的回答主谓宾完整,质量好于第一条,质量分
虽然也是正确的,但是"不是广州和武汉"明显是冗余的,质量分
正确的且比 废话少一点
既然训练语料有了质量分,那么一个自然的想法就是让质量更高的文本在训练时的loss重要性高一些,反之则低一点。那么我们可以优化一下语言模型loss,改写成下面的形式:#card
只要保证r不小于0,新loss函数优化得到的模型就依旧是语言模型。
加权loss等价于对数据进行上、下采样。r=0.5等于在batch中下采样一倍,2等价于上采样一倍。所以只要数据集没有问题,加权loss训练的模型也不会崩。(这是理论上的情况,在实际中rejection sampling连加权都没有,也能给模型训崩,这个我们放在实验篇讨论)
形式上一致
强化学习
语言模型
区别是一个数据数据采样自模型,一个采样自数据集
如何奖励模型能对每一个 token 打分,加权语言模型 loss 改写成 #card
一旦计算token级别的权重,这个loss优化出来模型就已经不是统计意义上的语言模型了,因为这是对每个token做不同的上、下采样。#card
通俗理解:把一句话说两遍这句话还是自然语言,但是把一句话话中的某个字说丙扁这就不不是正常的语言了。另外,就算是文本级别的权重,如果取负值,那么优化的目标将不再是最大化对数似然,自然模型也不是语言模型。
一旦loss是非语言模型loss,训练就有可能崩溃,因为此时模型的优化目标并不是“模型依概率采样出一句话”,优化目标和我们的采样行为出现了gap。
此时就需要在基础loss上引入KL散度约束。此刻起优化目标彻底脱离“最大化数据的对数似然”,变为“最大化奖励的期望”。
在这之后我会称呼我们正在训练的这个用来说话的模型为策略模型。
学习目标的意义是 :-> 当采样一个token的分数 rt 为正,就会增加这个token的概率,分值越高增加的程度就越高。反之如果 rt 为负,则减小这个token的概率。
即当token序列为 ,采样这个动作 只影响 的奖励,只要 的奖励 高, 就好。
马尔可夫假设是个很强的假设,很少有这么理想的情况
中国的首都是哪里?中国的首都不是广州和武汉,是北京。
中一个“不”字不仅让“中国的首都不”的奖励降低,还让后面“是广州和武汉”这么多token帮着往回拐。所以采样的token不仅应该对自己负责,还应该对后续token的奖励负责。将 loss 改成 #card
,
loss 的含义 #card
当采样一个token 后,这个token之后所有token的总奖励分数 为正,就会增加这个token的概率,分值越高增加的程度就越高。反之则降低这个token的概率。
在强化相关的算法中,我们会看到很多 而不是更常见的 ,基本都是源于这种"向后负责"的思想。
再进一步,一个token对后续每个token负的责也不都是一样的,直觉上应该是距离当前位置越远,token对其负责越少。所以我们改造一下奖励的累计方法:#card
是一个0-1之间的超参,越大表示对后续token负责越多,趋近于 0 表示不对后续负责, 1 表示对后续负全部责任。这个改造后的累计函数就是我们之后实际使用的累计函数,在强化中也称为回报(return)。
#card 观察图中给出的例子,由于这句话整体是正确的,所以虽然有一些废话token分数不高,但也都是正的。相当于所有token的概率都在增加,只不过不好的token增加的慢一点。这样只有等到其他更好的token概率足够高了,才能消灭掉不好的token。显然这样的学习效率很低,甚至可以说是错误的,这些错误token的概率就不应该增加。所以我们可以给这些分数做一个中心化,全部减去一个值,让分数有正有负,更明显的区分出好坏,公式可以表示为:
+
+ 减去的这个值,我们就称它为baseline。之所以叫baseline,是因为这是一句话的“基准”,它表示了一句话的平均好坏,如果这个句子是模型采样生成的,则也表示这个模型现有的平均能力。
在强化的训练过程中,训练使用的文本是采样出来的。假设我每次都采样两条进行训练,某一次采样出了 和 完全正确,每个token都是1.5分。
但是如果我只采样一条数据训练,且不幸采到了 ,那么"不"的概率将提升,模型的学习方向是错误的。这并不是说采样采的不对,也不是奖励模型打分错了。
而是当采样次数不够多时,分数无法准确的反应奖励模型真正希望模型去改进的方向(不是"不是广州和武汉"是错的,而是奖励模型更想要不废话的答案)。
这个奖励模型希望我们改进的方向是期望,而采样与这个期望的距离就是我们所说的方差。在micro-batch梯度下降这种优化方式下,过大的方差会导致模型无法收敛。
既然减去baseline作用这么大,下面我们就看看这个baseline应该怎么确定。一个朴素的想法是,用每个token的平均分作为baseline。
+ 比如图中这些token的平均分是0.76,那么减去之后每个token的分数变成:#card
+ 这样该正的正,该负的负,更符合我们的期望了。
+ 但是这么做有个问题,如果仅使用每条数据自己的均值,就意味着一个句子中的token必定有正有负。#card
+ 这会导致好句子中有部分token的概率会下降,坏句子还是有一部分token概率会上升。
+ 为了更加准确的估算这个baseline,我们应该将视野扩大,不仅关注一个token在一条数据中的相对好坏,更要从整个数据集的角度看一个token是好是坏。
在统计学中,整体的角度就是指期望。我们可以尝试计算文本中每个token的期望回报 。用数据集D举例说明一下这个期望分数是怎么算出来的:
+ 上表是我们数据集中的4条数据。最后一列是在最开始"加权语言模型"这一节中给出的文本级别的分数。#card
+ 为了好算,我假设一句话中每个token的回报都等于这句话的reward,也就是 $G\left(x_t\right)=r_T$
+ (这个假设等价于只给最后一个token打分,其他都是 0 ,并且 $\gamma$ 为 1 。
+ 这是可以实现的假设,并且也确实是实际会用到的一个假设)。
+ 计算 $X_4$ 中每个token的期望回报 $E\left[G\left(x_t\right)\right]:$
+ $E\left[G\left(x_1^4\right)\right]=E[G( 中 )]$ ,这里需要理解的一点是 $E\left[G\left(x_t\right)\right]$ 和 $G\left(x_t\right)$ 是错位的关系。#card
+ $G\left(x_t\right)$ 表达的是采样了 $x_t$ 后的回报。
+ 而 E 是期望,期望就意味着是取遍了 $x_t$ 所有可能的值后计算出的平均,它反应的其实是 $x_t$ 的前缀 $x_{<t}$ 的回报。
+ G (中)的前缀为空,所以就是整个数据集的均分 $=\frac{1+1.5+0.7+0.5}{4} \approx 0.93$
+ $E\left[G\left(x_2^4\right)\right]=E[G( 中国 )]$ ,#card
+ 也就是计算所有第 1 个token为"中"的数据的平均回报。
+ X2, X3,X4三条数据满足要求,所以平均回报是 $\frac{1.5+0.7+0.5}{3}=0.9$
+ $E\left[G\left(x_3^4\right)\right]=E[G( 中国的 )]$ #card
+ ,也就是计算所有前 2 个token为"中国"的数据的平均回报。
+ $\mathrm{X} 2, ~ \mathrm{X} 3, ~ \mathrm{X} 4$ 三条数据满足要求,平均回报是 $\frac{1.5+0.7+0.5}{3}=0.9$
+ $E\left[G\left(x_7^4\right)\right]=E[G(中国的首都不是)]$ ,#card
+ 这个时候只剩下X3,X4满足要求,平均回报= $\frac{0.7+0.5}{2}=0.6$
+ #card $E\left[G\left(x_{11}^4\right)\right]=E[G(中国的首都不是广州,是)]$ ,
+ 这个时候只剩下X4满足要求,平均回报 $=0.7$
+ 观察X4,会发现前几个token"中国的首都"都是对的,但是减去期望后分数却是负的 -0.2 。这种不合理来自于#card
+ 我们将 $\gamma$ 设定为 1 。这就导致"中国的首都"几个字要为后面的"不是..."负全部责任。
当使用期望作为baseline时,策略模型的loss函数写成:
理解一下这个loss函数: #card
表示的是采样了 后的句子有多好。
表示还没有采样 时前缀有多好。
如果采样 后句子比采样之前更好(差值为正),就说明这个采样是好的,则增加概率,反之则减小概率。
这个loss是理想的目标,但是在实际RLHF训练的过程中,我们无法计算 ,因为#card
RLHF时answer都是实时生成的。
只有SFT,RS,DPO这种固定训练集的算法能计算出整个数据集的期望。
没有办法计算就只能想办法近似。
,用函数 来近似计算
近似函数可以怎么设计 #card
用贪婪采样的句子奖励来近似模型的"平均能力": ,这就是ReMAX。
可以对一个prompt采样多个answer ,然后用平均奖励来近似: ,这就是GRPO。
如果在计算平均奖励时,"扣掉"正要训练的这条数据,计算除此之外其他文本的奖励均值,就是RLOO。
这种基于采样的近似方法有个特点,因为采样就会导致新的baseline answer 和我们要训练的数据长度不一致,因此没有办法按位对齐回报和baseline。#card
有这么多种baseline的选择,那种好呢?一般评判baseline可以用两个指标:#card
是否能够不改变梯度期望比较好证明:#card
只需要证明后面一项 ,就能说明没有改变期望。用一下上文提到的对数求导技巧:
E \nabla_\theta B\left(x_t\right) \log P\left(x_t \mid x_{<t}\right) & =B\left(x_t\right) E \nabla_\theta \log P\left(x_t \mid x_{<t}\right) \
& =B\left(x_t\right) \sum P\left(x_t \mid x_{<t}\right) \nabla_\theta \log P\left(x_t \mid x_{<t}\right) \
& =B\left(x_t\right) \sum \nabla_\theta P\left(x_t \mid x_{<t}\right) \
& =B\left(x_t\right) \nabla_\theta \sum P\left(x_t \mid x_{<t}\right) \
& =B\left(x_t\right) \nabla_\theta 1 \
& =0
\end{aligned}
+ 也就是说只要 $B\left(x_t\right)$ 与 $\nabla_\theta, E_{x_t \sim P\left(x_t \mid x_{<t}\right)}$ 无关,可以从求导和期望符号里提出来,这一项就为 0 。 + 比如ReMax中, b 是贪婪采样的answer奖励 $r_{X_{M A X}}$ 。 $X_{M A X}$ 和正在训练的句子是无关的,奖励模型也无关,所 B 就可以提到前面。 + 再比如RLOO,b是除训练文本之外的其他文本的奖励均值,所以也可以提出来。 + 但是GRPO计算时,b是包含正在训练的文本的奖励均值,就提不出来。 + 至于方差是否降低则各有各的证明方法,这就麻烦去看各个论文的原始推导吧。 ## 价值函数 + 除了这种用采样来逼近 $E[G(x)]$ 的思路,还有另一种深度学习中也很常见的思路:算不出来的东西,就用 **模型** 去拟合。 + $\mathcal{L}=\sum_{t=1}^T\left[G\left(x_t\right)-V\left(x_t\right)\right] \log P\left(x_t \mid x_{<t}\right)$,用一个模型去拟合 $G$ 的期望 $V_\zeta(x) \sim E[G(x)]$ + V在强化学习中称为 **状态价值函数** ,模型称为critic模型。在训练策略模型时,critic是不训练的,可以视为常数baseline。 + 那critic模型怎么训练呢?critic模型是在预测 $E[G(x)]$ ,这是一个典型的回归任务,那么就可以用 :-> 均方差损失来优化 $\mathcal{L}=\sum_{t=1}^T \frac{1}{2}\left(E\left[G\left(x_t\right)\right]-V\left(x_t\right)\right)^2$ + 这里又有 $E[G(x)]$ ,所以还是老办法,用采样来近似,#card + 这不过这里不需要向上面那样既采样训练用的answer,又采样baseline的answer了,直接用训练answer就可以了: + $\mathcal{L} \approx \frac{1}{2 N} \sum_{i=1}^N \sum_{t=1}^T\left(G\left(x_t^i\right)-V\left(x_t^i\right)\right)^2$ + 这个训练目标理论上是可行的,但是实际训练时这种方法比较难优化。 + id:: 67ffd3f6-13d1-49bf-9fa9-e767d9c30d2b
V\left(x_t\right) \sim E\left[G\left(x_t\right)\right]=E\left(r_t+\gamma r_{t+1}+\gamma^2 r_{t+2}+\ldots+\gamma^{T-t} r_T\right)
#card + $V\left(x_t\right)$ 需要去拟合的这个 $E\left[G\left(x_t\right)\right]$ 是 r 的累加,和所有随机采样的 $x_t, x_{t+1}, \ldots, x_T$ 都有关。这里随机变量太多,比较难优化。这就相当于diffusion 模型从 $z^t$ 一步预测所有 $z^{t-1}, \ldots z^0$ ,语言模型从 $x_t$ 一步预测出 $x_{t+1}, \ldots x_T$ 。语言模型的做法是只预测下一个 token,那这里我们也想办法让V只预测一步。 + $G\left(x_{t+1}\right)$ 的表达式为: +
G\left(x_{t+1}\right)=r_{t+1}+\gamma r_{t+2}+\ldots+\gamma^{T-t-1} r_T
+ 带入 $G\left(x_t\right)$ 的表达式: +
G\left(x_t\right)=r_t+\gamma G\left(x_{t+1}\right)
\begin{aligned}
V\left(x_t\right) \sim E\left[G\left(x_t\right)\right] & =E\left(r_t+\gamma G\left(x_{t+1}\right)\right) \
& =E\left(r_t\right)+\gamma E\left[G\left(x_{t+1}\right)\right] \
& =E\left(r_t\right)+\gamma V\left(x_{t+1}\right)
\end{aligned}
+ 老样子这还是一个回归任务,用均方差损失,$E\left(r_t\right)$ 用采样来近似, + $\mathcal{L}=\frac{1}{2}\left(E\left(r_t\right)+\gamma V\left(x_{t+1}\right)-V\left(x_t\right)\right)^2 \approx \frac{1}{2}\left(r_t+\gamma V\left(x_{t+1}\right)-V\left(x_t\right)\right)^2$ + 这种将一次采样所有再进行拟合的训练方式,转化为采样一步+函数下一步的值来近似的方法:$G\left(x_t\right) \rightarrow r_t+V\left(x_{t+1}\right)$ ,就叫做时序差分法(Temporal Difference)。#card + 本质上来说这种方法存在的意义就是为了降低随机性,也就是降低方差。 + 当 $V\left(x_t\right)$ 是 $E\left[G\left(x_t\right)\right]$ 的无偏估计时,TD法也是蒙特卡洛法的无偏估计。 + 但是事实上 $V\left(x_t\right)$ 做不到无偏估计 $E\left[G\left(x_t\right)\right]$ ,所以TD法也是有偏的。 ## 优势/动作价值函数/状态价值函数 + 策略函数的loss $\mathcal{L}=\sum_{t=1}^T\left[G\left(x_t\right)-V\left(x_t\right)\right] \log P\left(x_t \mid x_{<t}\right)$ + 同样的动机(降低方差),同样的形式,我们也用TD法改造一下:#card + $\mathcal{L}=\sum_{t=1}^T\left[r_t+\gamma V\left(x_{t+1}\right)-V\left(x_t\right)\right] \log P\left(x_t \mid x_{<t}\right)$ + $\mathcal{L}=\sum_{t=1}^T\left[r_t+\gamma V\left(x_{t+1}\right)-V\left(x_t\right)\right] \log P\left(x_t \mid x_{<t}\right)$ 到 $\mathcal{L}=\sum_{t=1}^T A\left(x_t\right) \log P\left(x_t \mid x_{<t}\right)$ + 这里面的 V 我们已经说过了,它叫状态价值函数,表达的是 :-> 没有采样 $x_t$ 时句子的回报。 + 我们记:$Q\left(x_t\right)=r_t+\gamma V\left(x_{t+1}\right)$ ,称为动作价值函数,表示 :-> 执行了"采样 $x_t$"这个动作后句子的回报。 + 记:$A\left(x_t\right)=Q\left(x_t\right)-V\left(x_t\right)$ ,称为优势,表示 :-> "采样 $x_t$"这个动作相比于没有采样时的优势。 ## [[GAE]] + 表示时序差分 $\mathrm{T}-\mathrm{t}+1$ 步的近似,也就相当于完全通过采样来近似,就等于 $G\left(x_t\right)$ #card + 看到我们的动作价值函数: +
Q\left(x_t\right)=r_t+\gamma V\left(x_{t+1}\right)
T D(1)=Q\left(x_t\right)=r_t+\gamma V\left(x_{t+1}\right)
+ 表示时序差分一步对 $G\left(x_t\right)$ 的近似,那么TD(2): +
T D(2)=r_t+\gamma r_{t+1}+\gamma^2 V\left(x_{t+2}\right)
\begin{aligned}
T D(T-t+1) & =r_t+\gamma r_{t+1}+\ldots+\gamma^{T-t} r_T \
& =G\left(x_t\right)
\end{aligned}
+ 之前我们提到过,$T D(1)$ 是有偏的,偏差来自于 V 的偏差,但是它的随机变量少,方差低。随着TD函数的递增,采样越来越多,方差越来越大,但是 V 的占比越来越小,偏差越来越小,直到彻底变为 $G\left(x_t\right)$ 。两种方法各有各的好,对于这种"多个方法各有各的好"的情况,一个常见的做法是找 n 个和为 1 的系数,乘在每个方法上求加权和。看下面这种加权法:#card + $(1-\lambda) \sum_{n=1}^{\infty} \lambda^{n-1} T D(n)=(1-\lambda) T D(1)+(1-\lambda) \lambda T D(2)+\ldots +(1-\lambda) \lambda^{\infty} T D(\infty)$ + 首先把系数拿出来是一个几何级数 $(1-\lambda) \sum_{i=0}^{\infty} \lambda^i$ ,在 $\lambda<1$ 时收敛,系数和确实为 1。 + 再看每一项,当 $\lambda$ 越趋近于 0 时,$T D(0)$ 的占比越大,当 $\lambda$ 趋近于 1 时,$T D(\infty)$ 的占比越大。通过调控 $\lambda$ ,可以控制是用方差更小的时序差分法,还是偏差更小的蒙塔卡罗法。将这种"我全都要"方法带入优势的计算公式,就是广义优势估计: +
\hat{A}\left(x_t\right)=\left[(1-\lambda) \sum_{n=1}^{T-t} \lambda^{n-1} T D(n)\right]-V\left(x_t\right)
+ 这种写法是为了方便理解广义优势估计是如何平衡TD法和蒙特卡洛法的,实际使用的时候,下面这个公式更方便计算:#card +
\delta_t=r_t+\gamma V\left(x_{t+1}\right)-V\left(x_t\right)
\hat{A}\left(x_t\right)=\sum_{l=0}^{\infty}(\gamma \lambda)^l \delta_{t+l}
+ 引入GAE后策略模型的loss函数为:#card + $\mathcal{L}=\sum_{t=1}^T \hat{A}\left(x_t\right) \log P\left(x_t \mid x_{<t}\right)$ ## [\[\[重要性采样\]\]](/post/logseq/Importance%20Sampling.html) + 当有两个支撑集相同但概率密度不同的分布A、B时,可以在其中一个分布上采样,并利用修正系数,计算出另一个分布上的期望。 + 在训练的过程中为什么会存在两个有差异的分布?#card + 这就要从训练的方法上说起。在实际训练过程中,我们会先 根据rollout batch size采样出一批QA数据,然后再以 train batch size从这些QA中采样数据进行训练。这个 rollout batch size一般会大于 train batch size,也就是说train一个batch后,模型的参数更新了,但是rollout的数据还没训完,还得接着训。 + 这个时候rollout出来的数据是train这一个batch之前的模型采样出来的,这就导致采样模型和训练模型出现了偏差。rollout之所以会大于train是为了增大推理时的吞吐,提高推理效率。 + 但是这个推理过程其实可以被cover掉,比如我最近写的框架就将infer和train重叠了。 + 现在最新的vllm支持了sleep,且megatron和vllm的模型切分方式是相同的,理想情况是megatron将优化器卸载,通过共享内存将参数传递给vllm进程,原地转为vllm推理,然后vllm再sleep原地转megatron训练,性能更高。 + 所以rollout batch size现在也不是非要大于train。另一个可能的差异来源是一次rollout训多个epoch,这个就没办法了。 ## CLIP + 这个截断目的不是真的要把修正系数限制在某一个范围,而是要抛弃修正系数上下溢的数据不进行训练。 #card + 首先假设 $A$ 为正数,如果修正系数上溢,则被截断为 $1+\epsilon$ ,此时截断项比未截断项更小,会被min函数选中。如果下溢,截断项大于未截断项,截断项不会被选中。 + 截断后是没有梯度回传的,所以截断项被选中意味着这条数据被抛弃了。 + 理解一下:当A为正数,意味着应该增大 $x_t$ 的概率。如果此时发生上溢,则表示相比于采样模型,策略模型对 $x_t$ 的概率增加的已经很多了,不要再增加了。 + 如果下溢表示增加的还不够多,还可以继续增加。 + 如果 $A$ 为负数,逻辑也正好反过来。 ## Reference + 开头提到了KL散度,但是我们还没提PPO是怎么用的。之前还埋了一个伏笔,我们说把给整个句子打分的reward升级成了给每个token打分的reward,也没说是怎么升级的。其实在PRM之前没人升级这个,reward还是只给最后一个token打分,其他token的分数其实是用KL散度打的:#card + $r_t=\beta\left(K L\left(P_{\text {policy }} \mid P_{\text {reference }}\right)\right)=-\beta \log \frac{P_{\text {policy }}\left(x_t\right)}{P_{\text {reference }}\left(x_t\right)}$ + $\beta$ 是一个0-1之间的系数,当策略模型的概率高于reference,则r为负降低概率,反之则增加概率。也就是说这里KL散度是被乘在概率上了。当然另一种做法就是像GRPO那样,直接在策略loss之外单独加一个KLloss,这也是KL loss常见的用法。这两种方法的差异我感觉理解的还是太透彻,希望有其他大佬能够解惑。 + 另外这里还涉及一个小细节,就是critic模型在训练的时候,可以选择拟合这个算了 kl 的 reward,也可以拟合没有加上kl的reward,我倾向于不算。 ## 评论区 + 从您这学习到很多,有一个问题想要请教一下。对于GRPO这种将KL项提出来的,那么同一个response的每个token的Advantage是不是都一样了呢,是不是就是您所说的加权语言损失。。。 谢谢! #card + 不一样,是语言模型loss有两个要求,一个是sentence粒度权重,一个是权重非负,grpo不满足权重非负。 引入kl确实可以视为一种token粒度的奖励,但是这个奖励意义到底是什么,是否真的需要是需要讨论的。事实上我们现在一般不怎么加kl了,加kl权重也很小,千分之一万分之一这种。 + 突然发现引入kl本身是不是就会对不同token带来不同影响呀,不知道我的理解对不对 + 想请教老师一个问题,GRPO对比RF++,前者是在一个问题内采样的多个轨迹上算baseline,后者我不是很清楚,它是相当于有一个batch size=n的问题,每个问题采样一个(?)轨迹,然后n个问题-轨迹得到的reward计算baseline吗?#card + grpo和reinforce++的本质区别应该是是group norm vs batch norm。至于kl放在哪里,每个prompt是采样一个response还是多个都是可调超参。 + 此刻起优化目标彻底脱离“最大化数据的对数似然”,变为“最大化奖励的期望” `` 这句话该怎么理解呢?#card + 只要模型还是在最大化对数似然,就还是语言模型,loss本身不会导致模型说不出人话。对于模型的优化,还是以数据正确性为主而不是训练稳定性。 在变为最大化奖励之后,模型的唯一目标就是追求高奖励,可以用不说人话、hack等等一切方式提高奖励。这个时候就要开始考虑训练稳定性了。 + 但实践中碍于各种因素影响,也不是说最大化对数似然就一定不会崩,比如on-policy的rejection sampling,模型依旧可能崩。这个原因比较复杂,我打算下一篇实验篇再展开。 +
链接: 一文搞懂SuperMemo的基本元素及其与渐进阅读的联系 - 知乎
concepts
#card
@为什么最近几年,没人在推荐系统里去玩 GNN 模型,GNN 是凉透了吗?
[[@曾经火热的Graph Embedding和GNN在推荐系统上还有前途吗?]]
雨飞:GNN的本质是抽取图里面的信息,找到物品和用户之间潜在的关系,说白了相当于去找用户与物品之间多跳的潜在联系,所以这种模式本身还是做用户和物品的特征。#card
这样你就会发现,在之前的推荐系统中,我们已经添加过很多用户侧、物品侧的特征以及两者的交叉特征,而GNN还是加入的是这种特征,因此学习信号太弱了,整体带来的收益就不会很明显,甚至说反而引入了复杂结构而导致效果下降或者推理速度下降。
当然这并不是说GNN就一定没有收益,比如某一些用户行为不充分的场景下,使用图链接的方式可以补充一些行为数据。潜在的问题就是,有更简单的,比如node2vec、line等方法也可以做图的embedding,速度快,效果也还算可以。因此,GNN在有限的成本以及时间的要求下,基本不会是最优或者次优的选择了。
@看DeepSeek R1的论文时,我突然想起了AlphaGo
看DeepSeek R1的论文时,我突然想起了AlphaGo - 知乎
R1的reward模型就给我留下了深刻印象:基于规则的奖励模型。
R1在文中提到,自己为什么没有用PRM:#card
第一,在一般推理中,明确界定细粒度的推理步骤比较困难。
第二,判断当前推理中间步骤是否正确非常困难。使用模型进行自动标注差强人意,而手动标注不利于扩大规模。
第三,一引入基于模型的 PRM,就不可避免地会有奖励劫持问题,动态重训奖励模型资源开销大。
因为从事LLM之初,我首先负责的是预训练,所以一个方法能否 scaling up 成为了我后面做持续训练、post-train时,评估这个方法最终能不能work并上到线上模型的重要维度(事实也证明,这样的方法基本都是work的),所以我很认同第二点。#card
虽然现在有很多MC构造数据训练PRM的方法可以scaling up,但是前段时间qwen 数学推理的论文也提到了MC的方法就是会有幻觉,不如llm as judge,更不如人类标注,这里R1索性不用PRM了。
但是r1因为要避免reward hacking,直接连基于模型的ORM都抛弃了,我觉得还是有魄力的。毕竟有不少工作表明了稠密reward在抗噪和提点方面的优势。
但是仔细想想,其实qwen的那篇论文也提到了ORM有一定的PRM的特性,其实也会出幻觉(hacking)。
对于模型主体训练,R1使用了一个多阶段策略:#card
首先利用base 模型+ 一些prompt + rule-based reward ,跳过SFT直接上GRPO强化,目标是让reward提升,也就是提升做题准确率。这个过程中模型的输出不断变长,开始学会反思,但是这个阶段的推理过程很难理解。这个时候的模型命名为R1 Zero
第二步利用 R1 Zero 生成数据进行RS,留下推理过程正常的。再混合一些非推理数据,对base 模型SFT,再上强化,得到最终的R1。
首先能够直接在base模型上RL我不是很意外,因为我们现在都会把SFT数据加到pretrain里。比如qwen系列的pretrain模型,调一调prompt,基本的指令是能follow的。而且模型越贴近pretrain,幻觉越少这一点也让我看好这种做法。#card
其次是看到模型自然的产生反思我也不是很意外,在我做的一些RLHF的实验中,模型只要输出能够变长,经常能看到自然的出现反思,不过我的反思大多最终反思出一个错误的结果。
我猜测是因为如果模型输出有变长的趋势,在输出完答案后,自然会用剩下的“额度”去check答案对不对。不过这两年的大模型经验也让我认识到一点,模型一个能力的“涌现”,必定是训过这种类型的数据。所以根本问题其实是为什么强化能在采样的过程中采出这种response,以及为什么模型可以学会这种response而不是更多的去学别的response。(强化的时候模型的输出为什么变长或变短,为什么学了这种类型而没学另一种类型的response,探索稳定训练的症结所在,正好是我最近的研究内容,希望能有个明确的结果)
另一个是关于GRPO使用的KL loss。这个KL loss不是像 PPO 一样加在 reward 里乘在概率上,而是单独减去这个KL loss。并且这个KL loss 使用了 [[K3 估计器]] 估计,而不是直接用蒙特卡洛估计。#card
我在做RLHF、蒸馏、自约束等需要KL loss的方法时也发现,当使用乘性KL时,比如将KL蕴含在reward分数里,乘在动作的对数概率上:
& r_{x_t}=\operatorname{reward}\left(x_{<t}\right)-\beta K L(\theta | \text { ref }) \
& J=f\left(r_{x_t}\right) \log \pi_\theta\left(x_t\right)
\end{aligned}
K L(\theta | r e f)=E_{x_t \sim \pi_\theta} \log \frac{\pi_\theta\left(x_t\right)}{\pi_{r e f}\left(x_t\right)} \approx \frac{1}{N} \sum_{x_t} \log \frac{\pi_\theta\left(x_t\right)}{\pi_{r e f}\left(x_t\right)}
J=f\left(r_{x_t}\right) l o g \pi_\theta\left(x_t\right)-\beta K L(\theta | r e f)
+ 一旦不是计算全词表KL,而是采样计算KL,基本都需要确保低方差KL的方案,不能再使用蒙塔卡洛估计。可以使用GRPO中的K3估计器,甚至直接上个绝对值或者平方都比蒙塔卡洛估计效果好。 为什么想起了AlphaGo#card + 其实我不是在读到R1后面说从AlphaGo汲取灵感,使用MCTS但是失败了这里想到的AlphaGo。我是看到 R1 zero 到 R1 这里想起AlphaGo到AlphaZero。这正好是一个相反的过程。AlphGo用模仿学习+强化训出了一个极强的AI,然后抛弃人类,直接自我博弈产生了AlphaZero。我记得之前听一些下围棋的同学说过,他们看AlphaZero的开局看不懂,不建议跟AlphaZero学围棋。deepseek使用Zero进行冷启,但是Zero的思考过程难以理解,所以从zero生成的数据中拒绝采样,留下一部分规整的数据SFT+RL产出正式版R1。 + 所以我这里擅自猜测,deepseek会不会是先用SFT+RL训了一版,然后再训出的Zero,发现Zero效果喜人才拿来做RS训出正式的R1。 + 另一个点是GRPO、RLOO这种采样多次作为baseline的做法,相比于贪婪采样和一次采样+value function,更像AlphaGo的MCTS。不过可惜的是deepseek的探索失败了。
报错提示:{ code: 4100, message: '身份认证失败,用户身份验证失败', codeDesc: 'AuthFailure' }
看项目 lxl80/hexo-deployer-cos-cdn: Hexo部署插件,支持将静态博客发布到腾讯云对象存储中,并同步刷新被更新文件的CDN缓存。 issues 里面讨论,cos 修改了相关的接口,需要修改代码。不过这个包的作者上次更新是在 4 年前。
Pull 里面有一个修改版本 vice2city/hexo-deployer-cos-cdn 解决这个错误,暂时先用一下。
pnpm install github:xiang578/hexo-deployer-cos-cdn
安装Nature 的封面是关于一种印度洋中部的查戈斯群岛上的一种名为“红脚鲣鸟”的海鸟,这种鸟在在矮灌木及小乔木上结群营巢。#card
Science 封面提到了两个核心概念:中微子和耀变体。#card
为了探测中微子,科学家们在南极洲建立了“冰立方中微子观测站”。一些直径约为 35cm 的,圆形的数字光模块被放置到冰面以下 2.5 千米的地方。超过 5000 个数字光模块形成了一个巨大的一平方公里的探测器。这些数字光模块可以检测到高能中微子与冰相互作用中释放的极其微弱的光。最终科学家们利用“冰立方”检测到了来自耀变体的中微子。
另一个在流行文化中占了很大分量的思想实验是 “无限猴子定理”,也叫做“猴子和打字机” 实验。定理的内容是 :-> 如果无数多的猴子在无数多的打字机上随机的打字,并持续无限久的时间,那么在某个时候,它们必然会打出莎士比亚的全部著作。
猴子和打字机的设想在 20 世纪初被法国数学家 Emile Borel 推广,但其基本思想—— 无数多的人员和无数多的时间能产生任何 / 所有东西 ——可以追溯至亚里士多德。
简单来说,“猴子和打字机”定理是用来描述 无限的本质 的最好方法之一。#card
人的大脑很难想象无限的空间和无限的时间,无限猴子定理可以帮助理解这些概念可以达到的宽度。
猴子能碰巧写出《哈姆雷特》这看上去似乎是违反直觉,但实际上在数学上是可以证明的。
这个定理本身在现实生活中是不可能重现的,但这并没有阻止某些人的尝试:2003 年,一家英国动物园的科学家们 “试验” 了无限猴子定理,他们把一台电脑和一个键盘放进灵长类园区。
可惜的是,猴子们并没有打出什么十四行诗。
根据研究者,它们只打出了 5 页几乎完全是字母 “s” 的纸。
Das 曰:二十年前第一次看到这个思想试验,是在一个日本人写的小册子里。名字忘了,是《五角丛书》中的一本。十年前翻箱倒柜找这本小册子,未果。谁如果保存着二十年前那本五角丛书的话,不妨转让给 das,你五毛钱买的,我出一枚袁大头,或者一个紫砂壶也行。#card
不需要无限多个猴子,不需要无限长的时间,房间里放一台打字机,然后关一只猴子进去,猴子碰巧也会跳到打字机上,碰巧也会打出几个字母,有人计算过,假以 2000 亿年,从概率上讲,猴子会打出一首莎士比亚的十四行诗。
这道理很简单:猴子随意踩踏打字机,总会打出一些字母,这些字母随意组合,只要字母足够多,总会有一些单词,只要单词足够多,总会有一些句子,只要句子足够多,总会有一些有意义的句子,有意义的句子足够多,总会有一首诗,诗足够多,总会有一首十四行诗,十四行诗足够多,总会有一首和莎士比亚的作品一摸一样。
这道理简单明了,就是一些概率和排列组合的简单计算。
但是我有一点想不通,猴子比大自然聪明多了,人体比十四行诗复杂多了,猴子胡蒙瞎碰,打一首十四行诗都要 2000 亿年,大自然胡蒙瞎碰,打造个人体却只用了 50 亿年。究竟是我疯了,还是达尔文疯了?
现在还不清楚,反正两个人总有一个疯了。
链接: (lutaonan.com)
[[习惯养成]] 每周整理 Readwise/简悦中保存的文章和高亮,打上标签和写清楚为什么要收集。
我会根据这篇文章的内容打一些 tag, 这样等到将来我需要写关于某个主题的文章时,可以在 Readwise Reader 里通过标签直接找到关于这个主题的文章。
我还会在这篇文章加上注释 —— 为什么我想读这篇文章?我想从这篇文章里得到什么?我会强迫自己添加一篇稍后读的文章的时候思考这个问题,并且用十几个字简单地描述。这样当我在之后读这篇文章的时候,我可以带着我的问题去阅读,这样会更有效率。
Areas 指的是你感兴趣的领域,比如理财、编程、职业规划、商业等等。#card
Resources 指的是在未来可能会有用途的东西,我的理解是那些你可能会用到的,将来可以立刻作为参考的东西。比如最近我会看到很多关于 Prompt Engineering 的东西,虽然这不是我的领域,但我觉得将来会有用,所以我的 Logseq 里会有#card
读到这个故事的时候我非常受启发,我觉得的确是要把做的笔记也归纳到自己在思考的问题那里。这样日积月累,我的问题下面的笔记就会越来越多,多个笔记串起来会对我的问题更有帮助。
我还建立了 Questions 这个分类,我把一直在困扰我的一些问题都建起了相应的页面,当我在记笔记时,如果觉得这个笔记和我的某个问题有关,就会链接过去。
对象存储 设置 CDN 缓存刷新_腾讯云 需要收费
自动特征交叉,解决特征稀疏
FM 与其他模型对比
可以模拟二阶多项式核的 [[SVM]]、MF、SVD++
[[SVM]] 训练和预测需要计算核矩阵,核矩阵的复杂度是 N 方
MF 扩展性没有 FM 好,只有 u 和 i 两类特征
与 [[SVM]] 对比
二阶多项式内核 SVM 二元交叉特征 wij 相互独立
核方法需要计算核矩阵
样本 :-> FM 预测和训练样本独立,SVM 和支持向量有关
FM 在原始形式下 进行优化学习,非线性SVM通常需要在 对偶形式 下进行
交叉项需不需要乘 value ?
eta 放到 xi 和 xj 泛化能力不好
FM 如何加入 index embedding?
对比 FM 和 SVM 有什么区别?
特征角度 :-> 二阶多项式内核 SVM 二元交叉特征 wij 相互独立
, ((6302f9ee-11be-4f7a-9cf9-26400d6d4601))
为什么要用 FTRL 优化 FM #card
FTRL 是 SGD 算法,离线调参,减少线上风险
稀疏特征, 自适应学习率效果最好(特征 i 在 t 轮迭代的学习率不同)
不同特征有不同的学习速度、收敛速度快
@DCMT: A Direct Entire-Space Causal Multi-Task Framework for Post-Click Conversion Estimation
主要参考作者在知乎文章:ICDE 2023 论文解读 | DCMT:基于因果纠偏的直接全空间多任务转化率预测模型 - 知乎
DCMT模型(A Direct Entire-Space Causal Multi-Task Framework for Post-Click Conversion Estimation),核心的因果关系图 #card
需要直接在全曝光空间去纠偏,而不是只在点击空间(例如IPW)或者间接在全曝光空间(DR)上纠偏。
在全曝光空间训练模型的好处就是 #card
(1)数据稀疏问题得到缓解
(2)训练空间和推断空间直接对齐了
在全曝光空间训练CVR模型存在最大的瓶颈问题就是:#card
(1)全曝光空间里,对于转化任务而言,存在大量的假负样本。在全曝光空间里,由于不存在“未点击->转化”这样的正样本,这些样本会混在“未点击->未转化”样本中充当假负样本。这些假负样本可能仅仅是因为曝光位置、曝光风格原因,没有被用户察觉到或者点击到。但是如果这些样本被用户点击了,是可以转化的。如果在全曝光空间训练,CVR模型过度拟合这些真假难辨的转化负样本,CVR的预测结果则会偏低。
(2)另外,在全曝光样本空间直接训练CVR模型,选择偏差问题仍然存在。所以需要在全曝光空间进行纠偏而不单单在点击空间进行纠偏(如IPW和DR)。这是因为,如果我们认同IPW的思想,即在点击样本空间,点击倾向性会对点击空间样本造成选择偏差。那么在未点击空间,同样也会有不点击倾向性导致选择偏差。
由于受到用户在做转化决策的过程的启发,我们提出了事实样本空间(factual space)和反事实样本空间(counterfactual space)的概念。这里的事实空间和反事实空间如下图所示
这个负样本则就不会在事实空间里被观察到了。上面已经分析过了,这个负样本实际上本应该是有 的概率出现的。
在我们的反事实机制里,这样的负样本, ,则会存在于反事实空间中。
我们DCMT模型除了利用事实空间的点击空间 样本来预测事实的CVR,还会利用反事实的点击空间 样本(事实的未点击样本状态取反而得)来预测反事实CVR。
同时通过以上的分析,我们发现,事实的CVR预测值和反事实的 CVR预测值之和应该与 1 的误差要最小。
[[DCMT 无偏估计证明]]
由于逆倾向加权,如果点击率预测值很小或很大,我们的DCMT对应factual loss或counterfactual loss的权重变得很大很大。因此我们也和传统的IPW方法一样采用了Self-Normalization策略。对应的逆倾向权重改成了#card
factual loss部分:
counterfactual loss部分:
[[在线实验CVR分布对比]]
[[主要超参对DCMT的影响]]
[[用DR实现CVR建模]]
这样做的好处是 和 只要有一个预测准确,那么DR就能确保CVR无偏估计。另一个隐性的优点是,MTL-DR一定程度上实现全空间的无偏估计,这是因为imputation任务可以在全曝光空间训练。MTL-DR作者的理解是,imputation任务可以利用全曝光空间预测来的cvr loss来帮助CVR任务进行全曝光空间纠偏。
具体无偏证明如下:
& \text { Bias }^{\text {MTL-DR }}=\left|E_{\mathcal{O}}\left(\mathcal{E}^{\text {MTL-DR }}\right)-\mathcal{E}^{\text {ground-truth }}\right| \
& =\left|\frac{1}{|\mathcal{D}|} \sum_{(i, j) \in \mathcal{D}}\left(\hat{e}{i, j}+\frac{o{i, j} \delta_{i, j}}{\hat{o}{i, j}}\right)-\frac{1}{|\mathcal{D}|} \sum{(i, j) \in \mathcal{D}} e_{i, j}\right| \
& =\frac{1}{|\mathcal{D}|}\left|\sum_{(i, j) \in \mathcal{D}} \frac{\hat{e}{i, j} \hat{o}{i, j}+o_{i, j} \delta_{i, j}-\hat{o}{i, j} e{i, j}}{\hat{o}{i, j}}\right| \
& =\frac{1}{|\mathcal{D}|}\left|\sum{(i, j) \in \mathcal{D}} \frac{\left(o_{i, j}-\hat{o}{i, j}\right) \delta{i, j}}{\hat{o}_{i, j}}\right|=0 .
\end{aligned}
+ 前提条件是:$o_{i, j}-\hat{o}_{i, j}=0$ 或者 $\delta_{i, j}=e_{i, j}-\hat{e}_{i, j}=0$ ,即 $\hat{o}_{i, j}$ 和 $\hat{e}_{i, j}$ 只要有一个预测准确。 + 缺点 #card + 然而上述这种利用imputation任务间接地在全曝光空间纠偏的策略,没有理论以及实验证明它的有效性。实际上,在DCMT工作的实验部分,我们通过实验验证了MTL-DR模型的CVR预测分布,发现没有全曝光样本空间纠偏的效果(具体见下文实验结果部分)。这里可能的原因是:虽然IPW、DR在点击空间纠偏了,把点击率偏高的样本cvr loss的权重调低了,但是能进入点击空间的的点击率普遍偏高,整体调低了也比较难纠偏到随机点击后分布。只有给点击率偏低的未点击空间样本一个较大的权重,这样才有调整整体分布并趋向于随机点击后分布的可能。另外,MTL-DR的无偏的前提条件,在现实环境中,这两个预测值没有一个能确保预测准,因此DR模型的CVR估计的无偏性很难说比IPW好多少。 [[用IPS实现CVR建模]] + 核心思想:IPW的纠偏策略就是给传统CVR loss进行加权纠偏,对应的权重就是 $1 / p(o=1 \mid x), p(o=1 \mid x)$ 就是用户的点击倾向性(点击率预测值)。因此,基于倾向性的因果纠偏模型也需要利用多任务学习框架来分别预测点击率,点击后转化率。#card + 并通过点击率预测值来给转化任务的loss加一个权重来实现纠偏。这里整个纠偏过程就是为了得到上述的 $p(r=1 \mid d o(o=1), x)$ 。 + 因此IPW模型对应的cvr loss function如下: $\mathcal{E}^{\mathrm{IPW}}=\frac{1}{|\mathcal{D}|} \sum_{(i, j) \in \mathcal{D}} \frac{o_{i, j} e\left(r_{i, j}, \hat{r}_{i, j}\right)}{\hat{p}_{i, j}}$ ,其中 $\mathcal{D}$ 是全曝光样本空间,$o_{i, j}$ 就是点击标签,$e\left(r_{i, j}, \hat{r}_{i, j}\right)$ 就是模型转化率预测误差,$\hat{p}_{i, j}$ 就是点击倾向性。 + 在多任务框架下,cvr loss function则变成 $\mathcal{E}^{\mathrm{MTL}-\mathrm{IPW}}=\frac{1}{|\mathcal{D}|} \sum_{(i, j) \in \mathcal{D}} \frac{o_{i, j} e\left(r_{i, j}, \hat{r}_{i, j}\right)}{\hat{o}_{i, j}}=\frac{1}{|\mathcal{D}|} \sum_{(i, j) \in \mathcal{O}} \frac{e\left(r_{i, j}, \hat{r}_{i, j}\right)}{\hat{o}_{i, j}}$ ,其中 $\mathcal{O}$ 表示点击样本空间,上面的点击倾向性 $\hat{p}_{i, j}$ 也被替代成点击任务的预测值 $\hat{o}_{i, j}$ 。 + 优点:点击空间纠偏,实现条件无偏估计 #card + 我们先给出IPW条件无偏的证明过程。 + 首先,先假设我们能够得到所有的转化标签,即能够观察到所有样本的转化情况,因此我们就能得到转化率预测误差的 ground-truth: +
\mathcal{E}^{\text {ground-truth }}=\mathcal{E}(R, \hat{R})=\frac{1}{|\mathcal{D}|} \sum_{(i, j) \in \mathcal{D}} e\left(r_{i, j}, \hat{r}_{i, j}\right)
\begin{aligned}
& \text { Bias }^{\text {MTL-IPW }}=\left|E_{\mathcal{O}}\left(\mathcal{E}^{\text {MTL-IPW }}\right)-\mathcal{E}^{\text {ground-truth }}\right| \
& =\left|\frac{1}{|\mathcal{D}|} \sum_{(i, j) \in \mathcal{D}} \frac{o_{i, j}\left(r_{i, j}, \hat{r}{i, j}\right)}{\hat{o}{i, j}}-\frac{1}{|\mathcal{D}|} \sum_{(i, j) \in \mathcal{D}} e\left(r_{i, j}, \hat{r}{i, j}\right)\right| \
& =\frac{1}{|\mathcal{D}|}\left|\sum{(i, j) \in \mathcal{D}}\left(\frac{o_{i, j}}{\hat{o}{i, j}}-1\right) e\left(r{i, j}, \hat{r}_{i, j}\right)\right|=0 .
\end{aligned}
+ 也就是 $\frac{o_{i, j}}{\hat{o}_{i, j}}-1=0$ ,即 $o_{i, j}=\hat{o}_{i, j}$(点击率预测准确),就可以确保IPW纠偏后的CVR loss是与 ground-truch的CVR loss-致的。所以IPW无偏估计的前提条件就是点击率预测准确。 + 缺点:没有在全曝光空间上训练转化率模型。#card + 上面的 $\mathcal{E}^{\text {MTL-IPW }}$ 公式也很明显的说明了,IPW只计算点击样本空间 $\mathcal{O}$ 的 CVR loss。
@Embedding-based Retrieval in Facebook Search
为双塔输出向量的距离,使正样本对距离尽可能小(相似度分数尽可能大),负样本对距离尽可能大(相似度分数尽可能小)。
基线模型的样本构造也比较简单,使用query-doc的点击pair对作为正样本对,负样本有两种选择:#card
随机负采样:对每一个query随机从doc池中采样相应比例的负样本。
曝光未点击的样本:对于每一个query,随机从session内曝光未点击的样本作为负样本。
文中实验显示前者的效果明显强于后者,原因在于后者使得训练样本和后续预测样本有明显的分布不一致,即存在严重的样本选择偏差问题。
向量召回问题
候选集离线训练和线上服务的压力
matching 问题
[[新召回往往会存在后链路低估的问题,如何克服这个问题带来增量?]] #card
将召回生成的embedding作为ranking阶段的特征,可以直接将embedding作为特征或者计算query和doc的embedding各种相似度,通过大量实验证明,consine similarity有较好的结果。
为了解决向量召回准确率较低的问题,将向量召回的结果直接进行人工标注,然后再基于标注的结果进行训练。这种方法比较暴力并且效率比较低。
@位置编码之路:SIN->RoPE->ALiBi->PI->NKT->YARN
链接: 位置编码之路:SIN->RoPE->ALiBi->PI->NKT->YARN - 知乎
图1-1:正弦位置编码形式的由来 #card
图1-2:正弦位置编码中θ的由来 #card
图1-3:正弦位置编码的特点+推导 #card
缺点 :-> sin位置编码表示相对位置关系时仍然比较间接。
六种位置编码方法总结
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTc0NTE1OTk0NzQ0N18wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6MjI3LjAzMzYwMTg2NTM5MDUyLCJ0b3AiOjM4My4xODY3MDEyODI3NjA3NCwid2lkdGgiOjM3MC4zNTQyMTQ1MDIxODY0NCwiaGVpZ2h0IjoxNTQuNjY2MjMxMDk5MjAzMywiYW5nbGUiOjAsImNJZCI6MX0seyJsZWZ0Ijo3NDYuMzExNDA1NjMxNTY5MiwidG9wIjoxMTYuNDYzODQyNTczNTY2NjIsIndpZHRoIjo0NTEuNjM0MjE5ODgxMTU5NzcsImhlaWdodCI6MTc1LjA0NzA0MTM0MDEzMjk1LCJhbmdsZSI6MCwiY0lkIjoyfSx7ImxlZnQiOjc0NC4wNjI3OTAwNDQyMTE0LCJ0b3AiOjYzNC41MTgyOTE1ODkxMDgsIndpZHRoIjo0NTYuMTMxNDUxMDU1ODc1MzUsImhlaWdodCI6MTY1LjA2Nzk1NzY2Mzk2NzI2LCJhbmdsZSI6MCwiY0lkIjozfSx7ImxlZnQiOjEzMDYuOTQ0NjM2ODI0MjMsInRvcCI6MzUyLjM1NjY0NjQxMzkxNTMsIndpZHRoIjo0NTYuODY5MDU4NTc5MjU5NywiaGVpZ2h0IjoxNjkuNjg0MDc2NTQ4MDM0MjMsImFuZ2xlIjowLCJjSWQiOjR9LHsibGVmdCI6MTMyMy4wNTk4NTQ1NjA0ODUsInRvcCI6NjM0Ljc1NzI5Mzg3NTcwMTksIndpZHRoIjo0NzEuMjk4NDQwMzExMzg4MywiaGVpZ2h0IjoxNjQuNTg5OTUzMDkwNzc5NTUsImFuZ2xlIjowLCJjSWQiOjV9LHsibGVmdCI6MTMwOS4zMDYxMDE4NzY2MDY2LCJ0b3AiOjk2MS41MDg5MTI1MzAxNjg1LCJ3aWR0aCI6NDY1LjQ3NzUwNDgxODY4ODY2LCJoZWlnaHQiOjE3Ny40MDQ3NzcwNTEyNzI3MywiYW5nbGUiOjAsImNJZCI6Nn1dfX0=
第一块是factual loss :-> 是事实CVR预测值与事实点击空间样本 之间的误差。这边的误差函数是log loss。
第二块是counterfactual loss :-> ,是反事实CVR预测值与反事实点击空间 (事实未点击空间的镜像空间)样本之间的误差。
第三块是counterfactual regularizer :-> ,即上面所述的软性约束 。
如图所示,我们的DCMT的CVR任务部分,形成了一个有效的纠偏链路。
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTc0NDM4NDk4MjAyMV8wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6MzM4LjMzMTY4ODA2NTMwNzksInRvcCI6MzYuMjk5Mjc1NTE0NTI4Miwid2lkdGgiOjI0Mi4zNjQ0MDcxNjA1NDI4NywiaGVpZ2h0IjoyNS4xMjY2OTY2NzI3ODc4NCwiYW5nbGUiOjAsImNJZCI6MX0seyJsZWZ0IjoyNzcuMTU1Mzk5MTEyODUwMywidG9wIjo1MDguNzg5NzAxMzE3NzEzOCwid2lkdGgiOjIxNi4xNjg1MzEyODAyNTEsImhlaWdodCI6MzAuOTc1NzQ5NDM0NTE3ODYyLCJhbmdsZSI6MCwiY0lkIjoxfV19fQ==
+
优点:
在全曝光空间做逆倾向加权,可以利用全曝光样本空间数据来训练我们的CVR任务,使得训练空间和推断空间对齐。也可以缓解选择偏差(或者NMAR问题)。#card
(2)而软性约束的最大作用是可以缓解假负样本的问题。例如在事实未点击空间 有一个样本
如果这个样本是个假负样本,那么 值比较大,则说明对于这个样本而言,事实CVR预测值 和反事实CVR预测值 之间存在矛盾(不符合先验知识)。
这是因为,这个假负样本本应该进入到事实点击转化空间的,然而却进入了事实未点击空间,所以事实CVR预测值 预测值会被拉低。
而它对应的反事实CVR预测值 也不会太高,因为这个样本进入反事实点击转化空间的概率也不应该很高。所以 值会比较大。
DCMT通过最小化 这个软性约束会去纠正假负样本对应的 ,使得它更大,从而接近真实值。
主任务CVR task
=<\sigma\left(l_fw+l_fd\right), \sigma\left(l_{c f}^w+l_{c f}^d\right)> \
=<\sigma\left(\phi\left(\vec{x}{i, j}^w ; \theta_f^w\right)+\psi\left(\vec{x}{i, j}^d ; \theta^d, \theta_f^d\right)\right), \sigma\left(\phi\left(\vec{x}{i, j}^w ; \theta{c f}^w\right)+\psi\left(\vec{x}{i, j}^d ; \theta^d, \theta{c f}^d\right)\right)>
\end{gathered}
+ 这里的 $\sigma(*)$ 是Sigmoid函数,$\phi(\vec{x}, \theta)$ 是线性回归函数,$\psi(\vec{x}, \theta)$ 则对应的MLP结构。具体的 $\theta$ 已经在图中标清楚了。除了根据wide embedding $\vec{x}_{i, j}^w$ 和deep embedding $\vec{x}_{i, j}^d$ 分别用线性和深度结构来处理,这其实就是一个双子塔结构。这个双子塔的输入是一样的,即 $\vec{x}_{i, j}^w+\vec{x}_{i, j}^d$ ,但是输出则是两个,分别对应事实CVR(factual CVR)$\hat{r}_{i, j}$ 和反事实CVR (counterfactual CVR)$\hat{r}_{i, j}^*$ 。 + 这样的双子结构其实可以很好地模拟用户做转化决策的过程。面对同样的输入特征 $x_{i, j}$ ,样本有一定的概率 $\hat{r}_{i, j}$ 进入事实空间,有一定概率 $\hat{r}_{i, j}^*$ 进入反事实样本空间。而我们模型中,加入了一个软性约束(先验知识) $\hat{r}_{i, j}+\hat{r}_{i, j}^* \approx 1$ 来控制这两个CVR的预测值。
通过显式建模点击->转化之间的细粒度行为,进一步解决数据稀疏问题。这篇文章相比于ESMM其实没有特别多的改进,不过却是引出了微行为这一研究方向。示意图 #card
加入心愿单归并为决定行为(Deterministic Action,DAction)
将其余行为归并为其他行为(Other Action,OAction)
模型图 #card
加入心愿单归并为决定行为(Deterministic Action,DAction)
将其余行为归并为其他行为(Other Action,OAction)
示意图 #card
[[Triplet hinge loss]] 公式 #card
[[Triplet logistic loss]] 公式 #card
正样本
少部分物品占据大部分点击,导致正样本 大多是热门物品
未召回样本数量太多,需要进行采样。
item 特征包括:id 和 meta 特征
[[负样本]] 选择方法
如何选择困难负样本 #card
简单负样本:batch 采样
in-batch 采样 #card
batch 内其他用户的正样本做为当前用户的负样本
需要 batch_size 比较大
in-batch 采样 + bias 校正 #card
batch 内得到的负样本,可能热门物品被当成负样本的概率变大,造成对热门商品的惩罚过高
通过引入频率修正
Xinyang Yi et al. Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations. In RecSys, 2019.
+ 混合采样
+ Mixed Negative Sampling for Learning Two-tower Neural Networks in Recommendations
+ Cross-Batch Negative Sampling for Training Two-Tower Recommenders
业务向 hard mining 方法
online#card
在线一般是batch内其他用户的正例当作负例池随机采,
本文提到选相似度打分最高的作为hard样本,
同时强调了最多不能超过两个hard样本。
offline
具体做法是对每个query的top-k结果利用hard selection strategy找到hard样本加入训练,然后重复整个过程。
这里提到要从101-500中采,太靠前的也许根本不是hard负例,压根就是个正例。
以及两个很好的经验,
第一个是样本easy:hard=100:1,
第二个是先训练easy再训练hard效果<先hard后easy
为什么曝光但是没有点击不能做为召回的负样本 #card
相同点 #card
训练时,都需要用户塔、物料塔隔离,解耦建模。不允许使用Target Attention这样的交叉结构,也不允许使用“用户与当前物料在标签上的重合度”之类的交叉特征。
部署时,得益于双塔解耦的结构,面对一次用户请求,用户向量都只需要生成一遍。而物料向量都可以离线生成好,缓存起来,被不同的用户请求复用。
区别
部署时物料向量存储方式 #card
由于召回的候选集规模是百万、千万这个量级,拿用户向量与这么多物料向量逐一计算相似度是不现实的。所以召回双塔在离线生成众多的物料向量后,还要将这些向量喂入Faiss之类的向量数据库建立索引,以方便在线通过近似最近邻(ANN)搜索算法快速找到与用户向量相似的物料向量。
由于候选集至多只到万量级,因此粗排双塔在离线生成物料向量后,无须喂入Faiss建立索引,直接存入内存缓存起来,Item ID当“键”,物料向量当“值”。在线预测时,粗排线性遍历召回返回的候选集,逐一从缓存中取出物料向量,与唯一的用户向量做点积就能得到粗排得分。如果某个新物料的向量离线时没有生成,在线预测时从缓存中取不到,就由“物料塔”实时在线生成,并插入缓存中。
第二个不同点在于样本选择。以点击场景为例,对于正样本的选择没有什么争议,都是以“用户点击过的物料”当正样本。而对于负采样,两个双塔有着不同的选择策略。#card
召回绝对不能(只)拿“曝光未点击”作为负样本,负样本的主力必须由“随机负采样”组成。
粗排可以和精排一样,拿“曝光未点击”当负样本。当然,这里存在样本选择偏差(SSB):训练时用的都是曝光后的数据,经过了精排的精挑细选;而在线预测时,面对的只是召回后的结果,质量远不如曝光数据。
尽管训练与预测存在着较大的数据偏差,但是拿“曝光未点击”作为负样本仍然“约定俗成”地成为业界的主流做法,效果也经受住了实际检验。
而纠正这个样本选择偏差,也成为业界改进、提升粗排模型的一个重要技术方向
第三个不同点在于“损失函数”的设计。#card
由于召回的在线服务要调用ANN算法快速搜索近邻,受ANN算法所限,召回双塔中的用户向量和物料向量只能用点积来实现交叉(cosine也可以转化成点积形式)。
排双塔由于不需要调用ANN算法,自然不受其所限。在分别得到用户向量和物料向量之后,粗排依然可以拿这两个向量做点积来计算用户与物料的匹配度,而且这是主流做法。但是,粗排也可以将这两个向量喂入一个DNN的实现更复杂的交叉。当然,这个DNN要简单、轻量一些,以保证粗排能够实时处理较大规模的候选集。
下面这块结构跟双塔模型是一样的,都是分别提取用户和物品的特征,得到两个特征向量。但是上层的结构就不一样了,这里直接把两个向量做conatenation,然后输入一个神经网络,神经网络可以有很多层,这种神经网络结构属于前期融合,在进入全连接层之前就把特征向量拼起来了。这种前期融合的神经网络结构跟前面讲的双塔模型有很大区别,双塔模型属于后期融合,两个塔在最终输出相似度的时候才融合起来。
看一下图中的神经网络,这个神经网络最终输出一个实数作为预估分数,表示用户对物品的兴趣。再看一下这个部分,把两个特征向量拼起来输入神经网络。这种前期融合的模型不适用于召回。假如把这种模型用于召回,就必须把所有物品的特征都挨个输入模型,预估用户对所有物品的兴趣。假设一共有1亿个物品,每给用户做一次召回,就要把这个模型跑1亿次,这种计算量显然不可行。如果用这种模型,就没办法用近似最近零查找来加速计算。这种模型通常用于排序,从几千个候选物品中选出几百个,计算量不会太大。
前期融合和后期融合 #card
前期融合:先对所有特征做 concatenation, 再输入神经网络。
后期融合:把用户、物品特征分别输入不同的神经 网络,不对用户、物品特征做融合。
线上计算量小:
用户塔只需要做一次线上推理,计算用户表征 𝐚。
物品表征 𝐛 事先储存在向量数据库中,物品塔在线 上不做推理。
粗排模型和精排相比需要考虑的问题 #card
1、模型需要兼顾计算性能和效果;
2、打分样本空间分布与精排不一致(精排对粗排返回的样本做排序,粗排则要对召回的样本打分)
静态分排序
GRPO 方法通俗案例 #card
计算Advantage结果(一个组内开始计算)
advantage的计算公式如下:
通过标准化来计算奖励,优势函数的作用是某一个输出的token的数值相对于平均输出的优劣势,#card
如果某一个输出的奖励高于平均的mean数值,则结果是正的,
反之低于mean,结果是负的,
这样策略模型会更倾向于生成那些具有较高奖励的输出
一个GRPO算法的的大致流程如下: #incremental #card
用户输入query,模型推理生成一组回答
根据reward function的定义(例如准确性、格式)为每个回答计算奖励得分
在整个组内进行统一对比,计算它们的相对优势Advantage(上面的公式计算)
更新策略,倾向于具有更高优势的回答
模型更新的同时进行KL散度的正则,防止模型学习偏了
[[GRPO]] 公式原理解析
通过不同的规则得到 reward
1 | # 计算格式分 |
1 | def soft_format_reward_func(completions, **kwargs) -> list[float]: |
1 | def strict_format_reward_func(completions, **kwargs) -> list[float]: |
1 | def int_reward_func(completions, **kwargs) -> list[float]: |
1 | def correctness_reward_func(prompts, completions, answer, **kwargs) -> list[float]: |
最近看 [[王奇文]] 博客时,发现每篇文章底部有一个可视化地图,觉得挺不错的,尝试复制一下。
QWen
输入长度:#card
位置编码:#card
Bias部分删除:#card
激活函数:#card
优化器:#card
[[Post Norm 和 Pre Norm 区别]] Pre-Norm:它已被证明比Post-Norm更能提高训练稳定性。
RMSNorm:用RMSNorm取代了传统LayerNorm#card
训练数据:#card
模型大小:#card
Qwen1.5 #card
1)输入长度:32768
2)GQA:32B和110B的模型使用
3)模型大小:开源了六种大小的基础和聊天模型,即0.5B、1.8B、4B、7B、14B、32B、72B 和 110B,以及 MoE 模型(64个expert)
Qwen2.0 #card
1)上下文长度:128k
2)注意力机制:GQA,相比MHA参数减少
3)模型大小:开源了0.5B、1.5B、7B、57B-A14B(共57B但激活14B)和72B等五种模型
Qwen2.5 #card
1)模型大小:开源了0.5B、1.5B、3B、7B、14B、32B和72B等七种模型
2)预训练数据:18T token
3)输入输出长度:支持128K token,并能生成最多 8K token的内容
Qwen2.5-MAX #card
1)模型大小:未知
2)模型结构:大规模 MoE 模型
3)训练数据:在20T+ token 上进行了预训练,并使用SFT和RLHF方法进行了后训练
QwQ-32B #card
1)模型大小:32B
2)训练方法:借鉴的DeepSeek-R1,直接进行两次大规模强化学习(RL):
第一次RL:针对"数学和编程任务",采用基于规则的奖励模型,进行RL训练。随着参数迭代,模型在两个领域中的性能均表现出持续的提升。
第二次RL:使用通用奖励模型和一些基于规则的验证器进行训练。通过少量步骤的通用 RL,可以提升其他通用能力,同时在"数学和编程任务"上的性能没有显著下降。
3)技术细节:未知(可能报告还没发出来)
主要解决什么问题?#card
通过修改用户原始查询的关键词或结构,生成多个语义相似的变体(如同义词、纠错词、扩展词等),扩大召回范围。
典型场景:解决用户表达模糊、词义多样导致的召回不足问题。
这种流程与在doc侧加tag有什么优劣?#card
欢迎光临算法花园,我是 Runye,本站是我的博客 or 数字花园 or 知识库 or 训练日志。
如果有好的建议或想法,期待通过各种方式和我交流。
[[DeepSeek 学习]] 想要躬身入局,可惜还是只能纸上谈兵。
[[@2010年的房地产调控,我们收获了什么?写在房价暴涨前]] 15 年后重读天涯神贴
[[logseq-github-publisher]] logseq 插件,将 public page 以 markdown 格式导出到指定 github 仓库。(本博客文章基于这个插件导出,缓慢开发中)
[[@互联网大厂推荐算法实战]] 还是要看这种
查看更多 [[ChangeLog]]
[[@位置编码之路:SIN->RoPE->ALiBi->PI->NKT->YARN]] LLM 的细节是真的有点多。
[[@牛津教授项飙:教育系统正在生产大批陪跑、韭菜、炮灰,顶部的华丽光环全靠底层的生命力烘托]] 项飙采访,提出劳动力捕获、横向反思空间等概念。
从网上收集的不同的 [[逻辑谬误]] 以及对应的 [[逻辑谬误例子]]
[[cherry studio]] 开源大模型客户端,搭配 deepseek 官方 api 使用
[[王树森@推荐系统]] 推荐算法全流程,时长 8 个小时,建议转成文稿快速过一遍
[[广告系统]] 参考其他人的博客文章整理,不知道为什么总觉得广告要比搜推要复杂好多?动不动一堆公式?
[[@LiRank: Industrial Large Scale Ranking Models at LinkedIn]] 领英搜广推系统实践合集,可以当手册查询。
[[@写在Ph.D第0年:AICV 科研菜鸟的持续进阶之路]] 未选择的路,看着过过瘾。
[[competitive programming]] (竞赛性编程):大学时热衷于参与 ACM-ICPC,毕业多年后只能勉强写写 LeetCode 题目。做题清单在 [[Problems]]
[[机器学习]] or 深度学习
@I started journaling about why I procrastinate and holy crap, my productivity skyrocketed
I began keeping a “procrastination journal” (sounds stupid, I know, but hear me out). Every time I caught myself procrastinating, I’d quickly jot down: #card
What I was supposed to be doing 我本应该在做的事情
What I was doing instead (usually scrolling Reddit or watching yt shorts) 我当时在做什么(通常是刷 Reddit 或看 YouTube 短视频)
How I was feeling in that moment 我当时的感觉
And then I would read it at the end of the day. At first, it felt pointless. But after a few weeks, I started noticing patterns.#card
Turns out, I wasn’t just being “lazy” - I was avoiding specific types of tasks when I felt overwhelmed or unsure where to start. 不知道如何开始
I am a software dev who also do the product management at my company. And I hate doing “research” on features. 讨厌功能研究
The weird thing is, just being aware of these patterns made them easier to deal with.#card 奇怪的是,仅仅意识到这些模式就让它们更容易处理。
When I know that if i had to do research, greater changes i won’t be productive today. 当我知道如果必须进行研究时,今天就不会有太大成效。
And now Instead of beating myself up, I started break down the scary tasks into smaller chunks. 现在,我不再自责,而是开始将那些令人生畏的任务分解成更小的部分。
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTc0MzI1ODU1MzY2N18wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6ODUzLjM4NDgxNDg0MDkyMSwidG9wIjo4Ni42ODQ4NjM4NjA1OTUxLCJ3aWR0aCI6ODUyLjA3NDA4NzI2OTgyOTYsImhlaWdodCI6MTE4LjM2NTcyODE1MzY4NTYxLCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjE0NTcuNTYzNTUwMjAxNzkyLCJ0b3AiOjMzNS4yOTkxODEwOTk5MDczNCwid2lkdGgiOjM2Ni4wOCwiaGVpZ2h0IjoxMzQuMTU2MTY2OTgxMTY3MywiYW5nbGUiOjAsImNJZCI6Mn0seyJsZWZ0IjoxMjA1LjE4OTI3MjQyODkwODcsInRvcCI6NDY1LjQ4MjgzOTU1NzM3NzgsIndpZHRoIjo4MzQuODYxNDU2NzgxMzcyNiwiaGVpZ2h0Ijo2Ny4wMDM4MjU3MjY5Njc3NiwiYW5nbGUiOjAsImNJZCI6M30seyJsZWZ0Ijo2NzMuMzUwNzE0MDk2MDY5OSwidG9wIjo2MjcuMzc1NzA1NDU3MTg2Nywid2lkdGgiOjMxMi40OTY2NzI5MDY5NTkyNSwiaGVpZ2h0Ijo4My4wMDk5NDc2NzU1NTAxNywiYW5nbGUiOjAsImNJZCI6NH0seyJsZWZ0IjoxMjQzLjQ2NjE2NjgwNTQyOSwidG9wIjo2NjkuNTY4OTAwNTY3NzEwMiwid2lkdGgiOjQyNS4xMDU1ODgwODI5MzQ0NSwiaGVpZ2h0IjoxNDUuMjAwNDM1NTQxOTYxODQsImFuZ2xlIjowLCJjSWQiOjV9LHsibGVmdCI6MjczLjAzODM4MTMwNDgwNjIsInRvcCI6Nzk1Ljk0MDY5MzM3NzY2MDUsIndpZHRoIjo0NzMuMzczMzQ0OTk0MzIzNjUsImhlaWdodCI6MTg1LjYxMDYwNjA5Njk3OTM4LCJhbmdsZSI6MCwiY0lkIjo2fSx7ImxlZnQiOjExODYuNDI4NzU5NTg5ODY3MiwidG9wIjo4OTguNjM5NjU2NzA2NTg3LCJ3aWR0aCI6NzMyLjQzNzYwODg4MjM4ODIsImhlaWdodCI6MTgwLjA5MDI0MDQ2NzQ3OTcsImFuZ2xlIjowLCJjSWQiOjd9LHsibGVmdCI6NzAyLjcyNjA0ODUxMzU0MjUsInRvcCI6MTIyMi40MjYwOTU5NjY1NjM3LCJ3aWR0aCI6MjgwLjQwMjE3MDQ2NzY0NTMsImhlaWdodCI6OTguODM3MTE4MTk0NTI2MjgsImFuZ2xlIjowLCJjSWQiOjh9LHsibGVmdCI6MTMzOS42ODAwNTk1NTU3NDEsInRvcCI6MTMwOS42OTkyMzAxMzg4MzczLCJ3aWR0aCI6NTEyLjU2NzU0OTczNjQ0NDMsImhlaWdodCI6MjU3LjQyMDExODIzMDU2NzYsImFuZ2xlIjowLCJjSWQiOjl9XX19
1)获取DeepSeek-R1-Zero:#card
2)获取DeepSeek-R1:主要包括四个核心训练阶段(阶段1、2、3、4)和2个数据准备阶段(阶段0、2.5):
DONE 遍历全部需要发布的文章
导出文档 meta data
DONE 属性中字符串引号重复
DONE 文章属性如果重复会报错,toc
文章格式转化
DONE Nunjucks Error expected variable end
需要处理被双括号包围起来的内容
zotero-linked-file
也要处理
CANCELED 将 id 设置成文档的属性(持久化)
DONE 文件名中去除斜杠
DONE wiki link 变成 http link
原始代码借助模板和 hugo 的功能,实现通过文章去查文章的链接
一篇文档对应的链接有两种形式?
直接指定 permalink
根据文档名称生成,将 / 提升成 _
解决 alias link
DONE [[2025/04/14]] 没有指定 permalink 的需要改写成绝对链接
DONE [[2025/04/14]] 导出的链接包含中括号
DONE [[2025/04/14]] 内部链接需要 url 编码(解决文档名称中的空格等特殊符号
block embedding 用文本替代,链接到对应的 文章的 http link
不同级别标题
TODO task 符号改写
TODO [[logseq-anki-sync]] 部分符号改写
TODO 导出 Link Reference
DONE 提取图片
DONE 无法上传图片
DONE 图片位置
hexo 图片需要放到 source/xxx
路径下,文章需要放到 source/_post/xxx
路径下
实现时可以把图片上传到图床,然后修改文章,或者支持把图片和文章上传到不同的路径
DONE 不重复上传图片
TODO 图片上传失败
DONE 生成站点之后,点击首页的文章链接变成下载
http://localhost:4000/#:~:text=148%E4%B8%AA%E5%AD%97)-,%E4%BD%95%E5%88%87300/034,-image.png
插件配置
DONE push 到 github
put 接口
文件需要 base64 编码
如果文件已经有了需要提供 sha,如果是新文件不用提供
TODO 发布进度
可读性差的文档
TODO 导出进度提示
TODO 增量更新最近有修改的文章
TODO 文件名称改变后,旧文件不会被删除。
DONE 文件上传前对比 sha 值,出现不一样时再修改。
TODO 写 readme
TODO 写赞助信息
TODO github action 自动编译插件
TODO 提交到 logseq 官方仓库
TODO TypeError: Invalid URL
修复离线编译遇到的问题
仓库之前是用 git lfs 管理图片,远程添加图片后,再拉取到本地,还是会被处理成 lfs 处理。
DONE metadata 中属性缺失
解析 meta 非数组时,直接 copy 了数组这部分代码导致出错。。。
发现脚本出错,不知道怎么中途中止,好像现在只能等他运行完。。。
Nunjucks Error: _posts/logseq/2024 读论文目录.md [Line 1, Column 24] parseSignature: expected comma after expression
文章中默认 {{ }}
或 {% %}
是 nunjucks 标签,logseq 直接导出的文章没有对 query 等处理,会报错。
根据 Front-matter | Hexo 可以给文章设置属性:disableNunjucks: false
如果文章属性有 permalink: xxx
,生成之后链接无法点击,需要手动修改成 permalink: xxx.html
问题 ERROR: This version of pnpm requires at least Node.js v18.12
The current version of Node.js is v16.19.0
Visit https://r.pnpm.io/comp to see the list of past pnpm versions with respective Node.js version support.
[[nvm]] install 18.12
nvm use 18.12
[[Logseq Plugins 开发实战]]
[[logseq-schrodinger]]
[[obsidian-enveloppe]]
Lesson 3B - Management Process
WP:FEB11 - 18
#card
Overdue Tasks to Schedule
Weekly Goals
Daily Tasks
+ Weekly Summary
+ Weekly accomplishments
创建 week open 模板 #card
浏览过期的任务
列出 weekly goals #card
想要做的事情 inbox 标签
vs todo
不需要立即做的可以移动到特殊的笔记中,等一周结束后再评估。
简单处理逻辑 #card
步骤:候选召回、改写判别
核心思路 :-> 基于用户点击行为等统计信息找相似query,共同点击同一个item的query可能为意图一致的query。
具体实现
推荐i2i召回算法,如协同过滤方式:#card
先构建query到doc的点击矩阵,得到query稀疏表示,
进而通过表示距离计算得到源query的相似query;
swing算法 #card
将query id看作user id,计算相应点击商品的swing,得到类似i2i的q2i。
该类方法适用对点击行为丰富的头部query进行改写。
对query进行内容理解,如word2vec、向量召回,找相似query。
基于语义匹配的query改写 #card
通过构建<query, query>的相似pair对作为训练数据,训练深度语义匹配模型(一般为双塔结构,方便向量方式召回候选),
而相似pair对的构建可以基于上述行为统计的方法,也可直接训练query-item的语义匹配,间接也可得到query2query的语义度量模型。
基于生成的query改写:#card
通过seq2seq的模型架构,直接进行query2query的生成,训练数据仍可来源于行为统计的query pair对;
另一种思路可以借鉴Skip-Thought Vectors,
将一个session内的query作为一个序列(q_1, q_2, …, q_n),可以采样得到一条训练样本(q_i-1, q_i, q_i+1),在seq2seq架构下,通过encoder对q_i进行编码,decoder解码出q_i-1和q_i+1。
这样得到的encoder输出的context向量即可作为query的表示向量,并可用于相似query召回。
上述方法中,构造query pair对样本以及匹配/生成的方法还有很多,如引入比较流行的预训练+微调的方法。
这类基于内容的query改写策略,可以将对头部query语义的理解泛化到用户行为不足的 长尾query ,提升长尾query的改写效果。
基于session #card
同session内作为一个序列,参考word2vec,训练query向量度量query相似度;或者根据用户session内换更换query的统计特征进行query改写候选召回。
1是用户同一个session内query往往意图相似;
2是将用户session内所有行为看作一个doc,query看作doc中的词,类似地,相同上下文的query很可能具有相同的语义。
term重合率、实体term重合率、去停用词或引入term weighting的term重合率
各种字面匹配距离,如编辑距离特征:
基于频率或tf-idf的词袋模型表示的向量cosine距离。
word2vec表示距离、bert语义向量表示距离。
点击doc集合的重合度、点击类目集合的分布差异距离(如Jaccard相似度,KL散度)。
核心必要属性是否共同包含。
query pair对的基础特征,如term数、核心属性数等。
除了上述常规的query改写,还可以将query直接映射到意图ID,如类目ID、商品CPV ID等。该类改写常应用于类目、属性(年龄、尺码、型号等)等维度的搜索。#card
如query"裙子"可以映射到“连衣裙”类目ID、“女式手表”改写为“CPV:3214221 AND 手表”,其中3214221为属性性别-女的ID。
直接将query映射到意图ID一种常用的方式是使用规则映射,而映射规则一般来源于数据挖掘得到的词或短语到ID的映射。
如query “家用的跑步机”,例子 #card
“跑步机”为品类词,权重最高、
“家用”为属性词,权重次之、
“的”为助词权重最低。
例: 冬季卫⾐推荐:冬季 / 卫⾐ / 推荐 #card
静态term重要性计算,顾名思义,term权重不随上下文变化而变化,其依赖特征多为term粒度的离线统计特征。#card
比较经典的有搜索term词在语料库中的IDF(Inverse Document Frequency)、term词在搜索日志中的搜索频率、term词典规则(是否为停用词、专名词等)等。
得到静态term重要性后,对query中多term的权重归一化,即可得到相应query term weighting结果。
静态term重要性计算优缺点 #card
特点是简单,无需复杂算法,
缺点也很明显:准确率低、对上下文信息考虑不充分、长尾term效果差等。
主要思想是从 query整体 考虑各term重要性,主要方法则是通过特征工程得到可能对term重要性预测相关的特征,然后通过机器学习方法对term权重进行拟合,相应地可分为传统方法和深度学习方法两种。
基于统计
用户搜索query后点击/购买商品的类目分布,可以反映出该query的类目预测分布。#card
除了利用点击行为,还可以进一步引入时间衰减因子和session信息:#card
而对于行为较少的长尾query,则可以通过其他辅助行为信息进行补充,如同session的query挖掘:#card
同一个session的query往往具有相同的意图,其类目预测结果也往往一致。
如果session中有头部query,则头部query的类目预测结果可以拓展到session中的长尾query。
基于内容
无监督方式#card
有监督方式则#card
同样对于长尾的query,基于内容的方法可#card
以通过丢词、关键词匹配、编辑距离、word2vec距离等方式映射到头部query,得到其类目预测结果。
此外基于头部query训练的分类模型,往往也可以有足够的泛化能力适应长尾query。
基于特征融合
基于统计和内容的方式可以产出很多帮助query类目预测的统计特征或文本特征,而基于众多的特征再训练一个分类器(如LR/GBDT/DNN等)进行特征融合,往往可以更加准确的预测query类目。 #card
常见的特征如: #card
Query点击、加购、成交等行为商品类目统计频次/概率、Query下所有类目的归一化分布、比例等。
Query召回类目下的商品数、占Query的商品数比例、占类目下的总商品比例。
类目所属的一级类目、领域等。
Query成交价格和商品类目成交价格匹配程度。
子模型分数,如基于文本内容的类目预测模型的预测分数。
Query词命中类目关键词分布加权分数
相关性计算可以看作是query和item的匹配分计算
电商搜索往往有比较完备的类目、属性体系,细致准确的类目和属性匹配(结构化信息匹配)可以简单有效提升query和item的相关性。#card
而结构化信息匹配依赖于query和item的结构化信息提取,如识别出query和item的类目和属性pv(如:property: 性别, value:女)。
query侧,类目预测一般使用统计或分类的方法来完成,属性pv的预测则可看作是序列标注任务。
对于item侧的结构化信息提取,除了使用和query理解类似的算法方法解决,更多的则是依靠商家或运营的维护。
在得到query和item的结构化信息后,在线可以进行结构化信息的匹配,并得到相应的相关性匹配分。#card
query和item
term匹配数、
query term的匹配率 = matched_term_num/query_term_num
item term匹配率 = matched_term_num/item_term=-num
带weighting的query term匹配率和item term匹配率
考虑了term权重和文档长度的BM25、考虑了term共现信息的紧密度和点互信息(PMI)特征、考虑用户行为的文本语义拓展
可以通过用户行为来拓展文本匹配特征,如:对于<query, item>点击pair对,通过协同过滤等方式,可以得到query2query的列表。聚合key query的所有相似query,并对query进行分词,对所有的term进行加权求和(权重可以为频次或q2q分数),归一化后得到query的表示: #card
解决问题 #card
与上述基于词袋模型的稀疏向量表示不同,隐语义向量是对文本主题或语义的隐式稠密表示。
经典的隐语义表示算法包括基于奇异值分解的潜在语义分析算法(LSA)、主题模型PLAS、LDA等。
而在Word2vec算法流行开来之后,基于词向量的隐语义文本表示(如:词向量的avg/max pooling作为文本向量、Doc2vec等)也取得了比较好的效果。
深度语义匹配通过神经网络方法进行文本的隐语义表示匹配,进一步又可分为表示型语义匹配和交互型语义匹配
#card 表示型语义匹配方法将query和item内容通过encoder网络分别表示成隐语义向量,并通过向量距离度量二者之间相似度。
表示行语义匹配网络多种多样,在训练方式上,可以使用pointwise方式或pairwise 方式,相应的在loss选择上一般有关注判别的MSE和CrossEntropy或者关注排序的TripleLoss等。
在网络结构上,主要在于encoder网络的不同如经典的DSSM、CNN、RNN以及近几点的BERT网络等。
交互型语义匹配则通过query和item的early fusion(query-item特征交互融合)来实现细粒度语义的匹配,提升匹配准确率。#card
不同方法对比 #card
表示型语义匹配方法的优势在于离线和在线的分离,复杂模块离线计算,线上只需算向量距离,但相对交互型方法缺少细粒度语义信息的建模,准确率相对低;
同样,交互型方法虽然匹配准确率相对高,但也伴随着线上开销大的不足,尤其复杂的BERT模型。
而为了兼顾效率和准确率,也有很多折衷的方法,如:PolyEncoder、DeFormer等后融合(later fusion)方法,另一种常用策略则是模型蒸馏,如对BERT模型瘦身的DistillBert、TinyBert等。#card
多模态的语义匹配框架和基于文本的深度语义匹配基本一致,不同点在于对多模态信息的编码方式,以图文匹配为例:#card
在交互型匹配方式下,常用方法是将图像信息转换为向量序列,进而像处理文本匹配一样进行图文的语义匹配。#card
基于此,近两年多模态BERT的方法也同样有不错的效果(如VL-BERT、LXMERT、UNITER等)。#card
在上述相关性特征基础之上,对众多特征进行融合往往可以进一步提升相关性指标,融合模型则采用经典的LR/GBDT/NN模型即可。
此外特征融合模型的训练一般使用人工标注的训练数据,同时为了标注方便可将相关性目标分为不同档位。#card
如四档模式下,在训练阶段,四个档位可映射到1、0.75、0.25和0四个分位,模型则通过回归或分类的方式对分位进行拟合。
由于该部分策略是对子特征的Ensemble,因此并不需要非常多训练数据,万级别基本可以满足需求。
前者需要确定现有系统在相关性上已经有了哪些策略,相应策略的准确性和影响面有多大;
后者则需要通过badcase占比分析来定位头部问题,并进行优先解决。
如在项目启动阶段,如果发现大部分的问题case为明显的基础相关性不足和类目不匹配,应优先建立和优化基础的匹配策略。
通过简单高效的方式建立强baseline,同时保证阶段性效果提升,为后续优化奠定基础。而上述过程也往往是在效果优化的过程中不断循环往复的。
数据往往决定模型的上限,相比于模型结构的选择和设计,深度匹配模型往往更加依赖大量的训练数据。而在缺少人工标注数据的积累的情况下,训练样本的构造也就变得十分重要。相应的训练数据的构造主要会面临两个问题:#card
高置信样本挖掘,避免搜索点击行为日志“点击但不相关”的问题。
定制化的负样本构造,避免模型收敛过快,只能判断简单语义相关性,对难样本无法很好的区分。
针对以上问题,常用的方法也很多,如:#card
正样本:充足曝光下高点击ctr样本(如:ctr大于同query下商品点击率平均值)
负样本:
搜索算法最终的item排序往往是考虑多因子,而在电商搜索中比较重要的因子除了相关性因子,还有和业务直接相关的成交效率因子以及其他业务规则。
简化来说,对于相关性和成交效率因子,而二者的融合方式大致有三种:
相关性分数做档位分,下游根据相关性分层排序。#card
相关性连续值score和效率score加权得到最终排序分。#card
相关性和效率目标联合多目标优化。#card
相关性定义 #card
3.1 模型预估
A. 随着业界技术的发展,从线性模型到深度模型,模型泛化能力和特征学习能力逐步加强特征由低阶到高阶,特征表达能力越来越强
B. Embeddings/Attention/Transformer/BERT等各种用户行为序列建模(可参考: 九河之间:2022年CIKM用户序列预估梳理)
② 两者的技术路线、模型架构极为相似;不同是——优化目标或预估目标不尽相同#card
A. 推荐:CTR/时长等用户体验目标为主(电商 CTR/复购/GMV等);视频类更多倾向于预测观看时长,新闻类预测CTR,电商类预估客单价等等。
B. 广告:CTR/CVR/GMV/ROI 等用户体验、商家转化、平台收益的平衡。由于后续需要结合计算精确的出价,因此要求CTR/CVR足够精准(催生了校准算法),而不仅仅是相对的序。而推荐算法更多照顾一个列表整体上,甚至为了增加用户的长期参与度,还对推荐内容的多样性,新鲜度有更高的要求,这就让探索与利用,强化学习等一些列方法在推荐场景下更受重视
③ 优化目标或预估目标不尽相同,举例说明#card
A. MMoE + ESMM + Bias-Net 的架构,在广告中 有三个预估目标 – Pctr点击、Pctcvr 转化、GMV收益
B. 同样的结构,在推荐场景可能有的目标:Pctr点击(感性认知)、Preadtime阅读时长(理性认知)
3.2 机制策略
① RankScore 设计
A. 广告(点击付费类):rankscore = k1 * CPC(平台利益) + k2 * GMV(商家利益) + k3 * UEQ(用户利益) 。 #card
对于广告算法来说,由于要协调广告主、用户和广告平台之间的利益,就会产生很多博弈。
广告系统是根据 广告出价 X 点击率排序,涉及计费 (CPC计费)
B. 推荐:rankscore = k1 * CTR + k2 * ReadTime + k3 (新闻资讯); 推荐:rankscore = k1 * CTR + k2 * RPM + k3 (电商)。 #card
推荐系统没有出价,点击率(感性喜好程度)权重较大,同时,兼顾阅读时长(理性喜好程度);
尽量去用各种机器学习筛选出与用户特征值匹配度更高的内容。
C. 自然可以直接预估gmv,广告需要平衡gmv、cpm和用户体验。 #card
② 广告的 机制 更加复杂,GSP 二阶计价、MinBid、MinCPM 等时间关系不罗列了。
③ 广告系统中,CTR等算法只是其中关键的一步,估的准CTR只是一个前提,#card
如何让广告系统盈利,产生更多收入,还需要pacing,bidding,budget control,ads allocation等多个同样重要的模块协同作用,才能让平台利益最大化,这显然是比推荐系统复杂的。
而推荐系统中,由于需要更多照顾用户的长期兴趣,需要一些补充策略做出一些看似“非最优”的选择,比如探索性的尝试一些长尾内容,在生成整个推荐列表时要加入多样性的约束,等等。这一点上,广告系统也需要,但远没有推荐系统的重视程度高。
3.3 广告机制特色
广告一些术语:
① 每个广告 (Ad) 有一个出价 (Bid) , 并有其在某情形下实际的点击率 (Click-Through-Rate, CTR)。
② 广告按点击收费 (Charge per Click, CPC), 策略有 #card
一价计费 (First-Price, FP, 即广告出价多少则一次点击计费多少)
二价计费 (Second-Price, SP, 即广告按下一位出价来支付点击价格, 更普遍的是 GSP,Google,Yahoo, LinkedIn都是用这一种)
**千次展现收费 (Cost Per Mille, CPM, 或 RPM, R for Revenue), ** 即对点击付费广告其展示一千次情况下的收入 (一价计费下等价于 1000CTRBid), 或是展示广告的千次展现固定价格。
④ 预估点击率 (predict CTR, pCTR) 是指对某个广告将要在某个情形下展现前, 系统预估其可能的点击概率。
3.3.1 Facebook广告系统背后的Pacing算法
最终竞价 (每次展示) = 优化竞价 (每次展示)* CTR where 优化竞价 <= max_bid
Pacing在给定预算下最大化广告主的利润。
它让广告主更加真实,和Vickrey–Clarke–Groves (VCG通过计算一个广告主参加拍卖给别的广告者带来的损失之和来定价的) 拍卖,这里面欺骗价值没有任何好处,也没有必要去想最大竞价应该设多少。
如此可以避免拍卖系统中的特殊机会。
3.3.2 预算控制(Budget Pacing)
① 广告匀速播放:通过广告日预算、当前消耗以及日曝光曲线来控制广告投放速度
② 提升广告主ROI:帮助广告主以更低的价钱拿到更多优质曝光量。
预算控制的做法目前可分为两大类:#card
Probabilistic throttling 通过一个概率值来决定是否参竞来控制预算花费速率
Bid modification 则通过直接改价的方式来控制花费速率。
对比 Probabilistic throttling 和 Bid modification 两个方案的差异点: #card
① Probabilistic throttling 是通过调整参竞概率调整预算消耗速度,而 Bid modification 则是通过改变bid,控制竞价胜率来达到影响预算消耗速度,这种方式有可能导致预算消耗波动较大;
② bid landscape(竞价环境) 一般会随着时间变化而变化;另外对于那些快耗尽预算的广告,bid 可修改的幅度很小,且bid一般存在着保留价,可调整的幅度很小,而且往往bid的变化与实际曝光量不成正比;
以上两点使得通过 bid modification 来达到预算匀速消耗比较困难
预算控制Budget Pacing
Step1: 实现广告预算能够均匀的消耗 :#card
首先根据历史数据,预测出当天大盘总曝光数。
然后基于其曝光情况,在当前时间片,假如已消耗 / 当天预的比例大于大盘已曝光 / 大盘总曝光的比例,
则说明预算已经消耗过快,需要减小消耗的速度,
反之则要加快消耗的速度。
Step2:实现预算均匀消耗后,尝试优化成本#card
前文介绍的预算均匀消耗实现方案本质上是随机丢弃,
优化主要思路是:我们在放弃请求的时候可以选择性放弃一些低质量(点击率较低)的请求,而对应高质量的请求我们提高参与竞价的概率,从而提升转化率。
@LiRank: Industrial Large Scale Ranking Models at LinkedIn
[[3.1 Feed Ranking Model]]
[[3.2 Ads CTR Model]]
[[Dense Gating and Large MLP]]
[[3.6.Incremental Training]]
[[3.7 Member History Modeling]]
[[3.8 Explore and Exploit]]
[[3.9 Wide Popularity Features]]
[[3.10 Multi-task Learning]]
[[3.11 Dwell Time Modeling]]
[[3.13 Embedding Table Quantization]]
[[4.1 4D Model Parallelism]] 解决训练过程中 embedding 表梯度同步存在性能瓶颈
[[4.2 Avro Tensor Dataset Loader]] 解决训练过程中 io 瓶颈
[[4.3 Offload Last-mile Transformation to Asynchronous Data Pipeline]] 优化训练过程
[[4.4 Prefetch Dataset to GPU]] 预取数据到 GPU
[[Jobs Recommendations Ranking Model Architecture]]
验证 [[3.12 Model Dictionary Compression]] 压缩方法没有任何性能损失
[[Dense Gating and Large MLP]] 并没有改进
对数值输入特征应用批量归一化,在当前训练步数下存在欠拟合,但是增加训练步数会导致实验速度下降。
增加 warm-up steps 稳定训练,且可以使用三倍学习率
① 推荐算法本质上是解决 用户体验 的问题
② 广告(“广而告之”谓之广告)算法,不仅要满足用户需求,更多的是需要平衡广告主、用户和广告平台三者之间的利益关系,较多的考虑广告主的推广诉求。再直白一些:#card
③ 策略差异大但预估模型同源 #card
:A. 推荐算法和广告算法在一些策略特别是机制方面差异性很大;
B. 但两者在常规的预估模型算法又非常相似。
推荐算法虽然本质上虽然也是为了增加公司收入,但其直接目标是为了增加用户的参与度。比如博客《多场景多业务建模》所提到的方法,既适用于推荐又适用于广告。
[[2. 微观上-- 新闻资讯Feed流 VS 电商Feed流中的(推广商家)广告]]
4.1 “推广”异同#card
① 本文对广告和推荐在多个方面进行了阐述,二者的优化目标不同,涉及的利益群体不同,面临的约束也不同。
② 对于CTR预估这一块,两者的迭代思路或演进路线,基本一致;对于机制策略这一块,两者差异非常大。
4.2 “推广”面临的挑战 #card
① 广告算法的问题更加琐碎,各模块协同工作找到平台全局利润最大化方法的难度非常大,系统异常复杂到难以掌控的地步!
② 推荐算法这边,问题往往卡在长期利益与短期利益的平衡上,在模型结构红利消失殆尽的今天,如何破局!
由于RoPE的存在导致前文所说的上投影矩阵不能直接合并成一个,中间隔着一个旋转编码矩阵:#card
DeepSeek的解决方法是,直接在原有 后拼接 维的位置向量,计算过程为:#card
前段时间,笔者也很荣幸跟DeepSeek团队讨论过这个问题,但这个问题可以说非常本质,所以当时笔者实际上也没能提出什么有效的建议。最简单的方式是放弃RoPE,换用其他基于Attention Bias的位置编码,如ALIBI,但DeepSeek的实验显示它明显不如RoPE(注意,MLA不是不能加RoPE,而是加了RoPE之后无法用恒等变换技巧来减少KV Cache),笔者也提议过换Sandwich,它不像ALIBI单调衰减到负无穷,估计效果会好些,但感觉是治标不治本。#card
最后发布的MLA,采取了一种混合的方法——每个Attention Head的Q、K新增 #card
Better & Faster Large Language Models via Multi-token Prediction
motivation 训练和推理阶段对比
传统方法的问题(预测下一个token):#card
训练阶段:token-by-token生成,是一种感知局部的训练方法,难以学习长距离的依赖关系。
推理阶段:逐个token生成,推理速度较慢
MTP方法(一次预测多个token):
训练阶段:#card
通过预测多步token,迫使模型学到更长的token依赖关系,从而更好理解上下文,避免陷入局部决策的学习模式。
同时一次预测多个token,可大大提高样本的利用效率,相当于一次预估可生成多个<predict, label>样本,来更新模型,有助于模型加速收敛。
推理阶段:#card
共享 Transformer 的主网络,接入 4 个并行预估头,然后输出
主干网络就是训练好的decoder-only的多层Transformer的网络,#card
个输入token 经过主干网络计算,最终输出隐层表示:(来自于 编码结果)。
上面接了多输出Head,每个Head负责预估一个token, 负责预估 next token, 负责预估 next next token,以此类推
Head 是一个Transformer层(包括 MHA+2层FFN),#card
最后再将 送入到词表投影层( 包括1个投影矩阵+1个Softmax),预估每个词的概率分布。#card
最终通过某种采样方法(如:greedy,beam search等)生成token。
注意,这个词表投影层是原预训练网络(original model)的投影矩阵+Softmax,多Head是共享的。
[[@deepseek技术解读(2)-MTP(Multi-Token Prediction)的前世今生]] 重新画图
和 [[Blockwise Parallel Decoding for Deep Autoregressive Models]] 区别#card
图2是2层FFN, 图6是一个Transformer
图6 除了可按图2方法一样可做并行推理,本文也重点考虑模型加速训练的优化,在模型训练时,多个头都会并行计算loss时,提升样本利用效率和加速模型收敛。
针对token-by-token生成效率的瓶颈,业界很多方法来优化,包括减少存储的空间和减少访存次数等,进而提升训练和推理性能。
核心思想:通过解码阶段的优化,将1-token的生成,转变成multi-token的生成,从而提升训练和推理的性能。具体来说,#card
在训练阶段,一次生成多个后续token,可以一次学习多个位置的label,进而有效提升样本的利用效率,提升训练速度;
在推理阶段通过一次生成多个token,实现成倍的推理加速来提升推理性能。
Group Relative Policy Optimization
核心思想 :-> 对于每个问题,从旧策略中采样多个输出,然后根据这些输出的奖励来优化新策略。
GRPO的结果监督 #card
对每个问题 ,从 中采样一组输出 ,
用一个奖励模型评估得到 ,然后对这些奖励进行归一化。
结果监督就是基于归一化的奖励计算: ,从而通过目标式(2)进行优化。
GRPO的过程监督:
过程监督是对推理的每一步都进行评估,因此奖励模型的评估输出为#card
,
其中 表示第 步结束的token index,
是第 个输出的总步数,
同样的进行归一化有 。
然后计算每个token的优势函数为:#card
GRPO 的整体过程如下图所示 #card
公式中的 t 是对应token-level优势,即一个句子中,每个token对应的 优势 是一样的
中的 G 和 o 理解 #card
的意思是一个query生成的一个组的回答个数,最终需要取平均,
表示的是对每一个生成的回答所有的token进行求平均
clip 作用 #card
clip策略限制了 之间的比值,通过将比值限制在 之间,防止新策略相对于旧策略的数值有较大的更新变动
clip机制确保策略更新处于控制范围内,稳定性更强,收敛性更好,确保模型训练过程中的稳定性和效果
KL 散度正则化的作用 #card
KL 散度主要是为了衡量当前新策略 和参考策略 之间的分布差异, 表示的是惩罚系数,目标是为了限制 和 偏离太远
变大时,惩罚增加,迫使策略更新更加保守,不要偏离太远
系数控制正则化强度, 变大的时候,表示在原有的优势上增加惩罚,让模型更新幅度变小,更加保守
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTc0MTM1MTg5Nzc2NV8wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6MTA4NS45MzE3MTc0OTA0MDksInRvcCI6Njg0Ljc4OTgxMzk5MzgwMzEsIndpZHRoIjo2MjIuNTAwMTAyNzg0MDY4MywiaGVpZ2h0IjoxMjQuMjQ2MjIwNTQ0NzM2MzksImFuZ2xlIjowLCJjSWQiOjF9LHsibGVmdCI6MTA0Mi40NzQwNjE5NDQyNjk0LCJ0b3AiOjg1NC40MTM1MjE3NzQzMDgsIndpZHRoIjo2NzkuNDI1Nzk4MDk4Mjk5LCJoZWlnaHQiOjE1OC4zMzQyMTMzODQwNzc1NCwiYW5nbGUiOjAsImNJZCI6Mn0seyJsZWZ0IjoyMzguNTExMzg3NjQ0NDc2MDYsInRvcCI6NDEyLjEyMTQ5ODM4OTk1MjkzLCJ3aWR0aCI6NDMxLjMyNzE0Nzk4OTc2MTU2LCJoZWlnaHQiOjE2OS41ODAwNzI2NDQ4MjQwNywiYW5nbGUiOjAsImNJZCI6M30seyJsZWZ0IjozODUuMzc3MzE1ODk2NzEyMSwidG9wIjo3OS42MjEyODk5NTY4ODE4NSwid2lkdGgiOjcwMC43MzM2MzIyMDY0MjU3LCJoZWlnaHQiOjkxLjI0MzAyNDU3MDk4MTg1LCJhbmdsZSI6MCwiY0lkIjo0fV19fQ==
+ 核心思想 :-> 并行多任务模型(例如ESMM)通过CTR任务以及一个辅助任务CTCVR来间接计算CVR。
+ 优点:这样做的好处是CTR和CTCVR任务都可以在 **全曝光** 样本上训练,而模型在线预测的时候,也在 **全曝光** 样本空间进行预测排序。
+ 如何求点击后转化率 #card
+ 并行多任务模型是通过 $p(t=1 \mid x)=p(o=1, r=1 \mid x)=p(o=1 \mid x) * p(r=1 \mid x, o=1)$ ,在全曝光空间,先求出点击率 $p(o=1 \mid x)$ 和点击转化率 $p(t=1 \mid x)$ ,再间接求出点击后转化率 $p(r=1 \mid x, o=1)$ 。
+ 这样就消除了训练空间与推断空间之间 **不匹配** 的问题,因而可以缓解点击空间训练数据稀疏,选择偏差的问题。
+ 缺点:并行结构,忽略了点击到转化之间的依赖关系,也就是 **PIP(potential independence priority)** 问题。
+ 现有的并行多任务模型结构实际上对应的是另一个概率公式,即 :-> $p(t=1 \mid x)=p(o=1 \mid x) * p(r=1 \mid x)$ 。
+ 核心思想、优点 :-> 多门(Multi-Gate)多任务学习模型考虑了不同任务之间的相关性和差异性,用Gate的方式来控制不同专家的组合方式。在曝光空间预测CTR, 在点击空间预测CVR。
+ 缺点 :-> 这些模型还是没有解决数据 **Missing not at radom(MNAR)** 的问题。
[[@LARGE-SCALE CAUSAL APPROACHES TO DEBIASING POST-CLICK CONVERSION RATE ESTIMATION WITH MULTI-TASK LEARNING]] 因果推断相关第一篇
现有方法将曝光空间->点击空间中丢弃的样本视为随机丢失。
一般点击、转化率比较高的样本才能进入点击空间,因此只考虑点击空间会导致CVR预估值比曝光空间的CVR预估值高。
这篇文章从因果角度进行 CVR 估计(去偏),并解释了非随机缺失的原因。
[[ESCM2]]
+ **点击倾向性(点击率)偏高** 的样本更容易进入到点击空间。
+ 因此为了消除 **点击事件上点击倾向性(click propensity)对后面转化事件** 的影响,从而得到一个条件无偏的转化率估计 $p(r=1 \mid d o(o=1), x)$ ,IPW(inverse propensity weighting)的策略被广泛应用来纠偏选择偏差,解决MNAR问题。
+ [[propensity score 一定能给 cvr 去偏吗?]]
+ [[用DR实现CVR建模]] #card
+ IPW在点击空间无偏的前提是点击率要预测准确,然而在现实应用场景很难确保这一点,因此提出了DR模型来缓解这个问题。
+ 核心思想:除了IPW多任务模型的点击任务,转化任务,DR模型还利用了一个归咎(imputation)任务来预测转化任务的误差,即CVR loss $\left(e_{i, j}=e\left(r_{i, j}, \hat{r}_{i, j}\right)\right)$ 的预测值( $\hat{e}_{i, j}$ )。而最终DR模型对应的CVR loss function变成了
+ $$
\mathcal{E}^{\mathrm{MTL}-\mathrm{DR}}=\frac{1}{|\mathcal{D}|} \sum_{(i, j) \in \mathcal{D}}\left(\hat{e}{i, j}+\frac{o{i, j} \delta_{i, j}}{\hat{o}{i, j}}\right) \text {, 其中 } \delta{i, j}=e_{i, j}-\hat{e}_{i, j} \text { 。 }
+ [\[\[@DCMT: A Direct Entire-Space Causal Multi-Task Framework for Post-Click Conversion Estimation\]\]](/post/logseq/%40DCMT%3A%20A%20Direct%20Entire-Space%20Causal%20Multi-Task%20Framework%20for%20Post-Click%20Conversion%20Estimation.html) + Res-IPS/DR:Removing Hidden Confounding in Recommendation: A Unified Multi-Task Learning Approach 北大 NIPS2023 这是一篇纯学术界文章,将因果推断领域的一些结论应用到推荐系统中。(学术界的文章是真晦涩难懂,车轱辘话反复说。不得不佩服,就一个残差和无偏数据,也能吹出一篇文章来) + [[@Utilizing Non-click Samples via Semi-supervised Learning for Conversion Rate Prediction]] 以半监督的方式解cvr未点击样本上学习有偏的问题 ## [[Ref]] + [[@汇总|6篇文章带你了解CVR去偏现状]]
标准 [[KL Divergence]] 计算公式
需要对所有 x 进行求和或积分,计算成本高。
计算过程中可能涉及大规模概率分布,导致内存消耗过大。
[[K1 估计器]] 计算公式 :->
为什么是 KL 的无偏估计 #card
K1 估计器的方差较大,因为 #card
若 可能为负值,导致估计值波动大。
若 和 差异大, 可能出现较大的数值变化。
[[K2 估计器]] 公式 :->
[[K3 估计器]] 公式 :->
K3 估计器也是 的无偏估计。证明如下:#card
已知:
我们只需证明:
即:
展开计算:
K3 估计器恒大于等于 0。证明如下 #card
设函数:
求导数:
当 时, ;当 时, 。即, 在 处取最小值,且:
所以,对于任意 ,均有:
PPO 算法中的 KL 近似计算#card
在 GRPO(Generalized Reinforcement Policy Optimization) 算法中,KL散度是显式融入到损失函数中,近似计算采用的是 K3 估计器,如下所示:#card
DeepSeek中的强化学习:GRPO与RL统一视角 - 知乎
[[RFT]]
[[DeepSeekMath]] 文章的核心在于强化学习算法GRPO提升LLM的数学推理能力
在LLM中PPO的优化目标为 #card
J_{P P O}(\theta)=E\left[q \sim P(Q), o \sim \pi_{\theta_{o l d}}(O \mid q)\right] \frac{1}{|o|} \Sigma_{t=1}^{|o|} \min \left[\frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{\text {old }}}\left(o_t \mid q, o_{<t}\right)} A_t,\right. \
\left.\operatorname{clip}\left(\frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}\left(o_t \mid q, o_{<t}\right)}, 1-\epsilon, 1+\epsilon\right) A_t\right]
\end{gathered}
LLM中的PPO算法存在什么问题:#card + 在PPO中价值函数是和策略模型同样大小的另一个模型,回带来较重的内存和计算负担。 + 此外价值函数经常作为baseline来降低优势函数的方差 + 在LLM中奖励模型通常只对最后一个token评估奖励分,导致价值函数难以对每个token评估准确。 [\[\[Group Relative Policy Optimization\]\]](/post/logseq/Group%20Relative%20Policy%20Optimization.html) + [\[\[@PPO与GRPO中的KL散度近似计算\]\]](/post/logseq/%40PPO%E4%B8%8EGRPO%E4%B8%AD%E7%9A%84KL%E6%95%A3%E5%BA%A6%E8%BF%91%E4%BC%BC%E8%AE%A1%E7%AE%97.html) 计算无偏估计方法 #card + $D_{K L}\left[\pi_\theta \| \pi_{r e f}\right]=\frac{\pi_{r e f}\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}-\log \frac{\pi_{r e f}\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}-1$ [[LLM 中强化学习讨论]] + 至此deepseek将这几种方法纳入到了统一的RL视角中,并总结了在数据源(问题和对应输出)、奖励函数和梯度项的差异,这样看确实更一目了然。 [[问题来了:为什么RL是work的,如何设计更有效的RL方法?]] GRPO的过程监督这里写的不太对。他们将推理过程分成了一个个的step。每一个step会统计一个reward。#card + 对于每一个token,将大于这些token后的归一化后的step的reward加起来,就是最终的Ait。 + 顺便说一下,结果监督和过程监督这里应该是并列关系。由于结果监督是采样到完成的o后,才会产生一次reward信号,则不够高效,所以后面又提出过程监督,增加效率。 + 感谢,这里粗糙了,我补一下。r1-zero中设有两个奖励信号,一个是判断回答是否正确,一个是回答的格式奖励。 但是再R1-zero中,deepseek应该把过程监督去掉了,只用结果监督应该就行了,有点像alpha go zero,将终局的reward信号直接分发给中间的每个st,at。#card + 取消过程监督的原因是the neural reward model may suffer from reward hacking in the large-scale reinforcement learning process,推理过程中的奖励信号不一定准确,推理过程中奖励高不代表结果正确
[[DeepSeekMath]] [[2024/04]] 提出GRPO算法和RL统一视角的讨论
[[DeepSeekMoE]] 在tfm的FFN层做了更细粒度的多专家DeepSeekMoE结构。
[[DeepSeek V2]] 中提出了高效经济的语言模型。结构上主要有两点,
一个是提出了MLA,由于应用旋转矩阵相对位置编码,在MLA中额外采用一定维度的向量单独作为位置信息拼接起来。
另一个是沿用DeepSeekMoE,v2及之后的文章也用到了GRPO。
[[DeepSeek V3]] 依然采用了v2中的MLA和DeepSeekMoE结构,并且采用了多token预测(MTP:multi-token prediction)。此外v3还采用了FP8混合精度训练,介绍了ds的训练框架,甚至对AI硬件供应商(计算硬件和通信硬件)提了一些改进建议。
[[@DeepSeek-V3参数详细计算]]
DualPipe
FP8混合精度
[[DeepSeek R1]] 力推RL在增强LLM推理能力的作用。在r1中首先介绍了r1-zero,即没有经过SFT直接进行一个大规模强化学习训练,r1-zero展示出强大有趣的推理行为,但也遇到了一些问题比如可读性差、语言混淆等。继而ds提出了r1:在经过RL学习之前,先进行多阶段训练和冷启数据学习,并且进行模型蒸馏来提升小模型的推理能力。
[[@DeepSeek-R1技术笔记 (含图解和技术点介绍)]]
[[@温故而知新之:图解DeepSeek-R1]]
DONE [[@LLM强化学习算法演进之路:MC->TD->Q-Learning->DQN->PG->AC->TRPO->PPO->DPO->GRPO]]
DONE [[@LLM中的强化学习:从RLHF到DPO]]
DONE [[@【LLM理论】 DPO算法推导——逐步精讲]]
[[LLM的PPO模型]]
[[RFT]]
[[GPPO]]
[[MTP 损失函数]]
[[MTP 节省内存实现]]
[[为什么 MTP 是 work 的?]] 从两个角度进行了说明MTP向前多预估几个token有助于学习序列中的"关键决策点"。
[[DeepSeek MTP]]
[[DeepSeek MTP 模型推理过程]]
[[Deepseek MTP 训练前向推理例子]]
参考文章
[[@Multi-token prediction 多词预测]]
[[@deepseek技术解读(2)-MTP(Multi-Token Prediction)的前世今生]]
DONE [[@DeepSeek中的Multi-Token Prediction]]
[[@Deepseek-v3技术报告-图的逐步解析-3-不容易看懂的MTP-公式有拼写错误]]
[[@稀疏化Attention:SWA->NSA->MoBA]]
发展历史
2018 [[Multi-Head Attention]]、2019 [[Multi-Query Attention]]、[[Grouped-Query Attention]]、
[[Multi-head Latent Attention]]
[[从GQA视角如何看MLA]]
[[MLA 将 Q 输入也改为了投影形式]]
[[推理阶段的MLA]]
[[KV Cache]]
[[为什么降低KV Cache的大小如此重要?]]
参考
[[@对deepseek v3中MLA的详细分析(对比MHA的计算量、缓存量、参数量)]]
[[@Deepseek-v3技术报告-图的逐步解析-1-MLA]]
DONE [[@MHA->MQA->GQA->MLA的演进之路]]
DONE [[@DeepSeek:KV cache压缩—MLA与FFN的MoE结构]]
DONE [[@缓存与效果的极限拉扯:从MHA、MQA、GQA到MLA]]
[[DeepSeekMoE]] 架构
[[@MOE介绍及其LLM方案整理]]
关于一个特征a该不该加入排序模型中,可以用一个非常一般的准则来判断 :-> p(y|X,a)是不是平稳(不变)的
[[行为序列建模]] 分类在线提取和离线提取
[[DIN]] 当给用户呈现不同的target item时,会唤醒用户历史中的不同部分 , 因此history item embedding在聚合成user interest embedding时应该有不同的权重。
DIN 用target item和每个historical item做attention 来确定这个权重
DIN用target item给所有historical item加权或降权,算是一种soft filtering 既然在long sequence上再做soft filtering的代价太大,干脆就直接上hard filtering :-> 在long sequence中筛选(搜索)出与target item相关的一个Sub Behavior Sequence(SBS)。
SBS的长度一般是 百级 ,相较于原始万级的long sequence大大缩短,再在SBS上实施DIN,开销就小多了,足以支持在线推理和训练。
[[SIM]] 特点是 :-> 先过滤,再注意
[[Hard Search]]
拿target item的 某个attribute(e.g., category) 在用户完整的长期历史中搜索,得到 有相同attribute 的historical item组成SBS。
为了加速搜索过程,阿里还特别设计了User Behavior Tree(UBT)这一数据结构。UBT其实就是一个双层的map,#card
第一层map的key是userId,
第二层map的key=category,
真正的value就是某个用户在某个category下的SBS。
虽然简单,但是据论文中所说,效果和soft-search差不多,反而性能优秀,维护方便。
[[Soft Search]]
正如我在 [[@无中生有:论推荐算法中的Embedding思想]] 中指出的,hard-search拿attribute进行精确匹配,不如用embedding进行“模糊查找”的扩展性好。于是,很自然想到用target item embedding在long sequence中 :-> 查找与之距离最近的K个historical item embedding,组成SBS
至于item embedding从何而来?
但是值得注意的是,SIM的论文里指出, 用户长短期行为历史的数据分布差异较大 ,建模user short-term interest的item embedding不要复用于建模user long-term interest。也就是说,同一个item id在用于建模长期兴趣与短期兴趣时,对应完全不同的item embedding。
在long user behavior sequence中搜索时
第一个gap:两阶段的目标不一致 #card
ctr model目标是将ctr预测准
而SIM hard search所使用的“attribute相同”原则,和这个目标的关系不那么直接
第二个gap:两阶段的更新频率不一致 #card
ctr model需要以online learning的方式频繁更新,以捕捉用户实时的兴趣变化
而无论SIM hard/soft-search中所使用的索引都是离线建立的
为了弥补以上两个gap,阿里做法是 :-> 拿第二阶段ctr model所使用的item embedding来进行第一阶段的Top-K retrieval(也就是search)
但是如前所述,拿target item embedding(也是来自ctr model)与long sequence逐一做点积来search top-k similar items,时间复杂度= ,无法上线
SIM-soft的方法是用pre-trained embedding离线建立索引,时间复杂度降为 :->
而这一次,阿里想摆脱离线建立索引带来的两阶段gap,无法改变L那一项,因此只能优化d。
[[End-to-End Target Attention]] :一套Embedding,既过滤,也注意
ETA用 **SimHash ** 算法,避免用dot product检验target item与historical item之间的相似性,太耗时间
某次online learning结束之后,导出item embedding的时候,各item embedding的fingerprint就提前计算好。这样online serving时,top-k retrieval的时间复杂度就降为了 #card
看上去,很好很强大。但是毕竟ETA中top-k retrieval与L呈线性关系,对序列长度的限制还是很大的。所以,SIM论文中在industry dataset实验时,所取的用户行为序列的长度还过万,而在ETA中序列长度就下降到了 千级 。
[[离线提取长期兴趣]]
本文总结了建模用户长期行为序列的几种姿势。按照提取用户长期兴趣发生在“线上”还是“线下”,相关算法可以划分为“在线派”和“离线派”两大技术路线:
在线派,以阿里的SIM/ETA为代表
为了节省时间,DIN中target item给historical item加权或降权的soft-filtering,被替换成 :-> Search这种hard-filtering。
SIM采用两阶段法:
为了加速Search,SIM :-> 需要根据attribute或pre-trained embedding在user long behavior sequence上建立索引。
如何将检验两个向量相似度的时间复杂度由O(d)降低为O(1) #card
因为检验两向量的相似度被大大加速, 我们可以用同一套item embedding,既用于第2阶段的ctr预估,也用于第1阶段的Top-K similar item retrieval ,从而削除了两个阶段间的information gap
离线派
“离线派”技术路线,或手工挖掘用户在某一个长时间段上的各种指标,或离线将表达用户长期兴趣的embedding训练好,缓存起来,供线上模型调用。
在某些场景中,“离线派”技术路线取得了比“在线派”技术路线更好的效果。
id:: 67cc016a-a71b-49e4-ace4-e973e013b68d
中国与西方最大的不同,是历次革命都要推倒重来,革命总是伴随着血琳琳的屠杀和破坏,无论是财富还是文化。#card
每次建朝人民都要从一穷二白做起,所以才说中国人民苦难深重,几千年的历史,居然没有什么积累,有的只是统治者根深蒂固的帝王思想世代传承。
从项羽焚烧阿房宫到近代的破四旧,革命的都非常彻底,人民洗脑也非常彻底。所以帝国时代才能够一直延续。西方人贪婪对财富是占有和继承,东方人重义轻利所以破坏焚烧和屠杀。
西方的大革命产生了资产阶级新贵阶层,然而当时却不为普通群众接受,尽管他们有钱有势,但是却得不到群众的尊敬,直到资产阶级新贵们捐钱捐物,为群众做了大量的善事之后,才得到人民的认可。
而我们这个时代产生的新贵却太多的为富不仁。
去徽州旅游的人都知道,道路、桥梁等公益设施无不是富商修建。
古人不但讲个人声望,还讲积阴功。
假设你去贵州的深山中旅游,发现山径上常常有个亭子,不但有坐的地方,还有水井或者用水管从山上引来的泉水供路人休息。这都是周围的村里人为积阴功修建的,绝非政府投资。
时值社会主义的今天,反而一切行善积德的事都不讲了,全民金钱至上。没有文化建设的民族是悲哀的。
汝爱之罪:
kkndme: 赞赏这一句,呵呵,历史规律是不变的,变化的只是时间、地点、人物、事件。
城头变换大王旗。
tjOOSAN: 历史规律是不变!但他妈世界变了!~~ 中国采用资本主义制度了.还只参考中国历史?
kkndme: 你知道什么叫资本主义制度吗?
早在1748年,孟德斯鸠男爵发表了伟大的划时代的巨著“论法的精神”明确提出了三权分立。奠定了资本主义制度的基础。三权分立制度就是国家的立法、行政、司法三权分别由三个机关独立行使,并相互制衡的制度。讲的是法律精神,讲得是私人财产神圣不可侵犯。
而作为一个人治而非法制国家,怎么能说是资本主义呢?
建议个别(tjOOSAN)不读书,不研究,不了解中西方历史,不懂经济,对社会制度基本的理解基本是个白痴的同志,就不要乱发表议论了,惹人笑话。#card
无论是中国还是西方历史对现在都是很有借鉴意义的。
这就使毛说过的“古为今用,洋为中用”,毛建的武装斗争及建国思想其实很大程度来自于朱元璋。
古代君主统治国家征服世界靠战争武器,现在则靠 金融武器 。#card
西方,我们所熟悉的具备最纯正贵族血统的哈布斯堡家族,曾经的德意志王国和神圣罗马帝国的统治者,家族成员曾经统治过欧洲诸国:包括波希米亚王国 、匈牙利王国 、克罗地亚及斯洛文尼亚王国、伦巴第及威尼斯王国 、奥地利皇室领地 、萨尔茨堡公国 、塞尔维亚及塔米斯-巴纳特公国等等无数欧洲国家。
而现在,哈布斯堡家族控制着华尔街,继而通过华尔街控制着全球的经济。
历史是在继承的前提下发展的,特别是在西方,现在几乎每一个显赫的家族都能追根溯源。因为尽管西方也发生大革命,但是象文革一样彻底否定历史是完全不可思议的。#card
我们有点英雄情结的人听到最多的西方中世纪十字军三大骑士团:圣殿骑士团、条顿骑士图案、医院骑士团;直到现在仍有两大骑士团存在。
条顿骑士团总部现在还在德国,专门从事慈善事业。
医院骑士团后来改名为马耳他骑士团,也就是现在的马耳他,世博会还来上海参展。
只有圣殿骑士团灰飞烟灭,但现在仍有大量的修士组织自称为圣殿骑士团的继承人。
完全不懂历史,就等于完全不懂得社会。
fengyu1218:
#card tjOOSAN: 而且对于你所标榜的“暴涨” 你自己后来也改了,是在波动中上涨!那还是暴涨吗?你都违背了自己的标题。
kkndme:
呵呵,短期的调控并不能改变长期上涨的趋势,
当资金的运作规律收到外力的压制,短暂低头的房价就会迎来暴涨。这是规律。
我爱的飞飞:
在谈谈通膨是怎么形成的。生产资料是有限的,生产资料其实一直都没有变,而货币只是一种虚拟附加值而已。#card
像楼主所言,一个国家,有人手里有8元(假设他是建材行业的),有人有12元(假设是石油行业的),但是人心不足蛇吞象,建材行业的员工觉得不够用了,8元的想变成13元,石油行业的12元想变成20元。
因此,建材行业把原来卖8元的水龙头提价成13元,对于石油行业的人,装修的时候拿着12元发现自己买不了13元的龙头了,于是琢磨着把石油卖到20元,由此各行业依次提价,物价越来越高,实际上水龙头还是水龙头,一桶石油还是一桶石油,生产资料始终没有变,稀少,远远不够人均分配,但是生产资料的价值变了,提高了。
拿成都的房价为例,02年的时候成都人均收入800-1200,房价2000-4000,约为房价的3倍,现在成都人均收入2500-3000,成都房价7500左右,仍然为3倍比例,看似7500比2000翻了多翻,实际上房子作为所谓的生产资料,始终是稀缺的,在02年的时候,拿着当时的工资买4000的房子仍然不容易。
任何时候,其实都是一种相对平衡的比例,而空军喜欢拿现在的工资跟过去的房价相比,但是那种状态太过理想,想明白的,就会觉得房子不贵。
什么时候房价会下降,一句话供求关系,人口减少是房价下降的唯一出路。#card
即便是出台房产税,很有可能富人顶着房产税不卖,变相加租抵消房产税,特别当今租房市场存在中介的操纵,很多房子都是通过中介渠道才租出,垄断的中介忽悠房东集体涨价,房产税很容易就转嫁给租房者。
政府也不是完全不作为,当你开着车逛着公园坐着快铁地铁的时候,就应该加速印刷的钞票有一部分投入了基础设施建设,如果不通过税收和出让土地收入来建设,我们很可能还走在乡间小路上。
虽然瓷器国是中yang高度集权的国家,但是任何朝代都是诸侯之间相互制约,上面出台个政策,各个诸侯执行与否或者执行是否到位都可以影响房价甚至很大影响,且不谈上面是不是真的想降房价,即便是动真格,下面的诸侯听不听招呼是另外一回事。#card
任何社会都是这样的形态,忍无可忍-革命-平稳-不满足-垄断与剥削-改革-改革失败-再次忍无可忍。为何历史反反复复如此?就是因为人的劣根性,因为人性的贪婪。所以周而复始而已。#card
在所有的照片模式中,人像模式也是最为复杂的。因为 iPhone 相机,今天已经在人像模式里内置了两套在传统人像摄影中重要的系统光圈和光效。 #card
光圈是指已经在景深模拟上,有了一套完整的系统。
光效是指已经在人像光效上,有了很高的可用性。
光圈
手机上的人像大光圈模式已经不是什么新鲜事,而在手机上通过 改变不通的虚化程度 来模拟不通的光圈数值,也不是 iPhone 第一个做的。
在专业摄影师看来 iPhone 是做的最好的。因为景深的变化并不是单纯的数值模糊,这里面有许多的衡量因素。其中,光斑的大小和形状就是显性因素。在 iPhone 的人像模式中,我们可以在功能区多出了一标志「ƒ/1.4」。 #card
这是在最近的 iOS 系统中刚刚加入,这意味着,我们可以在前期预览拍摄的时候直接选择你需要的景深效果。点击以后,滑动取景框上的数值,就可以看到不同的虚化效果。你会看到,虚化的光斑也会有着不同形状大小的变化,这非常的真实。甚至是,如果单纯只从光斑的好看程度上,iPhone 相机不输于一些昂贵的定焦镜头。#card
当然,和前面的滤镜一样。无论你是前期选择的光圈,还是后期在 相册 里调整的光圈,他们都是可以随时再进行更改的。所以,你不需要担心以后会后悔。甚至是因为有了光圈 ƒ/10 的存在,你可以让你一张人像虚化的照片就变成普通的照片。
但从我自身的使用经验来看,想要最佳的效果,一般都是在 ƒ/2.8 左右,这样的画面一般都是真实的。但是需要说明的是,很多人对于相机的光圈虚化效果的认识是错误的。比如下面这一张图很多人认为这个抠图是错误的。因为画面中杯子的把手部分已经是模糊的。#card
iPhone 人像模式虚化技巧:
人物和背景一定要保持一定的距离,最好是有一定的空间纵深感。#card
想要很好的虚化效果,首先本身就需要人物和背景之间存在的一定距离。
即使你使用上万元的昂贵定焦镜头,如果主体和背景贴在一起也没有很好的虚化。
学会看取景框。#card
想要好看的光斑焦外,要保证焦外本身有点状光源。 #card
+
iPhone XR 的人像模式在抓拍方面足够好,可以尽可能的让人物多一些动作,在捕捉精彩的瞬间。#card
[[iPhone XR 和iPhone XS Max 的人像模式成像原理]]
您是什么时候关注到“生命力”这一说法的?为什么决定研究生命力?
“生命力”是个常用的汉语词汇,以前我们经常用这个词去强调 一种生理上的能量 ,比如形容一株植物很有生命力、爬山的老人很有生命力等等,但我们一般不会这样来描述自己。后来我听到一些年轻人讲自己的生命力萎缩、崩塌、干枯……我注意到这是一个比较新的说法,而且听的人马上会被打动,说明这种说法的唤醒性很强。年轻人多次用“生命力”来表达 自己的体感 ,同时它本身描述的就是一种总体性的生存方式,这就是一个新的感知和意识。
这个意识从哪里来?#card
有次一个学生和我聊天说,我们学生为什么不拿工资。这让我想到,学生来学校真的是接受知识的吗?
学生感到自己不是在接受知识,而是像工厂工人一样完成任务,既然做任务都得付钱,那为什么不付钱给我?学校和教育系统不是在供给知识,而是好像在吸收一个什么东西。
我想这个就是生命力。学生来学校提供生命力的消耗,去生产分数、生产成绩。
不只是教育系统,其他地方还存在广泛意义上的“生命力捕获”。我用生命力这样很接近体感的概念,来解释 我们的生活和对生活的意识 。
生命力和生命是什么关系?
生命力和生命的差别比较学术化。#card
在日常生活里,生命的消失就是整个人都死了,
生命力的消失就是觉得无意义、空洞、没劲,然后抑郁,甚至自杀。
生命力的捕获和[[生命政治]][1]有关,但我无意在此强调它们之间的联系。#card
生命政治是要描述一种统治形态,生命力则是不可以对象化的。生命力是你可以感受到的,而且只有你能感受到,外界的权力当然会影响你的生命力,但很难直接触及到你的生命力。
我的出发点不是对权力变化做一个谱系的研究,我主要想讲的是个体的意识——个体意识到今天社会当中、生活当中的问题之后,要怎么办,怎样再往下想、往下探索,怎么继续往前走。所以,我说的生命力是主体的一种经验和感受,而不是从外在的制度设计的权力的角度去看。
[[通过日常生活中最典型的三个例子来理解生命力]]
什么是“间隔”?它和反思有什么区别?
间隔跟反思有关,但有些反思是没有间隔的。#card
其实人们一天到晚都在反思,在想领导为什么这么看、我应该怎么办之类的,在一根筋上在想这个问题,越想越复杂,就成了一个死循环。
他纠结:领导让他干,他不太愿意干,但又不得不干,如果不干领导会怎么说……反复地自己揣摩、解释,这也是一种反思,但问题就在于没有间隔。
间隔强调 有一个距离 ,有间隔感之后,很多时候你可能不想去反思它,而是觉得这个事就到此为止,我还有别的事要忙。这就是一种保全生命力的办法。
生命力是怎么被捕获的?
工厂捕获劳动力的方法 #card
拉长劳动时间,后来有了8小时工作制就不管用了;
加强劳动程度,比如流水线等等。
生命力的捕获 #card
包括体力,但它还包括注意力、精力、意义形成过程等方面。
在互联网时代,人们生产的很多东西不是有形的,也不是明显可以计件的,不能通过时间来控制,比如一个人可能坐在办公室,其实在想别的东西。
但是,我们实际看到的情况是很多人下班了还在工作,工作时间可以通过在家办公这种方式无限延长。
所以生命力捕获比劳动力捕获的范围更宽,这跟现在技术条件、新的经济结构有关。
生命力的捕获跟劳动力的捕获还有个很重要的区别
劳动力捕获产生 异化 , 劳动异化 产生 批判性意识 。#card
当工人被异化,他会觉得生产得越多越觉得没劲,在工厂里像行尸走肉,只有停止工作才会有战斗力。
当他意识到生产出来的东西都是压迫自己的时候,就会开始有反思,就会有政治学习、集体罢工,会组织游行、组建政党。
所以异化可能成为解放的开始。
而生命力捕获没有这一点。#card
这种区别跟意识和行动的间隔有关。
19世纪的工人有上班下班时间的区分、有城郡附近、有家庭关系,他们的间隔可以很快填充起来。#card
工人阶级的形成也跟他们住的地方有关系,比如英国的工人在酒吧里面可以讨论政治问题。
他们作为人的意识,和作为一个操作简单任务的工人角色之间的间隔越来越松,间隔就成为一个政治化自我解放的空间。
但在今天生命力捕获的情况下,人很难产生间隔。#card
我们把自己定义为一个学生、一个白领、一个受尊重的律师,继而整个时空的安排不让我们拥有一个间隔。
我们没办法跳出来,站在这个事情的外面,思考自己如何作为一个完整的人。
链接:GitHub - wangshusen/RecommenderSystem
[[ItemCF]]
用户最近感兴趣的物品列表
找到列表中物品最相关的 topk 物品
[[Swing]] 给用户设置权重,解决小圈子问题
重合度计算方法 #card
引入重合度计算两个物品相似度的方法 #card
[[UserCF]]
判断用户相似度的方法 #card
多少喜欢的笔记是重合的
多少关注的作者是重合的
预估用户对物品兴趣的方法 #card
[[Approximate Nearest Neighbor Search]]
[[双塔模型召回]]
[[双塔模型+自监督学习]]
[[Deep Retrieval]]
[[地理位置召回]]
[[作者召回]]
[[缓存召回]]
[[曝光过滤]]
[[深度交叉网络]]
[[交叉层]]
[[Cross Network]]
[[LHUC]]
[[SENet]]
[[Bilinear-Interaction Layer]]
[[SIM]]
[[Maximal Marginal Relevance]]
[[DPP]]
优化全链路(包括召回和排序)
[[冷启动召回]]
[[Look-Alike人群扩散]]
[[物品冷启动:流量调控]] 解决 **流量怎么在新物品、⽼物品中分配 **
[[物品冷启动:AB测试]]
1 序列都有哪些组织方式,序列哪些特征是重要的?如何判断新增序列的有效性及收敛情况?如果实际序列小于最大长度,如何padding是最合理的?#card
2[[搜推算法的序列建模需要做self-attention吗?]]
3⃣️ 长序列在什么场景下提升会更大?长序列一般的建模方式有哪些?#card
长序列在任何场景的提升都很大吧。。。重要资源够,
长序列的方式有硬建模sim和soft的方式,
sim就是舍弃序列中和打分商品类目不一样的商品,缩短序列长度减少计算量,
soft的方式有很多fancy的论文,比如eta,cta
4⃣️ 在Attention计算的过程中,Mutli-head机制起到了什么作用,能否举例说明?#card
5⃣️ 序列建模在用户冷启场景下,没有用户行为有什么好的解决办法吗?#card
6⃣️ 相对NLP/CV等任务通常多层Transformer的堆叠,搜推往往只有一层,为什么这么操作?#card
7⃣️ 序列建模与GNN有什么区别?序列做宽/深分别在什么场景下收益比较大?#card
做Target Attention的时候如果KV只使用部分序列的特征有什么优劣?#card
9 [[序列建模可以建模联合概率吗]]?即P(target|trigger1,trigger2)#card
条件概率:自回归或者上下文编码捕捉条件依赖
联合概率本质是通过链式法则分解为多个条件概率的乘积
10 序列建模与传统的协同过滤在建模上的优劣分别有哪些?#card
为什么我们经常听到现在的学生说生命力被压抑、被消耗,但同时年轻一代似乎又呈现出一种看起来更张扬、更自我、更清醒的面貌?
生命力被剥夺不意味着 自我意识被剥夺 #card
年轻人可能自我意识很强,甚至过度,但有了一个强大的自我意识之后,还是需要间隔,要梳理自己跟这个世界具体的关系是什么。
年轻人感受到生命力的消耗,所以反击的时候会有一种非常绝对化的姿态,因为他觉得整个世界在压迫我,但我可以很强大、很特殊。
躺平、摆烂也有激烈。如果这种判断做得比较绝对,听起来就很清晰,但它在实践中不太有效,因为他们要面对的情况是很复杂的。
激烈的语言和行动(作为反击的表现),是生命力被剥夺的一个重要特征。
有时会听到年轻人说,整个世界都是一场骗局、让世界毁灭吧,甚至还有 “人生的分水岭是羊水”、“子宫彩票” 等等这些宣言,我觉得这都是因为他们 抽象的自我意识很强 ,接着对世界做了一个总体性、阶段性的判断。
**项飙:**对我来讲这是一种呼吁、一个叫喊。 #card
他们呼吁别人听到他们的声音、了解他们的感受,而新的语言、新的思想能够帮助他们前行。
他们之所以会把自己叫做 “尸体”,会说出“尸体暖暖的” 这句话,会把这句话写到评论里面,那显然证明他们是活着的,显然还能感受,在渴望跟别人交流,期待的是尸体还能更暖一点、更活过来。
所以关键就是我们怎么样去应对这么一个呼吁和叫喊。 #card
作为一个研究者,听到很多这样的叫喊,我能够在多大程度上做有效的回应?当然非常有限。
但我活着的状态就是努力做出这样的回应,也许毫无效果,这没有关系。
现在我对生命力、间隔这些研究议题的定义就是,面对中国现在的这些叫喊,我要回应。
年轻人语言的表达和变化,有时候表现了情况的进一步恶化,有时候表达了他们的批判意识更加尖锐、呼喊的声音越来越高。我觉得在网上说 “尸体暖暖的” 人,在生活中不一定很消沉,可能还蛮有生命力的,只不过他的生命力有时候会突然被碾压,会感到痛苦、抑郁,不知道怎么发扬生命力。但我觉得他那股气还在,否则不会说出这种话。 #card
不少人注意到,当下年轻人普遍内向关注,对外的关注很少。年轻人中人格测试、算命、塔罗牌等玄学的流行与此有关吗?很多命理师、心理咨询提供了一种类似心灵按摩的服务。如果说这是一种向内关注的行为,那么有什么可以促使年轻人向外关注、拓展自己的[[横向反思空间]],同时又能安抚自己的途径?
**项飙:**很难去判断塔罗牌和算命是向内还是向外的。当然,它针对的是自己的感受,但是为什么有人要去算命? #card
**他们是要产生一个叙述,对自己的生活产生一个叙述。**他听别人来讲,等于是借用一个塔罗师、命理师,整理自己的一些经验。
这个时候,他在一定意义上要把自己变成一个思考和观察的对象,所以它有一个反思的过程在里面。
虽然他是要看自己,但也不是完全内在的,他要把自己跟社会联系起来,比如去整理自我跟他人、跟父母的关系,那么这里就有一个向外的倾向。
为什么我们觉得(玄学)这种东西好像不太够?#card
原因在于他有向外的欲望和倾向,但他缺乏向外的资料。
这种资料不是读书的资料,而是缺乏向外的经验和方法,向外也看不到具体的东西。
他要有经验、有方法去做积极的判断,去看外面的世界究竟是怎么样的、自己是怎样的、历史上究竟发生了什么、你住的地方和所在的学校究竟是怎么回事……
要去看见附近的这些具体的事实,跟自己的生活发生关系,而不只是从书本上了解。
但现在我们整体的教育方式正要压缩这部分,学生不生活在世界上,只生活在存粹的教学楼、实验室里,在一个真空的环境里。所以他对周边还有兴趣,愿意来算算命,愿意去产生一个叙述,我觉得已经很不错了。在实际生活里他们很少有机会接触外面的世界,家长都和老师都千方百计要 屏蔽外界 ,所以无法向外关注不能够怪同学。
您在理论中使用 “附近” 和“生命力”这种直接取自生活的词汇,是为了便于理解和传播,还是认为它们本身就有理论价值? #card
**项飙:**两者都是。这样的词汇往往能够把更多的经验整理和调动出来,讲出更多东西、讲得更加真实,而且它们容易交流、容易得到反馈。并不是说要读的人多,对于研究社会意识和社会问题的人,可交流性
本身就是工作的一部分。
如果我做的东西能够回到公众当中去,然后再从公众那里回来,这本身就是一个丰富理论的过程。所以不是在理论之外还存在一个交流问题,交流的效果就是在理论之内的。一个理论的交流效果好,就说明这个它有很大的生命力、它抓住了一些东西,那它的取向就是比较精确的,它还会不断生长。如果一个理论没法交流,那它就在那里了。
以前很多人会说,这个孩子是 “读书的料”,另一个孩子不是 “读书的料”,也就是我们认为学习能力很大程度上是天赋决定。而现在,越来越多人认同精英是被制造出来的,天赋的影响其实没有这么大。在这种观念下,家长越来越重视环境和后天的培养,也更有动力在孩子的教育上密集投入。我们如何看待这种观念的改变?这种改变有利于社会平等吗?
所以人们虽然在意识上觉得可以更平等,但这在客观上并没有发生,而且其中有一个很重要的变化,就是对生命力的捕获到了一个空前的高度。
大家都希望用非常规的方法在不平等的体系里受益,越是下位者,越是希望改变。
这里面最重要的资源投入其实就是生命力的投入,长期的注意力、体力、心理意识的投入。
所以我想最大的改变可能是在这里。
人们意识到密集投入可以提高孩子的成绩,是不是陪伴式教育下沉到乡县的原因?在中西部县城,很多农村进城家庭的情况是父亲在大城市打工,母亲在县城陪读,老人在乡村务农补贴家用。这些农村宝妈有中产化的教育观念,会全阶段陪读、把孩子送进县城里的私立学校。这样做的最终目的,仅是确保自己的家庭未来能在县城扎根。农村家庭并没有期待子女进入精英阶层,但比起直接购置县城房产等投资方式,他们为什么热衷于卷教育?
**项飙:**很多人也会直接买房,然后获得户口,孩子可以就近在公立学校上学;也有人孤注一掷,一定要去最好的学校。#card
**从农村社会出来的人有时有一种报复性的要翻身的欲望,这个欲望可能比较模糊,不一定要让孩子进入精英大学,但把孩子送到私立学校这件事本身就有很强的象征意义,**这是第一。
第二, 这是对孩子的一个宣告:我对你是多么的在意。
这种对孩子的宣告,是这一代中国人人生意义的一种补偿方式。为什么其中有一种报复性?#card
因为农村出身的一代人出来打工后,长期处于一种悬浮状态
,一切生命的意义都是为了一个想象的未来。
等到现在,他们好像已经没有别的东西可以视作意义来源了,唯一的意义来源就是对孩子做一种无限的投入。
所以倒过来想这个问题,我们问这些农村家庭,那么多教育投入,究竟对孩子未来有什么预期?他们的未来不就是这样吗?做别的事情来达到目的不也是一样吗?#card
这个问题对他们是不对的。他们做那么多投入,不是在预期一个未来,而是要对过去做一个救赎。
救赎不是说自己过去有罪,而是过去存在巨大的残缺,需要通过这样一种救赎性的行动来对自己曾经高度悬浮的生活有一个交代、赋予一个意义。
既然是对过去的救赎,那么他们就不太考虑未来究竟能够达到什么,有时候还会自我强迫性地就要求自己在子女教育上一定要投入到 100%。
感觉这段话挺残酷的,人类学家抽出身子评价 [[2024/12/02]]
学生经常提到生命力的消耗、萎缩、坍塌…… 这种坍塌是可以通过个体的力量重建的吗?
生命力是可以重建的
老师在其中是一个很重要的群体,#card
有很多老师对这样的教学方式也很不满意——本来当老师是希望传授知识的,不是在行为上控制学生,只为了让学生提升分数的。
如果通过一些讨论、交流,改变一些老师的想法,那么他的教学方式、评价学生的方式可能就会不一样,这样就能有一个微观环境上的改变。
家长是一个非常多元的群体,有很多家长也在 “吐槽”。#card
还有一个我比较乐观的原因。生命力需要的是 意识上的间隔 ,这种 间隔 即使在系统没有大的改变时也是可以落实的,而且有时候只要稍微意识到这一点,就能在个体层面上看见比较大的效果。所以改变系统不是唯一的方式,在不能改变系统的情况下,我们仍有发挥能动性和创造力的办法,去创造一些小的 横向反思空间 。
我们怎么去理解 “[[横向反思空间]]” 这个概念?怎么去创造这个空间?它和 “附近” 有没有共通之处?
横向反思和行动空间可以认为是附近的一个具体例子。
反思还要加上 行动 ,要意识到你是有可做的事情的,而不仅是在那里想。比如做一些艺术,或者跟别人一起参加一些社团,把自己的间隔空间给丰富起来。
最后是一个空间。我比较强调是存在状态,最重要的是这种空间让你在各个场景、各种时刻都觉得有可能去行动。#card
我的 “空间” 这个词是强调这样一种可能性,你觉得自己所拥有的一种可能性——随时可以找到朋友,聊一些事情,周末有别的事情可以做,有一些沉浸式的体验能吸纳你的注意力。
这跟具体做什么事情没有太大关系,但你要有这么一个空间存在。
现在学校其实就是要消除这些东西,而且往往从 物理空间 开始。比如学生要住校,时间和所有的日程都要被安排,这样就让你没有机会去发展横向的反思和行动空间。
恋爱可以看做是学生的对抗吗? #card
横向反思空间
**项飙:**为什么学校对所谓早恋,或者说男女非正常接触,会那么警惕?其实不只是因为性保守的观念。主要是两个人恋爱之后,就会对彼此说,我喜欢你,你考试考多少分没有关系。当他们说我喜欢你,我不需要第三者的判断时,就出现了横向反思空间,两个人在一起立刻就跟系统产生了间隔。
我没有倡导早恋的意思,但这是一个很生动的例子,可以用它来解释横向反思空间是什么。其实友情、邻里关系、爱好、家庭内部更平等和民主的讨论等等,都能让学生跳出考试学习怪圈,讲一点别的事情。
教育系统是如何捕获生命力的?
捕获生命力的过程比较复杂,一个典型的例子就是招生。#card
学校为什么对招生这个环节那么关注?因为教育首先不在于教育,而在于抓人。学校把很大的精力放在能不能抓到那些理想的学生。“抓尖” 成为最重要的事,接下来怎么教是次要的。#card
这从一个侧面来说明,对学校来说,抓人比教人更重要。整个教育体系主要就是 一个把人分等的机械 ,而不是一个真正的培育过程。为什么要抓人?因为他们觉得这些孩子有高质量的生命力,比如注意力更集中、更自觉。
招生之后的手段就很多了,比如大家熟悉的衡水模式,就是在 时间和空间上 的绝对控制,基本把每一个流程做什么事情全部规定好。在这个过程中还有各种各样的仪式化,比如高考前拉横幅、供水果糕点之类的,给考试制造一种重大的神圣感,让学生就觉得考试就是他生命当中最重要、最严肃、最神圣的事情,不让你跟这个事之间产生间隔。
对时空的掌握 是最主要的手段。
+ 在体力上通过长时间的控制 ,让学生所有的注意力全部百分百投入到现在要做的任务上,这样学生就没有别的经验,也没有机会碰到别的人、说别的事情,所以不可能产生出一种比较有效的方式来看待这一切。
+ 对于老师和家长也是如此。
我认识一个美术老师,他比较优秀,经常会出差去做一些展览,或者参加会议,所以他非常受学校其他老师的欢迎——因为他经常出差,数学、英语老师就可以来抢他的课。
还有中午的自习时间,学生本来可以有半个小时用来休息,但老师会来把这半个小时也拿走,让他们继续学习。
+ 长期下来,学生连基本的休息都没有,我觉得在物理意义上就可以认为这是生命力的剥夺。通过物理意义上的生命力剥夺,最重要的目的是 **让人的意识无法与行动产生间隔 ** 。
我们看到有很多衡水中学的学生在进入大学后失去了目标感,比起来自大城市的同学积极参加各种活动,他们像进入了旷野一样迷茫。他们是生命力被捕获的对象,但当他们反思衡中模式的时候,一些人会评论说 “衡中模式救了你”。不少人认为,这些衡中学生作为优胜者集中享受了资源,从而走到了不属于自己的大世界。由此来看,教育系统到底是生命的 “捕获者”,还是 “拯救者”?
**项飙:**我觉得这样的看法是有问题的。这种教育模式戕害的是 100% 的学生,因为学校要汲取 100% 学生的生命力,让所有学生进入这个体系竞争。#card
有这 1% 的成功,所以 100% 的消耗是合理的
。可是这在逻辑上说不通——不搞那种模式,难道就没有清华北大了吗?如果不管怎么样都可能会有 1% 的学生进顶尖大学,那为什么一定要采取 一种消耗生命力 的方式?
这种说法认为:像你这样的小地方来的人,不那么苦的话,你是进入不了这里来的;你因为是小地方的,所以你只能够这样来进入。这是一种非常常见的社会意识(“小镇做题家”),把一切现存的东西都合理化。#card
首先它预设小地方跟大地方就是不一样,机会成本就是不同;
第二,顶尖学校就是更好的选择;
第三,在现在的安排下,人就是分等的。
既然都合理,那你要在这种情况下改变命运,就是要采取这样一种自戕式的方式才能成功。学校帮助你采取自戕式的方式让你华丽转身,把你送到顶尖的位置上,所以你应该感谢它。
但是这整个叙述里没有个人。#card
它说小地方的人要进大城市、进顶尖学校,分层就是合理的,所以必须要采取非常规手段。
但它不会问你,小地方对你意味着什么,更顶尖学校为什么就更好。
也许对一些人来说,他们就想把小地方建设好;
也许顶尖学校对一些人来说没有太大意义。
但是在社会压力下,他们稀里糊涂地认为去了那里就好,但去了学校根本不知道去干什么,只不过是听大家说那学校好他就去了。
**在这种叙述下,过程对每个个人的具体含义是被忽略了的。就像把石头从 a 点搬到了 b 点,因为石头到达了另一个地方,就说明这个用力有效,但这个用力究竟怎么样碾碎了人的每一个细胞它根本不管。**这样一套社会机械学的说法把一切都合理化,听起来很朴素,但你可以看出这是物化。它把整个社会生活想象成是一个机器,你在里面要从一个螺丝钉变成另外一个螺丝钉,要咬牙切齿地使自己对机器有更大的帮助和贡献。#card
这个系统就是要生产出大批的陪跑、韭菜、炮灰,顶部的华丽光环全部要靠底层的生命力烘托出来。
还有很多人认为在整体资源匮乏的情况下,教育系统通过一种统一的标准将人筛选、分层,是一种较为高效、公平地进行资源分配的手段。
所以不是教育资源的匮乏,是评价体系的单一和意义系统的匮乏。
#card
中国教育从 90 年代到现在越来越卷,但从 1999 年到 2020 年,中国总高校的招生人数增加了 6 倍。衡水模式是在教育资源极度扩张的过程中出现的。
所以总体的问题是质量,数量并不缺。
但是如果一定要说只有北大清华是好学校,那就没办法了,认准了这个世界上只有一个东西是好的,当然就会匮乏。
把人完全当作资源,去讨论怎样以一个公平的方式对人进行分类,我觉得是一种想象。#card
比如假设人就是一个和资源一样的东西、分配必然要高效化,这其实是自己在做一些比较抽象的推演。
为什么这种观点听起来好像很有道理呢?#card
这就是[[阿伦特对意识形态]] [2] 的评论,意识形态是高度理性的。
意识形态的一个特点就是逻辑化,因为意识形态是权力,它代表了权力这一方对生活的想象。
这个想象忽视人的真实生活,忽视真实实践当中的复杂性,只是在大脑里面用一些比较日常的、现象层面的东西进行进行纯粹的推理。
这种推理没有跟生活中的纠结、矛盾结合起来,而是按最简单最明显的逻辑进行,所以它听起来好像非常直白 :-> 人多资源少,大家肯定要竞争,只有少数人胜出。
@牛津教授项飙:教育系统正在生产大批陪跑、韭菜、炮灰,顶部的华丽光环全靠底层的生命力烘托
今年,关于学生自杀的消息越来越多,而更令我感到窒息的还有几张照片:中学教学楼的走廊,装上了密集的防盗网,让人分不清里面是学生还是囚徒。这些防盗网的作用自然不是防盗,而是防止学生跳楼。
学校处理坠楼事件的经验丰富,已经形成一套熟练的“洗地”流程和增添防护措施的办法。一些讨论围绕学生心理状况展开,却无法解释当下普遍的厌世情绪——当自杀反复发生,我们或许该发问,如果一个环境中不断有人“生病”,那么“病”的究竟是谁?“放弃生命”真的是少数学生的“个人选择”吗?
许多学生说,他们被无力感淹没,找不到生活的意义,感受到生命的枯萎……人类学家项飙注意到这些表达,并在今年提出“生命力”这一概念,指出教育系统正在大范围 “捕获生命力” ——通过上课、刷题、考试等时间和空间的安排,捕获学生的体力、长期注意力及意义赋予能力,从而生产高分。
什么是项飙所说的生命力?我很难给它下一个确切的定义。就像“附近”一样,它似乎来自于一种直观的感受。但在我的想象里,代表生命力一定不是整齐划一、拼命朝一个方向生长的速生林,而是森林的千姿百态。舒展的,柔弱的,挺阔的,散漫的,生命相互依存,自由生长,创造出属于自己的局部气候。
围绕“生命力”这个关键词,我联系到项飙,并向他提问:学生为什么普遍感到抑郁、焦虑?我们是怎样被卷入“捕获生命力”的运动的,又该如何突围?希望下面这场对话有助于激发更多讨论,促成一种或多种局部气候的产生。
[[Das@电车难题]] 是 伦理学 领域最为知名的思想实验之一
认知论 领域的一个最重要的思想实验就是:空地上的奶牛([[The Cow in the field]])
(三)定时炸弹 [[The Ticking Time Bomb]]
十个著名悖论的最终解答(四)[[爱因斯坦的光线]](Einstein’s Light Beam)
十个著名悖论的最终解答(五)[[忒修斯之船]](The Ship of Theseus)
十个著名悖论的最终解答(六)[[伽利略的重力实验]](Galieo’s Gravity
十个著名悖论的最终解答(七).[[猴子和打字机]](Monkeys and Typewriters)
十个著名悖论的最终解答(八)[[中文房间]](The Chinese Room)
十个著名悖论的最终解答(九)[[薛定锷的猫]](Schrodinger’s Cat)
10.[[缸中的大脑]](Brain in a Vat)
我们十几年的外语教育方法几乎全错了 - 知乎 (zhihu.com)、学习观07英语学习法视频演示 - 知乎 (zhihu.com)
隐式知识 implicit knowledge
错误的方法,
从零开始学习英语
听、说、读、写,四个方面学习单词
看句子想场景,不要读出来
注意点
不要依靠意识,思考场景
以句子为单位
多例子学习
输出始终一致
如何克服默读
[[chunking]] 把独立的信息组成一体,利用神经元的并行功能。
通过判断阅读速度是否可以大于读出声的阅读速度
边吃口香糖边阅读
[[思维导图]]
[[好奇心]] 生理模型
相关的大脑区域是负责奖励机制的伏膈核,对成瘾行为起重要作用。
好奇心是促进学习的奖励机制
不是不喜欢学习,而是不喜欢不符合大脑特点的记忆。
好奇心的对象 - 例子(故事)
标题党如何通过好奇心来引诱大众
例子残缺
+ 输出缺失
知识白送
+ [[回归知识]],好奇的是实现步骤
好奇心的敌人不是年龄,而是已有知识。
固执心理
拒绝新知识
归为旧知识
权威思维
[[洗脑]],利用例子构建观念模型
思维导图
学习观10四格版:什么是信息(定性) - 知乎 (zhihu.com)
[[05 思维导图原理:人生与高手之差]]
明确任务输入输出
将信息压缩成知识
例子重塑大脑连接
拆分知识分而治之
熵与信息的定义
当一件事情有多种可能情况时,这件事情对某人而言具体是哪种情况的不确定性叫做熵。
能够消除该人对这件事情不确定的事情叫做信息。
信息描述是一个观察者确定一个宏观态是哪个微观态时需要的物理量
熵与信息数量相等,意义相关。消除熵 = 获取信息
噪音是信息获取的干扰
数据是信息 + 噪音
信息的种类,本质是正确的调整每个可能情况(微观态)的概率
调整概率
排除干扰
能够直接确定某件事情的实际情况
例子:当小明不会某道数学选择题时(正确答案是C),正确答案[[宏观态]]是 ABCD 哪个(每个可能选项叫[[微观态]])的不确定性就是熵。
概率 VS 熵
概率是某件事情(宏观态)某个可能情况(微观态)的确定性
熵是某人对某件事情(宏观态)到底是哪个情况(微观态)的不确定性
熵的输入是变量(宏观态)
熵与信息的性质
媒介无关,同一个观察者,对同一件事情接受到的信息与用于传递信息的信号形式无关。
相对观察者
例子中如果观察者已知问题的答案,就不存在不确定性。观察者对这道题的熵都为 0bit
如果观察者不知道答案,不确定最大,熵为 2 bits
客观物理量,虽然信息是相对于观察者而言的,但信息是客观的物理量,不随观察者的主观意识改变。
相对于事件
导图
[[热力学第二定律]] 熵增定律,事物会从有序状态向无序状态发展。
无序,指宏观态对应的微观态数量很多。
系统自发向包含微观态最多的宏观态改变,这种改变无法自行逆转,被称为[[时间之矢]]。
例子:5种宏观态,每种宏观态包含不同的微观态。对应到图中的例子,宏观态对应小球在左右区域中的数量,微观态对应具体 4 个小球的分布。
计算下面 5 中宏观态对应的信息熵,左2右2的信息熵最大。
微观态概率相同,宏观态由于包含的微观态数量不同,导致概率不同。
热平衡,宏观态达到熵最大状态
热力学熵,描述系统自发做功的能力(能量的品质)[[兰道尔原则]]
热寂 heat death,宇宙发生热平衡
[[麦克斯韦妖]] 尝试否定热力学第二定律
一个等温系统中存在奇怪的妖怪,可以区分高速分子和低速分子,控制低速分子从左侧到右侧,高速分子从右侧到左侧。左侧分子运动快温度高,右侧分子运动越慢温度低,自发让系统的熵降低,左右两边产生能量差。
不可能实现的原因,妖本质上利用信息(感知到分子运动)来降低信息熵从而降低热力学熵,需要不断从外界能量中获取信息
信息熵和热力学熵转换 [[兰道尔原则]]
生命是什么?
薛定谔 1943,生命以负熵为食
主动利用信息来减熵,从而维持自身状态。
用信息来抗衡熵增从而维持自身状态的系统可被视为生命
病毒未入侵宿主细胞之前,以非生命的形式来维持自身状态,入侵之后,它又以生命的形式维持状态。
人工智能生命问题的关键,计算机的信息是由人类提供,无法解决计算机如何自主获取信息。
参考资料
热力学熵
Entropy is not disorder by Khutoryansky
Why Information is Entropy by Khutoryansky
What is entropy? by Jeff Phillips
热力学第二定律是什么 by 李永乐
什么是热力学第二定律 by 柴知道
信息熵
Information entropy by Khan Academy
Information Theory A Tutorial Introduction by Stone James [1]
Information theory: Entropy by Zinnia Jones
How Much Information? by Veritasium
[[生命是什么]]
《生命的奇迹》BBC 纪录片 Brian Edward Cox
《生命的跃升》Nick Lane 生命的跃升 (豆瓣)
《自私的基因》Richard Dawkins
《生命是什么》Schrödinger
[[思维导图]]
质量单位,定义参照物体的质量,比较待测物体相对于参照物体的倍数。
信息量单位
抛硬币正反不确定性
50% 正 50% 反
测得信息量的单位被称为比特 bit
待测事件相当于多少参照事情,使用对数计算
计算
均匀分布
一般分布
14 地球所有生命源于同一始祖?它靠什么演化成各种高级生物的?
LUCA,Last Universal Common Ancestor
为什么会转化成复杂 DNA + 蛋白质的形式演化?
生命靠减熵来维持状态,代价却是不断增加环境的总熵。
生命演化的方向是不断增大智能,增强个体能力,将若干个个体组织成一个新个体。
大量蛋白质有组织并行工作就有了质变(相变,phase transition)
[[涌现能力]] emergence,由量变引起质变的现象
跃进式增强智能
只有稳定的智能体之间有规则的相互作用才能形成更高层级的智能体
反馈循环
蓝绿菌,演化出光合作用 photosynthesis
正反馈
大氧化事件 Great Oxygenation Event,由于蓝绿菌的数量爆炸式增长,地球大气氧含量迅速增加。额外的氧气不断消耗给地球保温的甲烷,进入休伦冰期。地球上的生命近乎全部灭绝。
一个物种的个体可以永生,一旦演化出某个优势模型时,无限加速繁殖的个体会让环境也加速熵增,该物种反而会因为演化的减熵速度无法跟进环境的熵增速度而灭绝。
负反馈
寒武纪生命大爆发 Cambrian Explosion
生命短时期内迅速演化
达尔文主张的演化是渐进式的
寒武纪爆发的关键,从减熵的角度来看,维持生命的关键并非演化本身,而是演化所提供的信息。
整体稳定困境
随机突变的单细胞无法达到涌现成复杂多细胞生物所需的稳定性。
有性生殖,将多细胞生物作为整体来增加差异性的机制。在稳定整体的基础上增加差异性。
移动信息困境
不能大范围移动的多细胞生物只能和相近的个体交配,会无法提供足够的差异性导致演化速率过低而灭绝。
多细胞生物大范围移动后,环境也会随着移动而改变,又会因之前演化出模型无法预测新环境的信息而死亡。
神经细胞,埃迪卡拉纪中演化出来
众多神经细胞形成的神经网 nerve net 配合演化机制 neuro-evolution 加快学习环境模型的速率。
增加实时感官能力的神经网络允许个体在新环境中,学习用上一时刻信息来预测下一时刻信息的模型。
神经网络,第二种学习系统
LUCA原型、RNA世界、大氧化事件、雪球地球、寒武爆发、有性生殖、神经网、生物大灭绝、复杂系统、生物反馈循环
[[思维导图]]
拥有所有信息便可永恒。
从一种事件的信息获得所需事件的信息
例子(样本),从输入信息到输出信息的对应变化
知识(函数、模型、映射、变换),压缩两个事件之间所有信息对应变化。
知识不是信息
知识需可重复利用
智能:学习知识和使用知识的能力
产生智能体的 5 个能力
学习
DNA 是如何学习到的
演化(genetic algorithm),智能体让自己的突变克隆体去问环境,突变所产生的模型是否能预测信息,以克隆体的死亡为代价获得能稳定减熵的模型的一种学习方法。
生命史第一个学习方法。智能体不以个体学习知识,而以群体学习知识。
数据准备
模型候选
模型筛选
只有合适的模型才能够预测到信息
自然选择判断模型所预测的信息是否能够维持自身状态,淘汰无法预测到信息的模型。
反复进行候选和筛选后,种群基因库会整体形成一个能稳定减熵的模型
存储
[[DNA]]
dna 编码冗余使得遗传代码具备极强的抗噪能力,把点突变 point mutation 带来的灾难降到最低
存储内容不是单纯的信息而是代码,会被编译成能实现模型功能的工具。
预测
碱基 A、C、G、T,每 3 个碱基对应一个氨基酸。氨基酸形成不同功能的蛋白质。
蛋白质实现不同的功能
获能
太阳能是能量来源
海底热泉,海底沉积物的化能合成
熵差
人类为什么会死亡?
自然死亡被有意写到了基因代码中
信息的获取受到某种限制
[[思维导图]]
直接背诵文稿不符合大脑记忆的特点,通过引入其他稳定输入,减少背演讲内容的负担。
通过文稿练习演讲
通过稳定的输入练习演讲
[[异或问题]]
[[查找记忆]],将信息作为状态,存储到不同的地址中的记忆方式
[[网络记忆]],本质是寻找所有情况的共同规律。
英语学习
学习中的遗忘
学习后的遗忘
针对这个问题的假说
消退说,遗忘是信息在脑中不可避免的消退结果
干扰说,混淆是不同信息干扰记忆所造成的
为什么会主动遗忘?
生命稳态维持
生命是一种特殊的状态维持方式,能被留下来的原因只有一个:通过预测信息,在不断变化的环境中维持了自身的状态。
单细胞生物可以单靠应激反应达到在环境中维持生命稳态
移动演化危机
多细胞生物演化面临的问题
有性生殖允许个体在保证稳定性的基础上增加差异性,条件是需要充分移动来洗牌。
演化的学习速度跟不上移动所造成环境变化速度。
高等生命的挑战
生物所看到的事物会随着自身的模型而改变,所以人类看到的也并不是世界的真实样貌。
模型泛化能力
自然选择无法干预生命周期内的学习
记忆的作用,允许生物从历史经验中学习
网络记忆学习
针对异或问题,两种不同策略,查找记忆或网络记忆
[[通用近似定理]] Universalapproximation theorem
网络记忆的特点
记忆耗时
会有干扰
会有混淆
记忆可稳定
网络记忆寻找共同规律,能对未知进行预测
遗忘:基于概率的模型筛选机制
规律出现频率低,该规律是普遍规律的概率就很低,学到这个规律的个体很难存活。
当网络的某个连接被高频率使用时,就强化该连接的形成。(需要不断重复记忆)
当网络的某个连接被低频率使用,就弱化该连接的形成。(记住的信息会被遗忘)
又有该机制的个体在残酷的自然选择中存活下来,后续繁衍成为我们的祖先。
15.7 昨夜想到个绝妙点子,想明天试下,结果。。猜到了吗?
演讲的流程
step1. 看自己的稿子的一句话或一段话,记住意思。
step2. 看ppt的图片(台下的坐席,灯光等),直接讲出刚才记住的意思。
重复上述过程直到记住所有演讲内容
演讲的流程遵循,循环神经网络。
昨天想到的点子,第二天忘记的解释
产生这种现象的原因
相同模型,不同输入
验证例子
相同输入,不同模型
16 性与杀戮改变了所有生物的轨迹?六亿年前到底发生了什么?
生命的目的是不惜一切代价地永远生存,想要生存需要预测信息,预测信息就需要学习模型。
遗忘是允许生命可以不再以个体的死亡为代价来学习的关键,起到筛选模型的作用。
无聊的十亿年,真核细胞演化停滞,细胞间的涌现出现条件苛刻
阿瓦隆爆发
埃迪卡拉纪
狄更逊水母(Dickinsonia)被动接收养分
神经元,通过调整频率发送不同的信息
物理连接
轴突 axon,
树突 dendrites,连接其他神经细胞的胞体或树突
胶质细胞,支撑和隔离神经细胞并提供养分
不同神经细胞通过电脉冲的频率交流
脉冲发送
极化 polarization,神经细胞处于初始状态的过程
去极化 depolarization,膜电位升到 -55mV
再极化 Repolarization,重新调整膜电位到 -70 mV
电压门控钾离子通道(Voltage-gated potassium Ion channels)的蛋白质
+40mV 左右,允许钾离子通过,膜电位调整到 -70 mV
频率调整
突触囊泡,动作电位传导到轴突末梢时,该囊泡会穿过细胞膜,释放神经递质。
接收信息的神经细胞的细胞膜上有很多不同的受体,在与特定的神经递质结合时会开门,允许离子通过。
激发,增高膜电位
抑制,降低膜电位
神经网,通过神经细胞实现任何功能
感知系统
运动系统
感知运动
有性生殖
捕食者,增加筛选压力
涌现依赖交流
河豚毒素干扰神经系统
寒武纪大爆发
神经网学习
突触可塑性 Synaptic plasticity,生命周期内学习
突触上的受体不再固定不变,可以根据经验自动调节
长期增强作用,增多受体数量,加快接收神经递质的速度
长期抑制作用,减少受体数量,。。。。
个体学习,总结经验,找出规律
例子准备,增强个体记忆
泛化能力
学习
重复,强化连接
遗忘,弱化连接
正确[[学习]]
表征 Representation
人工神经网络
相互对应
「细胞群频率」对应着「向量的数值」
「激活的条件」对应着「非线性函数」
「可变频突触」对应着「网络的权重」
人工遗忘,dropout 等遗忘机制
不同点
思维导图
[[病毒]] 生命与非生命
控制人类,DNA 和模型
谣言,个体病毒
文明,最强的生命体
责备
人类真正的敌人是无序
剧本的魅力
著名编剧艾伦·索金说过:剧本必须由欲望
和阻碍
构成,某人想要达成某个目标
,过程中遇到了阻碍
,最终与阻碍做个了断。若没有这些要素,就不构成一个剧本,而是新闻。
对人类而言,后续演化出的一个非常关键的能力就是:从他人经验中学习的能力
,而剧本必须具备的要素恰好也是一个有效的他人经验所具备的要素。因此从演化的视角来看,人们喜欢看电影的一个原因是:电影能允许人们从他人的经验中学习,构建有利于生存的认知模型。
看电影有构建知识的感觉 [[欲望]]
朋克,非主流、叛逆,描述个体在这种难以适应的未来世界中所产生的心态
朋克文学,就是虚构一个在某项技术达到顶峰时的未来世界,并展现个体在这种环境中的生存。
朋克文学特点
个体冲突世界
未来可能发生
认知停留过去
认知时空冲突
[[赛博]]朋克
控制论(人类自己由什么构成,大脑是如何工作)技术达到巅峰,意味着,创造生命、人机结合、替换身体、入侵大脑、复制意识都可以实现。
开始思考倘若自己真的处在这种非常先进却又极度危险的世界中,究竟该如何生存。
生存危机和存在悖论
[[宿命决定]]
[[缸中之脑]]
[[忒修斯之船]]
[[思维导图]]
知识争论
知识无用论
应试知识无用,感觉时间白费。
但是为升学,时间并没有浪费。
在学校构建的模型无法解决实际问题
知识有用论
使用知识有用,后悔没好好学。
即使好好学,也较难学到实用。
聪明的汉斯,最大化目标但是学偏了模型
机器的汉斯效应,看似能完成一些任务,其实实在依赖所找到的某些微妙特征
人类教育的启示
升学生最大化分数得到应试模型,但这不是教育目标的模型
教育系统与就业系统不匹配
最大化分数模型不一定是教育目标模型
企业通过分数和学校出身来筛选,有希望筛选的人才可以解决工作中的实际问题。筛选方式和筛选目标并不匹配
偏差消除
素质教育改革结果,升学的背景下所有模型最终会变成最大升学的模型
如何教育改革
推行素质教育后,奖励机制依然不能使得分目标等价于能力目标,系统也会根据素质教育的奖励机制演化成另一套偏离教育目标的应试体系。
美国招生
妥协的结果,降低学生得分成本的应试教育,解决人才选拔公平问题
实际解决方案
升学机会,义务教育阶段
实用目的,高等教育阶段
[[思维导图]]
感知
感觉细胞将物理信号转化成对应频率的电脉冲,神经细胞处理接收到电脉冲。
缺陷
部分场景下,无法感知所需要的模态输入
模型依赖,感知细胞受损会失去响应的感知
感知欺骗
模态
承载信息的信号形式
每种感知对应一种模态
每种模态都有它的局限
多模态融合
克服单模态感觉缺陷
不同模态对同一时间的预测可能彼此冲突
听力多模态
大脑融合机制
只要你没有感知敌人的模型,敌人就不存在于你的现实。
[[思维导图]]
1D 卷积其实是特殊的 2D 卷积,卷积核宽度直接和 embedding 维度强制对应。只能在时间顺序上纵向滑动,不能横向滑动。
控制前后卷积的通道数,用于 skip connect 需要 add 操作的场景
应用非线性
神经网络每一层后,都可以应用激活层。
非线性扩展模型的可能性,通常使深度网络比宽网络更好
为了增加非线性层数量而不显著增加参数和计算量,可以用 1D 卷积然后再接激活层。
[[KG笔记法]] 挺复杂,暂时不参考
Mac 如何远程访问 Windows?
花钱解决,一步到位
Microsoft Remote Desktop
美区可以下载
家中访问公司
公司访问家
周报|22W02 - 追求简洁而非复杂 - Ztleespace
Minerva 以周报形式回顾每周项目、学习和阅读情况。
[[Architectural Decision Records]]
[[PID]]
[[睡前消息]] 490
三元素模型
通过「真善美」三个元素的权重,给文化产品分类
宗教:善>美>真
戏曲:美>善>真
媒体:真>善和美
如何一键打开 macOS 中的任何文件(以 Keyboard Maestro 为例) - #Untag (utgd.net)
用 Keyboard Maestro 为 PDF Expert 打造个性化批注工具箱 - #Untag (utgd.net)
PKM 又一年,我的困惑与心得 - 少数派 (sspai.com)
教育目标理论,人类对于知识的认知层次
记忆:对具体事实、概念、术语的回忆;
理解:能够对知识进行转换、解释和推断;
应用:在实际情景中运用知识;
分析:将所学材料分解,明白各部分间的联系;
评价:基于对知识的理解,对知识的价值进行有效判断;
创造:将组成知识的各部分要素重新加工,产生新的模式或结构;
daily note 模板
我今天做了什么
我今天发现了什么
我今天在想什么
广告算法工程师的核心竞争力是什么? - 知乎 (zhihu.com)
业务理解
不如读书的方法论
问题是什么?
用什么指标来度量?
问题的复杂度是什么量级?
模型不好 本质上是模型复杂度没有匹配问题复杂度 哪里是模型复杂度的瓶颈?
找不到便利的数据和特征 就可以想想是否能把问题分解成子问题 也许在子问题空间下 你能想到更好的特征 数据和模型 同时分解了问题 就能够引入更多的人员来并行工作
知道怎么做干净的实验 系统性的探索所有的可能性 排除无关因素
[[CITIZEN]]
Bilibili 干净链接 (greasyfork.org) 去除b站地址栏的小尾巴 [[Tampermonkey/Plugin]]
[[科学研究与论文写作]]
【科研素材库】Logseq能做什么?文献/切片/Query超详细实操带你入门!_哔哩哔哩_bilibili [[图片/文字切块-归纳-重组阅读法]]
截取论文中的文字或图片,对应 block 通过加标签进行分类
通过 [[logseq/query]] 汇总
1 | {{< logseq/orgQUERY >}}; 新建一个query查询 |
TODO i0Ek3/work-and-life-in-system: 程序员在体制内的工作和生活是怎样的? (github.com)
从0到1构建你的知识图谱 | 工作流 Logseq Pro S1E1
标签
灵感 记录自己的想法
Q 读文献的疑问
文字居中 [[logseq/tips]]
<
选择 Center
,自动生成 #+BEGIN_CENTER 需要居中的文字 #+END_CENTER
使用 [[logseq-plugin-agenda]] 任务管理
{{renderer agenda, task-list}}
[[logseq-publish]] 增加备案号
修改 index.html
以注入自定义功能
获取对象 main-content-container
,然后增加一个新的 div
对象,其中包含需要的一个备案号链接
1 | <script> |
+ 使用 [\[\[sed\]\]](/post/logseq/sed.html) 修改生成的 `index.html` 在 `/<body>` 标签前插入上一步脚本
+ `sed -i "s@</body>@$( cat logseq/inject.html | tr '\n' ' ' | sed 's@&@\\&@g' )</body>@" www/index.html`
+ 使用 `@` 做为 sed 的替换操作分隔符
+ 替换字符串中包含 `/` 报错 `sed: -e expression #1, char 20: unknown option to `s`
+ [配置 Logseq 自动发布相关流程 (abosen.top)](https://logseq.abosen.top/#/page/%E9%85%8D%E7%BD%AE%20logseq%20%E8%87%AA%E5%8A%A8%E5%8F%91%E5%B8%83%E7%9B%B8%E5%85%B3%E6%B5%81%E7%A8%8B) 增加评论系统
+ [How can I create and style a div using JavaScript? - Stack Overflow](https://stackoverflow.com/questions/6840326/how-can-i-create-and-style-a-div-using-javascript)
[[Logseq plugin]] pomodoro 插件
denvey/logseq-pomodoro-technique (github.com) block 中展示,同时支持多个计时
sawhney17/logseq-pomodoro-plugin: A quick pomodoro timer for logseq (github.com) 比较简单
[[logseq-plugin-agenda]] 关联 task,可以在插件栏显示,结束会有提示
[🍅 25min](#agenda-pomo://?t=f-1665595171292-1500)
[[Logseq plugin]] block to page
DONE [[机器学习知识体系汇总]]
Transformer 一篇就够了(四): 细思极恐的 Transformer - 知乎 (zhihu.com)
[[WordPiece]]
[[MacOS]] 随航,显示器设置中选择 ipad
双链使用经验分享:PPIP< 时间 - 事件 > 笔记模型 - 链滴 (ld246.com) [[dammy]]
这本书基于一个很简行为控制模型,即一个行为的发生包含着“前提-行为-后果”这样一个事件链条,改变这个链条上的任何一点,就有可能改变这个行为。甚至对这个链条的观察本身,也可以改变行为。
系统的自我观察技巧——记录日志
TODO 和 [[福格行为模型]] 的区别?
严格区分文档和 block 没意义
利用块引用拆解材料
对材料中内容注释,可以替代之前在内容下面创建 block
可以将内容引用到 daily note 中
dammy 的例子
思源里有原材料
利用 alt+ 拖拽块引用原材料到 daily notes 里
右键锚文本弹出选项——转换为“文本 * ”
开始对原材料进行解读改写
时间-事件 笔记模型
daily note 中使用块引用(双链、标签)等方法记录事件进度
事件页面通过反链面板观察事件在不同天的进展
通过query或者 moc 汇总一个事件关键进展
Roam 创新点 #idea
[[Tampermonkey]] 减少更新打扰
配置模式改成高级
脚本更新
简单脚本更新不必询问我
检查间隔
脚本对应设置中,取消检查更新
[[Obsidian]]
slash commands 斜杠命令
Command Palette 命令面板
1 | class Solution { |
[[@天涯kk的房产预言到尾声了吗?2022年以后还会重复2015的普遍暴涨吗? - 知乎]]
待分类
[[中国的学术]]
[[一线、二线的生活]]
[[智慧和才干]]
调控
[[调控的好处是让政府利益最大化&防范金融风险]]
[[调控的真正目的:防范金融风险 & 通过垄断实现国家利益最大化]]
[[调控带来的影响]]
[[10年的调控和08年调控的区别、带来的影响、机会]]
[[中国的房地产不可能软着陆]]
政府
[[为人民服务是说给人民听的]]
[[政府搬迁]]
[[官方公布的统计数据,只要关系到某个群体的利益,就一定会被修饰导致失真]]
经济
[[守着金碗要饭吃]] [[游乐园比喻]]
[[为什么美国人工高于中国,但大多数商品的物价却低于中国]]
[[人民币对外升值,对内贬值]]
[[中国可以无限印钞吗]]
[[富人越富、穷人越穷]]
[[税收从来都是向下游转嫁的 & 房产税迟迟不出台的真正原因]]
[[存钱不如存资产,钱会贬值,资产会升值]]
[[不同阶层的人对收入高低有不同的理解]]
[[经济崩溃,最后接盘的是老百姓]]
政策
[[粮食和房子的不同是,房子无法和土地剥离]]
[[什么是好的政策]]
[[外汇管制]]
[[货币为什么要贬值]]
[[房地产是资本市场还是实体经济?]]
[[关于拆迁]]
税
体制内外
[[双轨制之体制内的福利]]
[[底层指的是体制外底薪白领]]
[[收入分配改革跟体制外的人没关系]]
[[体制外的人要早早考虑养老问题]]
[[中国民主]]
[[垄断企业]]
租房
[[租房的苦]]
[[房租价格涨不上去,本质是买房还看起来有希望]]
买房
要不要买房
[[什么是真买不起房]] 傻空
[[什么是傻空]]
[[40年的商住房没有70年的住宅有投资价值]]
[[房地产的现状]]
[[房奴算不上不幸,相当当不了才算]]
[[还能上车的赶紧上车]]
[[人需要一个安身之所,能买早买比晚买好]]
[[金融杠杆是炒房赚钱的放大器]]
房价
[[决定房价的因素有很多,具体情况具体分析]]
[[土地不稀缺,优质土地稀缺]]
[[二三线城市的发展靠拆迁]]
[[为什么现在租售比这么低]]
买什么
[[投资最重要的是稀缺性,买房首选公务员小区]]
[[投资新房还是老公房]]
[[关于购买经济适用房]]
[[同小区买一套大还是两套小]]
[[大城市对近距离的小城市有虹吸效应]]
[[公园地产是稀缺资源]]
[[房屋朝向只要不是纯北西就行 & 买房首选市中心、公园地产]]
[[分期付款买房,如果房价上涨,很容易毁约 & 自住要选大品牌开发商]]
[[购买房价基数低的省会城市,怎么都不会亏的]]
[[房地产游戏的模式三个环节]]
[[政府限制政策房的利润,那kfs就一定会偷工减料]]
分区域
[[北京回龙观:有上涨空间]]
[[北京老式砖混板楼的最终命运?]]
[[北京三环塔楼]]
[[西五环内的别墅,是相当稀缺的资源]]
[[北京华清嘉园]]
[[北京大兴]]
[[3万入手北京四环,你也是幸运的]]
[[重庆:高层和别墅怎么选?]]
[[河南郑州与洛阳]]
[[济南 & 大规律拆迁的城市房价不会下降]]
[[桂林 vs 南宁]]
[[南宁买房建议]]
[[常德:小城市房价会因为人民币贬值涨价,但依然难变现]]
[[武汉:城市发展空间的大小,往往和房价的升值空间成正比]]
[[昆山房价分析与买房]]
[[杭州:富人的天堂]]
[[福州:年轻人要早买房]]
[[贵阳,资源的稀缺导致权贵更容易垄断,通过低收入高物价的方式剥削底层群体]]
股市
历史
历史上的买房
[[历史上买房最好的朝代]]
[[宋代房奴]]
人物
[[“奸臣”贾似道]]
[[奸臣蔡京]]
[[毛泽东往事]]
[[李商隐「渣男」祖师爷]]
[[上层阶级的盛世]]
[[kkndme 推荐的历史书]]
[[农民政权的缺点]]
[[经济问题是导致清朝灭亡]]
[[货币供应不足是明朝的真正原因]]
[[具体情况具体分析,如果看不懂,一定是没有抓住问题本质]]
[[历史的结局]]
— 没有整理
id:: 67013d96-689d-4b56-86c3-66c648086519
[[关于垄断]]
[[民生问题]]
[[房产税的制定原则]]
[[维稳的本质是人民能吃饱饭]]
[[公租房是为体制内服务的]]
[[房产税一定会转嫁给租房人]]
[[巨大的税收消耗也决定了GDP必须快速增长 & 公务员越精减越多]]
[[体制内的住房问题有国家保驾护航]]
[[依靠但又不能完全依靠开发商建公租房]]
[[解决体制外的住房问题:国家垄断,细水长流收租]]
[[普通人买得起「优质商品房」就尽早买把]]
[[商品房和公租房的区别]]
[[提议通过征普税调节贫富差距,不是傻,就是坏]]
[[调控带来的影响]]
[[农产品的价格关系到影响稳定的吃饭问题]]
[[农产品价格的抬头会导致物价全面上涨,但国家不会坐视不管且有能力管]]
[[资金会在优质资产之间流动,而决定优质资产价格的是精英阶层的购买力]]
[[资金流向规律决定了农产品和资产价格总有一个要涨,人为压制,一定会按下葫芦浮起瓢]]
[[资金流向规律决定了洼地不会一直是洼地]]
[[决定房价的因素有很多,具体情况具体分析]]
[[房价暴涨是相对于钱而言的,不是相对于实际购买力而言的]]
[[土地不稀缺,优质土地稀缺]]
[[集中发展大城市是导致优质土地稀缺的原因]]
[[为人民服务是说给人民听的]]
[[历史是一面镜子,不同的国情决定了采取同样的政策结果可能是南辕北辙]]
[[屁股决定脑袋,人民不知厉害关系选房子,政府选农产品]]
[[各个阶层的住房问题都安排的妥妥的]]
[[顶层的岁月静好来自于底层的负重前行]]
[[底层指的是体制外底薪白领]]
[[资金终会流向具有稀缺性的资产]]
[[土地的稀缺决定了大多数人永远买不起想买的房子]]
[[一二线买房只会越来越难,最终租房会成为主流]]
[[如果房价不涨,那其他产品会怎么涨]]
[[政府如何利用公租房控制租房市场]]
[[城中村不会长期存在]]
[[三四线城市的未来]]
[[稀缺房的价格永远涨]]
[[房地产是资本市场还是实体经济?]]
[[公租房的量级不会冲击到商品房市场]]
[[权利让革族成为苗族的一支]]
[[房价是否会跌,如果会,会怎么跌]]
[[通货膨胀是减缓灭亡最好的良药]]
[[经济问题是导致清朝灭亡]]
[[房产投资的几点建议]]
[[南宁买房建议]]
[[经济适用房都是内部分配的]]
[[普通人怎么办:尽早买房,努力挣钱抵御通胀]]
[[买房时机的选择(真TM厉害,这竟然是2010年的建议,可恨的是2020年才看到)]]
[[永远不要和白痴争辩,因为他会把你的智商拉到和他同一水平,然后用丰富的经验打败你]]
[[当个农民也要懂政策,要顺政策而为]]
[[房子越早买越好,政府想钱想疯了]]
[[利益才是政府行为的指挥棒]]
[[建议一定是建立在严肃考察的基础上]]
[[石家庄]]
[[投资最重要的是稀缺性,买房首选公务员小区]]
[[远离垃圾人]]
[[高房价或许有天会崩盘,但你等不到那一天]]
[[房子不仅要早买,而且有能力的话不要怕压力,争取一步到位]]
[[要用发展的眼光看问题,只要努力,只会越来越好,越来越轻松]]
[[性格决定命运]]
[[2012年不取消调控,还有房价维稳顺利换届考虑]]
[[洼地最终都会被填平,多数城市是早买胜于晚买]]
[[西部]]
[[短期波动属于正常现象,需要关注的是长期趋势]]
[[对于具备投资属性的商品,供求关系是指货币与商品之间的关系]]
[[早买的风险小于晚买]]
[[小开发商的房子能不能买?]]
[[大兴土木搞建设的城市,房价都底不了]]
[[天子脚下:二手老房买得好,拆迁补偿少不了]]
[[君为贵,商人、技工次之,农民为轻,打工人为底]]
[[关于房贷]]
[[买卖商品房会逐渐变成富人的游戏]]
[[政府还是更在意农民问题]]
[[治国需要用贪官、反贪官]]
[[二线城市典型代表]]
[[关于商铺和住宅投资]]
[[关于房产调控]]
[[关于房产税]]
[[老公房的拆迁问题]]
[[投资新房还是老公房]]
[[高端盘有房价带动作用]]
[[买房和没买房的差距]]
[[房产交易历史]]
[[契税的历史]]
[[廉租房的历史]]
[[未来房地产市场的发展]]
[[房产到期]]
[[买学区房问题]]
[[历史的结局]]
[[人口普查]]
[[买房难之回不去的乡 & 拉美人过得比你想象的好]]
[[北京西三旗]]
[[买房争取一步到位]]
[[收入稳定的家庭如何买房]]
[[贷款还是全款]]
[[00后的买房需求从何而来]]
[[意大利的住房模式]]
[[北京远洋山水]]
[[精英的资产]]
[[北京三环塔楼]]
[[普通人买房的未来]]
[[北京房价超香港]]
[[中国的新闻不可信,精英的有钱是你想象不到的]]
[[限贷对精英没用]]
[[外国国籍在中国生活是更好的选择]]
[[通货膨胀和房价的关系]]
[[南京买房分析 & 买房要做好调查分析工作]]
[[读史读的不是故事,还是找历史规律,以古鉴今]]
[[贵阳]]
[[富人越富、穷人越穷]]
[[深圳 & 昆明仇书记 & 通货膨胀体制内高枕无忧、体制外自求多福]]
[[长春]]
[[佛山]]
[[首付提高的逻辑]]
[[四线城市]]
[[苏州工业园]]
[[住房公积金利率]]
[[公务员小区牛逼]]
[[俄罗斯]]
[[珠海 & 唯一自住房不只是投资 & 调控是最佳的选房时机]]
[[命运之矛]]
[[除非外族入侵或全国大饥荒,否则双轨制决定了房价不会崩盘]]
[[宋代房奴]]
[[王安石的青苗法之国家出政策的动机]]
[[什么是社会公平]]
[[还是有很多有钱人]]
[[开发商思维]]
[[郑州有前景]]
[[张献忠屠川]]
[[洪秀全、黄巢、李自成]]
[[朱元璋]]
[[曹参治国]]
[[晁错]]
[[民营小企业的老板和打工者]]
[[郭解]]
[[2010年的中国房地产]]
[[精英人群的平均收入决定房价]]
[[内地不是香港、海南]]
[[历史是一面镜子]]
[[买房一次性到位比较好]]
[[一线和二线]]
[[吕后篡权]]
[[小产权房]]
[[商铺和住宅]]
[[体制内外]]
[[2010年的上海]]
[[买房:物业与房贷]]
[[收紧住房贷款]]
[[买房:物业与房贷]]
[[体制内的28原则]]
[[贾谊]]
[[年轻人要早买房]]
[[不要低估通货膨胀]]
[[二三线城市与重庆]]
[[城区和郊区]]
[[守着金碗要饭吃]]
[[人制的社会,人就是制度]]
[[准公务员的好处]]
[[一线杭州]]
[[转篇文章:一个忽悠了几亿中国人的伪概念:所谓“中国房地产泡沫”]]
[[拆迁补偿]]
[[城市底层]]
[[农村自来水]]
[[袁盎]]
[[二三线城市,选新城还是老城]]
[[在中国,普通人手上闲钱不多的人被剥削]]
[[三分天注定七分靠打拼]]
[[人的前程有的时候不掌握在自己手里]]
[[西安与重庆]]
[[谢国中「空置率」]]
[[打工不如有一技之长的小老板]]
[[讲故事含沙射影ZG之房子不属于市场经济]]
[[西五环内的别墅,是相当稀缺的资源]]
[[调控降房价是刚需的一厢情愿]]
[[1、人人都有居住权。房子是用来住的,不是用来炒的]]
[[2、房子太贵了,租售比严重不合理,空置率太高,人均收入太低,早晚要崩盘]]
[[3、房价上涨造成物价上涨,人民生活变得困难]]
id:: 67013d96-afa6-434b-b858-ef19cc36f40b
[[房价持续上涨的本质是稀缺性让好房子成为资金最好的去处]]
[[民生问题]]
[[房产税的制定原则]]
[[维稳的本质是人民能吃饱饭]]
id:: 67013d96-34aa-4f5d-9276-21d06f6970da
id:: 67013d96-4668-4963-a675-e70419101f27
[[垄断可以控制价格,维持稳定]]
#card 体制内的住房问题有国家保驾护航 #card
在私企打过工的都知道,毫无归属感可言,老板脑袋一发热,随时让员工卷铺盖卷走人。那是要多没保障有多没保障。原因是社会关系,关键客户,都掌握在老板一个人手里,员工就是打个下手,一不爽了,就换人呗。
统治者可知道不能这么用人的。一个庞大的国家机器要想正常运转,必须得让手下的和自己的利益一致。如果自己吃肉,手下的连汤都没得喝,这个机器就转不动了。
因此,在房价高涨的时代,保障房才成为中央默认的公务员房、垄断企业房。
公租房首要解决的就是手下里面最底层人士的住房问题。
我认为针对于体制内来说,无论是公务员,事业单位,还是国有企业的初级员工,都可以通过所在单位申请公租房,公租房的租金会略低于市场,主要是单位一定会提供补贴。
体制外对公租房的申请就没有那么幸运了。
[[体制内的住房问题不难解决]]
id:: 676805f1-0ace-4f05-9dc9-34b391f48521
id:: 67013d96-f028-4d1d-84b9-a78e27224f1b
[[农产品价格的抬头会导致物价全面上涨,但国家不会坐视不管且有能力管]]
#card 资金会在优质资产之间流动,而决定优质资产价格的是精英阶层的购买力 #card
全国富人买北京上海,全省富人买省会,房价的合理性已经不能用简单的本地平均收入来衡量。精英阶层的购买力才是关键。
#card 资金流向规律决定了农产品和资产价格总有一个要涨,人为压制,一定会按下葫芦浮起瓢 #card
在资金总量不变的前提下,巨量资金推动农产品价格上涨或者推动房价上涨是一个必须的选择。
今年政府用行政手段严厉打击蒜和绿豆价格的暴炒,基本上没有起到作用,资金有自己的运作规律,光靠拿张悟本出气也不能解决问题。
#card 资金流向规律决定了洼地不会一直是洼地 #card
无论你喜欢还是不喜欢,都不是以人的意志为转移的
#card 房价暴涨是相对于钱而言的,不是相对于实际购买力而言的 #card
。。。。。。暴涨之后。。。。。。
我们不就是第二个日本吗?
供求关系?供求关系,现在是谁在决定?国家!
国家的经济结构决定的。制造业的资金都进入房地产了。能不涨吗?普通人有几个可以够炒房资格的?
日本 当初也是供求关系!~~ 供求关系的根本也不应脱离,国家的经济实力!!
还暴涨?怎么涨?再涨都够去美国买房了!! 你这不扯淡么
kkndme:
中国和日本最大的不同在于日本的货币是开放的,中国的不是,是不能自由兑换的。
暴涨是相对于钱而言的,不是相对于实际购买力而言的。
80年代工资200多块钱一个月的时候,是不能想象90年代末北京城区5000每平米的房价的。那时候万元户已经是富人的代表了。
90年代末工资1000块钱的时候是不能想象现在30000一平米的房价的。90年代的100万绝对是富裕群体。可现在连个中产都算不上。
货币的持续贬值你没有考虑
#card 集中发展大城市是导致优质土地稀缺的原因 #card
土地有的是,房子有的是,但好位置的土地和房子并不多。
一方面大量的小县城和乡镇、村庄人口锐减,因为缺乏谋生手段不得不背景离乡外出打工,另一方面超大型城市越来越拥挤,土地资源越来越稀缺。
这就是中国集中发展极少数标杆城市所造成的呀,也是因为如此,才造成了中国金子塔式的收入结构,贫富差距越来越悬殊。
#card 历史是一面镜子,不同的国情决定了采取同样的政策结果可能是南辕北辙 #card
我们的今天本来就是历史的延续,前人经验和智慧的总结,不是一句话就可以抹杀的。
因为秦以后漫长帝国时代的大一统,才会把中央集权延续到现在。
而西方封建时代延续到地理大发现,诸侯割据王国、公国、侯国林立为现代的西方提供了民主制度的可能。
在制度上完全的不可比性,使向国际接轨成为了笑话。
我们看到的结果就是,物价上涨与西方接轨,甚至堂而皇之的超过西方,体制外的工资则与非洲结果,也算是国际化了。
#card ## 屁股决定脑袋,人民不知厉害关系选房子,政府选农产品
如果我国农产品价格是开放的,资金流向大米、小麦、猪肉,并且允许囤积,房地产一定会下跌的,这是毫无疑问的。
但是,我们看到的绝不是10块钱一斤的大米、小麦,而是500块钱、1000块钱一斤的大米、小麦。
我国将会出现大面积的饥荒,几千万甚至上亿的底层人士饿死街头,社会将出现大的动荡。
而产权房屋价格的上涨牺牲的主体只是体制外部分都市白领的利益,换来的不过是网络上没完没了的牢骚和咒骂。
巨量资金必须有地方去,如今面临的房地产和农产品之间的选择,你认为政府会怎么做?
#card 各个阶层的住房问题都安排的妥妥的
#card 顶层的岁月静好来自于底层的负重前行
#card 资金终会流向具有稀缺性的资产
#card 土地的稀缺决定了大多数人永远买不起想买的房子
#card 一二线买房只会越来越难,最终租房会成为主流
在北京一个年薪15万的普通家庭仍然买的起房,在五环外,只是你愿不愿意买。
但以后一个年薪15-20万的普通家庭买房子,即使是五环外的,也只能是梦想了。
租房将成为今后小白领主流的生活方式。
#card 如果房价不涨,那其他产品会怎么涨
[[城中村不会长期存在]]
#card 三四线城市的未来
id:: 67deb4c0-7f92-4785-b76e-69d2d9e6e2ec
#card 公租房的量级不会冲击到商品房市场
id:: 67cc015d-55c6-4da9-9f6d-2a39214c3030
#card 权利让革族成为苗族的一支
#card 房价是否会跌,如果会,会怎么跌
#card 通货膨胀是减缓灭亡最好的良药
#card 房产投资的几点建议
id:: 67cc0165-7147-48be-8365-feaeeb7d32be
#card 经济适用房都是内部分配的
[[普通人怎么办:尽早买房,努力挣钱抵御通胀]]
#card 永远不要和白痴争辩,因为他会把你的智商拉到和他同一水平,然后用丰富的经验打败你
#card 当个农民也要懂政策,要顺政策而为
id:: 67cc0165-6fcd-4f55-8f1b-1bf4fa8798c8
#card 房子越早买越好,政府想钱想疯了
#card 利益才是政府行为的指挥棒
#card 建议一定是建立在严肃考察的基础上
#card 石家庄
#card 远离垃圾人
#card 高房价或许有天会崩盘,但你等不到那一天
#card 房子不仅要早买,而且有能力的话不要怕压力,争取一步到位
#card 要用发展的眼光看问题,只要努力,只会越来越好,越来越轻松
#card 性格决定命运
#card 2012年不取消调控,还有房价维稳顺利换届考虑
#card 洼地最终都会被填平,多数城市是早买胜于晚买
#card 西部
#card 短期波动属于正常现象,需要关注的是长期趋势
#card 对于具备投资属性的商品,供求关系是指货币与商品之间的关系
#card 早买的风险小于晚买
#card 小开发商的房子能不能买?
#card 大兴土木搞建设的城市,房价都底不了
#card 天子脚下:二手老房买得好,拆迁补偿少不了
id:: 67cc0165-c91f-4724-90f0-a36a39512e7f
#card 君为贵,商人、技工次之,农民为轻,打工人为底
#card 关于房贷
#card 买卖商品房会逐渐变成富人的游戏
#card 政府还是更在意农民问题
#card 治国需要用贪官、反贪官
#card 二线城市典型代表
#card 关于商铺和住宅投资
#card 关于房产调控
#card 关于房产税
#card 老公房的拆迁问题
#card 高端盘有房价带动作用
#card 买房和没买房的差距
#card 房产交易历史
#card 契税的历史
#card 廉租房的历史
#card 未来房地产市场的发展
#card 房产到期
#card 买学区房问题
id:: 67cc0165-9767-4ec9-a15a-93c29aa3e343
#card 人口普查
id:: 67cc0165-f2f3-49a8-a13c-944465ecc6a3
#card 买房难之回不去的乡 & 拉美人过得比你想象的好
[[北京西三旗]]
#card 买房争取一步到位
#card 收入稳定的家庭如何买房
#card 贷款还是全款
#card 00后的买房需求从何而来
#card 意大利的住房模式
#card 北京远洋山水
#card 精英的资产
#card 普通人买房的未来
#card 北京房价超香港
#card 中国的新闻不可信,精英的有钱是你想象不到的
#card 限贷对精英没用
#card 外国国籍在中国生活是更好的选择
id:: 67cc016a-6079-4748-9166-b5f345f84592
#card 通货膨胀和房价的关系
#card 南京买房分析 & 买房要做好调查分析工作
id:: 67cc016a-3355-44ee-ac8b-5a011fbd3c33
id:: 67cc016a-dccc-49e8-a2cb-f38e95a09696
#card 读史读的不是故事,还是找历史规律,以古鉴今
#card 贵阳
#card 深圳 & 昆明仇书记 & 通货膨胀体制内高枕无忧、体制外自求多福
#card 长春
#card 佛山
#card 首付提高的逻辑
#card 四线城市
#card 苏州工业园
#card 住房公积金利率
#card 公务员小区牛逼
id:: 67cc016a-b5e2-451f-8108-afc76a3c1009
#card 俄罗斯
#card 珠海 & 唯一自住房不只是投资 & 调控是最佳的选房时机
#card 命运之矛
#card 除非外族入侵或全国大饥荒,否则双轨制决定了房价不会崩盘
#card [[kkndme聊北宋、唐朝]]
id:: 67cc016a-053a-48ee-96a0-c63b4fd7a1bc
#card 王安石的青苗法之国家出政策的动机
#card 什么是社会公平
#card 还是有很多有钱人
#card 开发商思维
#card 郑州有前景
#card 张献忠屠川
#card 洪秀全、黄巢、李自成
#card 朱元璋
#card 曹参治国
#card 晁错
#card 民营小企业的老板和打工者
#card 郭解
#card 2010年的中国房地产
#card 精英人群的平均收入决定房价
#card 内地不是香港、海南
#card 历史是一面镜子
#card 买房一次性到位比较好
#card 一线和二线
#card 吕后篡权
#card 小产权房
#card 商铺和住宅
#card 体制内外
#card 2010年的上海
#card 收紧住房贷款
[[买房:物业与房贷]]
关注本贴多日,非常欣赏楼主的睿智和理性。
小女子也是上海众多买房人之一,目前所谓单身剩女,得家人支持有一百五十万的首付金。基本确定买在内环交通方便的次新房(老公房停车太成问题)。
对上海浦西内环内的诸多区位和楼盘做过研究,发现离地铁近的同时能有苏州河景观的房源最具性价比,满足交通性和景观稀缺性的双重优势(上海内环内几乎没什么安静同时又具有自然资源的地方)。
现在基本确定了两个小区,比较纠结的问题有两个。
第一个问题,一个是小区管理和区位优势明显单价在3万3左右,另一个区位和管理比较差,名声不好,但是面苏州河的独一无二景观,单价在3万左右。从小区管理的角度,我也认可楼主的看法,管理好的小区升值空间大,管理差的小区由于群租问题严重,目前价格偏低,但是这个软件问题在日后随着自住率的提高貌似也能解决。究竟我该选一个景观资源非常稀缺的管理和配套相对较差的小区,还是一个相对成熟价格稍高同时综合配套比较好的小区?那个小区比较有保值和投资优势?
第二个问题,目前的月收入税后刚过万元,如果拿150万的首付买一房大概80平左右,是比较轻松的,月供不成问题(目前租的一室一厅租金3500,已经可以做为还贷资金了)。但是考虑长远问题和一些小户型的局限性,非常想投资一套能长久居住的两房甚至三房(众所周知,一个小区里好的位置总是留给最大的户型)。这样的话,大概一套就要在320万甚至350万,我需要每月还贷1万2左右,基本和我的月工资持平。从个人观点来看,我比较想冒这个风险,比较合适的做法是首付降低到3成左右,留出三十万左右的还贷资金用以应付前面两至三年的还贷。由于目前单身,两至三年后也许家庭收入就可以完全承受这个月供。即使还是单身,目前事业发展良好,对2年后的收入在2万以上很有信心,因此还是认为可以目前阶段多点勇气,目光长远,以保证日后生活安康。
不知道楼主怎么看这个问题?如果是房价持续上涨的情况,也许更该相信我的工资也会持续上涨,是否我看问题太乐观?贷款200万的风险是不是会太大?
kkndme:
第一个问题:物业管理对于小区的价值起着至关重要的作用,好的物业管理才能让人居住舒适,这一点是非常重要的。软件的提升往往比硬件的提升难度更大。物业很差的景观楼盘,可以比喻为鲜花丛中的一坨屎,周边环境再好,它也是一坨屎。一坨屎能否脱胎换骨变成黄金,存在着较大的不确定性。
第二个问题:是否承受较高月供,取决于你对未来的预期,所以你要仔细分析你的行业前途,如果你所处的行业告诉成长,或者你的能力职位将得到进一步提升,你可以承受较高的月供。
一般来说月供不要超过全部收入的70%,如果超过这个边际,就会有较大风险。
#card 体制内的28原则
#card 贾谊
#card 不要低估通货膨胀
#card 二三线城市与重庆
#card 城区和郊区
#card 人制的社会,人就是制度
准公务员的好处
一线杭州
#card 转篇文章:一个忽悠了几亿中国人的伪概念:所谓“中国房地产泡沫”
#card 城市底层
#card 农村自来水
#card 袁盎
#card 二三线城市,选新城还是老城
#card 在中国,普通人手上闲钱不多的人被剥削
#card 三分天注定,七分靠打拼
#card 人的前程有的时候不掌握在自己手里
#card 西安与重庆
#card 谢国中「空置率」
#card 打工不如有一技之长的小老板
id:: 67cc0174-e658-4f3d-9431-fb5c9f4523a1
#card 讲故事含沙射影ZG之房子不属于市场经济
id:: 67cc0178-315d-4e40-b0f6-f59a08e5394d
id:: 67cc0178-f35a-4416-bab8-e9bd1a5d2ace
#card 保钓事件之死要面子活受罪
id:: 67cc0178-b4a8-44bd-806d-57ea97d88cd0
@A Tour Through My Zettelkasten
启发
sobjornstad/tzk: Zettelkasten edition and tooling for TiddlyWiki (github.com) 作者工作流对应的 [[TiddlyWiki]] 模板
Organizational principles
所有 tiddler 使用驼峰法命名
通过 Links 关键相同主题的 idea
tags 使用不同的背景颜色区分不同的功能
Indexes, as per Luhmann (green)
Classifiers of publicity status (black) 是否公开
Lists of things, as per TW understanding of tags (blue) 主题聚合
Create different types of tiddlers and pseudo-types (red, orange)
Source 信息来源
PAO(Person, Animal, or Organization)
Places
Tool
Identify areas to work on – Stub, 需要拆分 NeedsExcision, etc. (yellow) 需要继续完成的
Index tiddlers 关于某个主题的总览
Stretchtext and description transclusion 提供关于笔记的摘要,供聚合使用
Subtiddlers 类似于 logseq 的namespace,另外一种形式聚合方式。
Bibliographies 关于特定主题参考内容的聚合字段
tiddler 中字段 Bibliographies 填上材料对应的主题
description 提供内容摘要
Write 当前需要继续完成的内容
stubs
misssing
needing attention 需要处理的内容
todo-item 包含 todo 的集合
open question
Reference Explorer 展示和当前 tiddler 关联的 backlink、link,提供按 tags 过滤
link graph 通过 TiddlyMap 层次化展示当前 tiddler 关联的其他 tiddler
Types
[[TiddlyWiki/Plugin]]
CodeMirror
vim 模式
Details widget
页面聚合插件
Relink
改名自动更新引用
Stretchtext
TiddlyTables 表格
Tidgraph
Triple-click to edit
[[TiddlyRemember]] anki 制卡工具
隐私开关
隐私块通过新建 tiddler 实现,同时需要隐藏标题
编译脚本根据公开的 tiddler 新建 publish 版本
ReadingInbox 管理和安排待阅读的材料
SimpleAnalytics 网页访问信息分析脚本
Tag coloration and columnizing 实现按颜色对标签进行排序
Philosophy 笔记关联方法背后对应的哲学
JustGetStarted 无压力记录想法,区分完成的笔记和没有完成的笔记
ThreeLinks
@A Unified Approach to Interpreting Model Predictions
[[Abstract]]
[[Attachments]]
特征 Shap 值
给定当前的一组特征值,特征值对实际预测值与平均预测值之差的贡献就是估计的 Shapley 值。
不是从模型训练中删除特征后的预测值之差
n 个特征对应 个模型
缺失
引入
按不同顺序引入特征,计算边际贡献。
Ref
@Effective learning Twenty rules of formulating knowledge
1 Do not learn if you do not understand :-> 如果不理解不如不学
2 Learn before you memorize :-> 先学再记
3 Build upon the basics :-> 从基础开始
4 Stick to the minimum information principle 最小信息原则 :<-> cards should never ask about more than one thing
5 Cloze deletion is easy and effective :-> 填空简单而有效
6 Use imagery :-> 图片
7 Use mnemonic techniques :-> 使用助记技巧
8 Graphic deletion is as good as cloze deletion :-> 图片填空
9 Avoid sets :-> 避免答案是一大堆正确但是无序的集合
10 Avoid enumerations :-> 避免枚举类型,比如字母表
11 Combat interference :-> 对抗干扰,如何处理容易混淆的问题。尽早处理。
12 Optimize wording :-> 优化措辞,减少多余信息
13 Refer to other memories :-> 相互链接记忆
14 Personalize and provide examples :-> 建立材料与个人的联系并给出例子
15 Rely on emotional states :-> 借助情绪状态
16 Context cues simplify wording :-> 利用上下文简化记忆(标注是哪一个领域的问题等)
17 Redundancy does not contradict minimum information principle :-> 冗余但不违背最小信息原则
冗余是比需要的信息更多的信息。最小信息不代表字符数最小
从多个角度记忆同一个内容
18 Provide sources :-> 提供信息来源
19 Provide date stamping :-> 提供时间标记
20 Prioritize :-> 明确优先级调整阅读顺序
prioritizing
. In incremental reading you can start from badly formulated knowledge and improve its shape as you proceed with learning (in proportion to the cost of inappropriate formulation). If need be, you can review pieces of knowledge again, split it into parts, reformulate, reprioritize, or delete. See also: Incremental reading, Devouring knowledge, Flow of knowledge, Using tasklistsHighlights
To get a good paper written, you only have to rewrite a good draft; to get a good draft written, you only have to turn a series of notes into a continuous text.
While the literature notes will be stored within the reference system together with the bibliographic details, separate from the slip-box, but still close to the context of the original text, they are already written with an eye towards the lines of thoughts within the slip-box. Luhmann describes this step as follows: “I always have a slip of paper at hand, on which I note down the ideas of certain pages. On the backside I write down the bibliographic details. After finishing the book I go through my notes and think how these notes might be relevant for already written notes in the slip-box. It means that I always read with an eye towards possible connections in the slip-box.” (Luhmann et al., 1987, 150)
Here, everything is about building up a critical mass of useful notes in the slip-box, which gives us a clear idea of how to read and how to take literature notes.
But all of this would be just an extra step before you do the only step that really counts, which is to take the permanent note that will add value to the actual slip-box.
So if you are writing by hand, you are forced to think about what you hear (or read) – otherwise you wouldn’t be able to grasp the underlying principle, the idea, the structure of an argument.
The very moment we decide on a hypothesis, our brains automatically go into search mode, scanning our surroundings for supporting data, which is neither a good way to learn nor research.
We just seem to happen to read the publications that tend to confirm what we already know.
Confirmation bias is tackled here in two steps: First, by turning the whole writing process on its head, and secondly, by changing the incentives from finding confirming facts to an indiscriminate gathering of any relevant information regardless of what argument it will support.
With practice comes the ability to find the right words to express something in the best possible way, which means in a simple, but not simplified way. Not only will the readers of your text appreciate your ability to explain something clearly, those you talk to will benefit from this ability as well, as it is not limited to writing.
The ability to spot patterns, to question the frames used and detect the distinctions made by others, is the precondition to thinking critically and looking behind the assertions of a text or a talk. Being able to re-frame questions, assertions and information is even more important than having an extensive knowledge, because without this ability, we wouldn’t be able to put our knowledge to use. The good news is that these skills can be learned.
Taking smart notes is the deliberate practice of these skills. Mere reading, underlining sentences and hoping to remember the content is not. 10.4
Physicist and Nobel Prize winner Richard Feynman once said that he could only determine whether he understood something if he could give an introductory lecture on it.
Reading, especially rereading, can easily fool us into believing we understand a text. Rereading is especially dangerous because of the mere-exposure effect: The moment we become familiar with something, we start believing we also understand it. On top of that, we also tend to like it more (Bornstein 1989).
And while writing down an idea feels like a detour, extra time spent, not writing it down is the real waste of time, as it renders most of what we read as ineffectual.
We face here the same choice between methods that make us feel like we learned something and methods that truly do make us learn something.
Writing, taking notes and thinking about how ideas connect is exactly the kind of elaboration that is needed to learn.
The slip-box takes care of details and references and is a long-term memory resource that keeps information objectively unaltered. That allows the brain to focus on the gist, the deeper understanding and the bigger picture, and frees it up to be creative. Both the brain and the slip-box can focus on what they are best at.
What good readers can do is spot the limitations of a particular approach and see what is not mentioned in the text.
psychologist Lonka refers to, goes a step further and
Lonka recommends what Luhmann recommends: Writing brief accounts on the main ideas of a text instead of collecting quotes.
Academic or nonfiction texts are not written like this because in addition to the writing, there is the reading, the research, the thinking and the tinkering with ideas.
More notes mean more possible connections, more ideas, more synergy between different projects and therefore a much higher degree of productivity. Luhmann’s slip-box contains about 90,000 notes, which sounds like an incredibly large number. But it only means that he wrote six notes a day from the day he started to work with his slip-box until he died.
In contrast to manuscript pages per day, a certain number of notes a day is a reasonable goal for academic writing.
We reinvent and rewrite our memory every time we try to retrieve information.
Luhmann states as clearly as possible: it is not possible to think systematically without writing (Luhmann 1992, 53).
Richard Feynman once had a visitor in his office, a historian who wanted to interview him. When he spotted Feynman’s notebooks, he said how delighted he was to see such “wonderful records of Feynman’s thinking.” “No, no!” Feynman protested. “They aren’t a record of my thinking process. They are my thinking process. I actually did the work on the paper.” “Well,” the historian said, “the work was done in your head, but the record of it is still here.” “No, it’s not a record, not really. It’s working. You have to work on paper, and this is the paper.”[33] This, obviously, was a very important distinction to Feynman, much more than just a linguistic difference – and for a good reason: It is the distinction that makes all the difference when it comes to thinking. Philosophers, neuroscientists, educators and psychologists like to disagree in many different aspects on how the brain works. But they no longer disagree when it comes to the need for external scaffolding. Almost all agree nowadays that real thinking requires some kind of externalization, especially in the form of writing. “Notes on paper, or on a computer screen […] do not make contemporary physics or other kinds of intellectual endeavour easier, they make it possible” is one of the key takeaways in a contemporary handbook of neuroscientists (Levy 2011, 290) Concluding the discussions in this book, Levy writes: “In any case, no matter how internal processes are implemented, insofar as thinkers are genuinely concerned with what enables human beings to perform the spectacular intellectual feats exhibited in science and other areas of systematic enquiry, as well as in the arts, they need to understand the extent to which the mind is reliant upon external scaffolding.”
A common way to embed an idea into the context of the slip-box is by writing out the reasons of its importance for your own lines of thought.
Robert and Elizabeth Ligon Bjork from the University of California suggest distinguishing between two different measurements when it comes to memory: Storage strength and retrieval strength (Bjork 2011). They speculate that storage strength, the ability to store memories, only becomes greater over one’s lifetime. We add more and more information to our long-term memory. Just by looking at the physical capacity of our brains, we can see that we could indeed probably store a lifetime and a bit of detailed experiences in it (Carey 2014, 42).
Luhmann wrote an index with a typewriter on index cards. In the Zettelkasten, keywords can easily be added to a note like tags and will then show up in the index. They should be chosen carefully and sparsely. Luhmann would add the number of one or two (rarely more) notes next to a keyword in the index (Schmidt 2013, 171).
The first type of links are those on notes that are giving you the overview of a topic. These are notes directly referred to from the index and usually used as an entry point into a topic that has already developed to such a degree that an overview is needed or at least becomes helpful.
Comparing, differentiating and connecting notes are the basis of good academic writing, but playing and tinkering with ideas is what leads to insight and exceptional texts.
Only if nothing else is lingering in our working memory and taking up valuable mental resources can we experience what Allen calls a “mind like water” - the state where we can focus on the work right in front of us without getting distracted by competing thoughts.
Only if you can trust your system, only if you really know that everything will be taken care of, will your brain let go and let you focus on the task at hand.
Instead of adding notes to existing categories or the respective texts, he wrote them all on small pieces of paper, put a number in the corner and collected them in one place: the slip-box.
The best way to maintain the feeling of being in control is to stay in control. And to stay in control, it’s better to keep your options open during the writing process rather than limit yourself to your first idea.
Luhmann had two slip-boxes: a bibliographical one, which contained the references and brief notes on the content of the literature, and the main one in which he collected and generated his ideas, mainly in response to what he read.
Whenever he read something, he would write the bibliographic information on one side of a card and make brief notes about the content on the other side (Schmidt 2013, 170). These notes would end up in the bibliographic slip-box. In a second step, shortly after, he would look at his brief notes and think about their relevance for his own thinking and writing. He then would turn to the main slip-box and write his ideas, comments and thoughts on new pieces of paper, using only one for each idea and restricting himself to one side of the paper, to make it easier to read them later without having to take them out of the box. He kept them usually brief enough to make one idea fit on a single sheet, but would sometimes add another note to extend a thought.
He did not just copy ideas or quotes from the texts he read, but made a transition from one context to another.
Writing that an author struggles in one chapter to justify his method can be a much more adequate description of this chapter’s content than any quote from the text itself (this would call for an explanation, of course).
If the existing note had the number 22, the new note would become note number 23. If 23 already existed, he named the new note 22a. By alternating numbers and letters, with some slashes and commas in between, he was able to branch out into as many strings of thought as he liked.
The last element in his file system was an index, from which he would refer to one or two notes that would serve as a kind of entry point into a line of thought or topic. Notes with a sorted collection of links are, of course, good entry points.
At this point, it should become clear that you don’t need to wait for a genie to appear, as each step is clearly not only within your abilities, but also straightforward and well defined: Assemble notes and bring them into order, turn these notes into a draft, review it and you are done.
Thinking, reading, learning, understanding and generating ideas is the main work of everyone who studies, does research or writes.
Something to write with and something to write on (pen and paper will do) · A reference management system (the best programs are free) · The slip-box (the best program is free) · An editor (whatever works best for you: very good ones are free)
Even though you could basically emulate the slip-box with any program that allows setting links and tagging (like Evernote or a Wiki), I strongly recommend using Daniel Lüdecke’s Zettelkasten.
To give you all the resources you need to work in the best possible way with the best technique available.
critically. By writing, students demonstrate what they have learned, show their ability to think critically and ability to develop ideas.
Many students and academic writers think like the early ship owners when it comes to note-taking.
In the old system, the question is: Under which topic do I store this note? In the new system, the question is: In which context will I want to stumble upon it again?
The slip-box is the shipping container of the academic world.
To achieve a critical mass, it is crucial to distinguish clearly between three types of notes: 1. Fleeting notes, which are only reminders of information, can be written in any kind of way and will end up in the trash within a day or two. 2. Permanent notes, which will never be thrown away and contain the necessary information in themselves in a permanently understandable way. They are always stored in the same way in the same place, either in the reference system or, written as if for print, in the slip-box. 3. Project notes, which are only relevant to one particular project. They are kept within a project-specific folder and can be discarded or archived after the project is finished.
The only permanently stored notes are the literature notes in the reference system and the main notes in the slip-box. The former can be very brief as the context is clearly the text they refer to. The latter need be written with more care and details as they need to be self-explanatory. Luhmann never underlined sentences in the text he read or wrote comments in the margins. All he did was take brief notes about the ideas that caught his attention in a text on a separate piece of paper: “I make a note with the bibliographic details. On the backside I would write ‘on page x is this, on page y is that,’ and then it goes into the bibliographic slip-box where I collect everything I read.” (Hagen, 1997)
The first teaches the formal requirements: style, structure or how to quote correctly. And then there are the psychological ones, which teach you how to get it done without mental breakdowns and before your supervisor or publisher starts refusing to move the deadline once more.
the rough order is always the same: Make a decision on what to write about, plan your research, do your research, write. Interestingly enough, these road maps usually come with the concession that this is only an idealised plan and that in reality, it rarely works like that.
Basically, that is what Hans-Georg Gadamer called the hermeneutic circle (Gadamer 2004).
It accompanies everything: We have to read with a pen in hand, develop ideas on paper and build up an ever-growing pool of externalised thoughts.
By focusing on what is interesting and keeping written track of your own intellectual development, topics, questions and arguments will emerge from the material without force. Not only does it means that finding a topic or a research question will become easier, as we don’t have to squeeze it out of the few ideas that are on top of our head anymore, every question that emerges out of our slip-box will naturally and handily come with material to work with.
I am convinced that the attempt of these study guides to squeeze a nonlinear process like writing into a linear order is the main reason for the very problems and frustrations they promise to solve.
Nothing motivates us more than the experience of becoming better at what we do.
It is the simplest test: We tend to think we understand what we read – until we try to rewrite it in our own words.
The same goes for writing permanent notes, which have another feedback loop built-in: Expressing our own thoughts in writing makes us realise if we really thought them through.
It is not the slip-box or our brains alone, but the dynamic between them that makes working with it so productive.
Give Each Task Your Undivided Attention
less successful ones. The right question is: What can we do differently in the weeks, months or even years before we face the blank page that will get us into the best possible position to write a great paper easily?
Literature note
Permanent note
卡片盒的价值
[[Youtube]] 作者访谈 Interview and Q&A with Sönke Ahrens on How to Take Smart Notes - YouTube
作者在 Quora 上的一个回答:Sönke Ahrens’s answer to What is the best way to take notes? - Quora
记下的笔记,依旧是孤立的。利用 [[Zettelkasten]] 的方法将笔记链接起来。
尽可能集中收集你的一切想法、笔记
快速记录灵感,一天之内整理成为笔记。
First, don’t worry too much about the notes you take while you are doing something else. 快速记录 index,避免影响你正在干的事情
as quick notes are only reminders of an idea, you need to turn them (ideally within a day)__ into permanently understandable notes.__ 当天修改成为可以永久理解的笔记。
如何构建系统的一些实践[[方法]]
标准化 Standardize:集中在一个地方保存格式相同的笔记,每一篇笔记有一个唯一的编号。
阐述 Elaborate:思考新的笔记是否和旧笔记相关(相斥、互补、相互修正),并将思考过程清晰记录在新的笔记中。
链接 Connect,大部分笔记方法只是孤立的将笔记分到一个类别中。区分他们之间的相同点或不同点。不要事先将笔记分类,而是通过笔记之间的相互连接聚类成一个主题,从中产生思考感受,从「可以怎么用」来思考。
每一篇笔记都有独立的 ID,新增加的笔记在与它最相关笔记的ID基础上增加编码。
有编码之后,可以更加方便在不同的笔记中应用。比如今天看的文章笔记 id 为 ml001,就可以在日记中写下 ml001。相应的利用 grep 语法能快速查到引用这个id的笔记。
建立 note-sequences,通过这种方法写文章或者书。
笔记以字母排序建立笔记索引,每一次拥有新的主题方向,都可以建立一次索引。
将这些记笔记的方法当成习惯养成。笔记收集 - 建立联系 - 编码存储 - 再联系
其他人的笔记 [[vitamindy]]
又一个读书笔记 How to Take Smart Notes: A Step-by-Step Guide - Nat Eliason
Smart Notes 来取代之前高亮文字,摘要+想法。
高亮浪费时间,高亮的意义在于带来的想法,记录你的想法。
单纯高亮的文字,脱离语义后没有意义
笔记对你的价值,而不是和书的相关程度
Grab your own copy of How to Take Smart Notes
Get a good notebook for taking notes as you read
Handwrite ideas as you have them while reading, and reference where they came from
Upload your ^^highlights and ideas^^ once you finish a book
File those ideas in their most useful contexts
Use those ideas to create new works!
[[Summary]] 地理位置不同决定中国和西方的发展走出不同的道路,政府在两种文化中扮演非常不同的角色。
一 、 中西方的历史文化差异 ;
地理环境
农业文明
农业文明的基础是光合作用 , 它把太阳能转化成农作物和可畜养动物 , 而动植物都依赖土地 。 这就意味着土地的大小决定了农业产出和所能负担的人口数量 。
在整个农业文明的历史中 , 土地的稀缺性是贯穿始终的主题 。
某个社会一旦拥有更多的土地 , 就会产生更多的人口 , 当人口多到一定程度 , 超过土地大小所能承载的极限 , 就会陷入[[马尔萨斯陷阱]] 。
中华文明5000年历史上 , 这样的争战数不胜数 。 最终的胜者是那些发明出一种大规模动员人民的方式的社会 ,也就是政治组织形式比较完善的社会 。
政治贤能制 ( Political Meritocracy )
改变过去政治权力通过血缘关系来分配和传承
秦国商鞅变法开创任人唯贤的制度
海洋文明
地理大发现
欧洲发现美洲大陆的概率远远高于中国
美洲的土地避免欧洲陷入[[马尔萨斯陷阱]]
启蒙运动和科学革命
经济贤能制 ( Economic Meritocracy )
农业文明是由光合作用原理决定的 , 光合作用对能量转换的极限受制于土地的大小 。 土地的大小有自然的上限 , 因此农业文明的经济是短缺经济 。
而以现代科学技术为基础的文明能够释放出持续的 、 复利式的经济增长的动力 , 将农业时代的短缺经济转变为富足经济 。
二 、 中国的现代化历程及近四十年的经济奇迹 ;
现代文明的本质并非政治制度 , 而是自由市场经济与现代科学技术的结合 。
中国独特的政治经济体系,三合一市场机制
“ 三合一市场机制 ” , 就是中央政府 、 地方政府和企业之间的密切合作 。
中央政府制定战略,提供资源支持,调节经济周期。
地方政府之间相互竞争,为商业公司提供总部式服务。
三合一市场机制缺点
当地方政府像企业一样提供商业服务时 , 它们会要求租金 , 有些官员甚至会以权谋私 , 要求企业直接把租金支付给个人 。
因此 , 这种模式在创造了超高速经济增长的同时 , 也催生了严重的贪腐 、 寻租 、 环境污染恶化 、 不同地区之间的恶性竞争 、 不可持续的贫富分化 , 和高度依赖债务的经济 , 因为债务是中央政府用来缓和经济周期起伏的主要方式之一 。
反全球化运动和各种民粹主义政治运动
当中国成为世界第二大经济体 、 世界上最大的贸易国和最大的工业国时 , 其他国家和地区的经济没有达到9%的增速来适应这么多的产出 。
全球化的结果之一是 , 那些原本发达的工业大国正在失去其工业上的优势基础 。 而全球化为发达国家带来的好处又集中地过度分配给了科技与金融领域中的精英们 , 贫富分化日益严重 , 中产阶级的生活水平停滞不前 。
三 、 当前投资人尤其是海外投资人对中国的悲观情绪 ;
十八大以来的反腐运动两个目标
通过全面从严治党来加强对整个国家社会的掌控 ;
为中国继续创造中高速 ( 相对于超高速 ) 的 、 可持续的经济增长 。
[[中美贸易战]]
章家敦 ( Gordon Chang ) 2001年所写的 《 中国即将崩塌 》 ( The Coming Collapse of China )
[[供给侧改革]]降低中国经济对国外市场的依赖性,净出口占中国 GDP 的比例下降。
四 、 经济发展的三个不同阶段 : 今天中国与西方的位置 ;
刘易斯拐点
过了刘易斯拐点后,经济发展进入成熟阶段,黄金时代
企业需要通过提高对生产设备的投资以提高产出 , 同时迎合满足雇员的需求 , 增加工资 , 改善工作环境和生产设备等等 。
在这个时期 , 因为劳动人口已经开始短缺 , 经济发展会导致工资水平不断上升 , 工资上升又引起消费水平上升 , 储蓄水平和投资水平也会上升 , 这样公司的利润也会上升 , 形成了一个互相作用 、 向上的正向循环 。
这个阶段中 , 几乎社会中的每个人都能享受到经济发展的成果 , 同时会形成一个以中产阶级为主的消费社会 , 整个国家进入经济发展的黄金时期 。
刘易斯拐点的被追赶阶段
企业人力成本不断上升,海外其他新兴经济会变更更加有吸引力,企业开始转移投资。
这一阶段 , 经济仍然在发展 , 但是经济发展的成果对社会中的各个阶层已经不再均衡 。 劳工需要靠自己生存 。
那些技术含量比较高的工作 , 比如科学技术 、 金融 、 国际市场类的工作回报会很高 , 资本的海外回报也会很高 。
但是社会的总体工资水平会停滞不前 , 国内投资机会大大减少 。
经济发展不同阶段政府宏观政策的作用
在早期工业化过程中 , 政府的财政政策会发挥巨大的作用 , 投资基础设施 、 资源 、 出口相关服务等都有助于新兴国家迅速进入工业化状态 。
进入到后刘易斯拐点的成熟阶段以后 , 经济发展主要依靠国内消费 , 处在市场前沿的私人部门企业家更能把握市场瞬息万变的商机 。 此时依靠财政政策的进一步投资就开始和私营部门的投资互相冲突 、 互相竞争资源 。 这一时期 , 货币政策更能有效地调动私营部门的积极性 , 促进经济发展 。
到了被追赶阶段 , 因为国内投资环境恶化 , 投资机会减少 , 私营部门因海外投资收益更高 , 而不愿意投资国内 。 此时政府的财政政策又变得更为重要 , 它可以弥补国内的私营部门投资不足 , 居民储蓄过多而消费不足 。 反而货币政策在这一阶段会常常失灵 。
但是因为政府的惯性比较强 , 所以常常当经济发展阶段发生变化时 , 政策的执行仍然停留在上一个发展阶段的成功经验中 。
五 、 中国经济的增长潜力 。
工程师红利
现代文明的基础是现代科技和自由市场经济的结合 , 与政治组织方式关系不大 。 而技术密度却与经济增长直接相关 。
类似于之前的农业人口红利?
城市化率
高储蓄率
支持城市化、支持建设、支持制造业升级
高债务水平
中国以银行债务为主,股票市场及股权融资占整体融资比例很低。
中国政府想做的就是通过资本市场改革从根本上改变中国的融资结构 , 大大增加股权的权重 , 减少债务所占比例 。
资本市场改革将成为解锁高债务比问题和提高融资效率的关键 。
中国政府在处理重大问题 、 危机时的灵活性和实用性
东亚同样受儒教影响的国家 、 地区的发展历程对预测中国经济前景具有启发意义
与[[价值投资]]相关的看法
关注对未来大概率正确的预测,分析尽量保持客观理性 , 摒弃任何意识形态及情感带来的偏见 。
作为基本面投资人 , 我们为什么现在投资中国呢 ? 因为在那里我们仍然能够发现一些优秀龙头企业 , 它们比西方的同类公司更便宜 , 而且增长速度更快 。 这就是我们在中国投资的逻辑。
我们是自下而上的投资者 。 我们的投资一般不受整体宏观环境的影响 。 今天我们之所以要讨论这些问题 , 是因为我们所投资的公司在某种程度上与它们所在国家的命运也是息息相关的 。 所以我们要对这个国家有一个粗略的认知 。 这种认知不一定要非常精确 , 也不需要时时正确 。 我们只需要对所投注的国家未来20年或30年的情况有个大致的推测 。 这就是为什么我们要做这些分析 , 为什么我们要思考这些问题 。
[[Summary]] 地理位置不同决定中国和西方的发展走出不同的道路,政府在两种文化中扮演非常不同的角色。
地理环境
农业文明
农业文明的基础是光合作用 , 它把太阳能转化成农作物和可畜养动物 , 而动植物都依赖土地 。 这就意味着土地的大小决定了农业产出和所能负担的人口数量 。
在整个农业文明的历史中 , 土地的稀缺性是贯穿始终的主题 。
某个社会一旦拥有更多的土地 , 就会产生更多的人口 , 当人口多到一定程度 , 超过土地大小所能承载的极限 , 就会陷入[[马尔萨斯陷阱]] 。
中华文明5000年历史上 , 这样的争战数不胜数 。 最终的胜者是那些发明出一种大规模动员人民的方式的社会 ,也就是政治组织形式比较完善的社会 。
政治贤能制 ( Political Meritocracy )
改变过去政治权力通过血缘关系来分配和传承
秦国商鞅变法开创任人唯贤的制度
海洋文明
地理大发现
欧洲发现美洲大陆的概率远远高于中国
美洲的土地避免欧洲陷入[[马尔萨斯陷阱]]
启蒙运动和科学革命
经济贤能制 ( Economic Meritocracy )
农业文明是由光合作用原理决定的 , 光合作用对能量转换的极限受制于土地的大小 。 土地的大小有自然的上限 , 因此农业文明的经济是短缺经济 。
而以现代科学技术为基础的文明能够释放出持续的 、 复利式的经济增长的动力 , 将农业时代的短缺经济转变为富足经济 。
现代文明的本质并非政治制度 , 而是自由市场经济与现代科学技术的结合 。
中国独特的政治经济体系,三合一市场机制
“ 三合一市场机制 ” , 就是中央政府 、 地方政府和企业之间的密切合作 。
中央政府制定战略,提供资源支持,调节经济周期。
地方政府之间相互竞争,为商业公司提供总部式服务。
三合一市场机制缺点
当地方政府像企业一样提供商业服务时 , 它们会要求租金 , 有些官员甚至会以权谋私 , 要求企业直接把租金支付给个人 。
因此 , 这种模式在创造了超高速经济增长的同时 , 也催生了严重的贪腐 、 寻租 、 环境污染恶化 、 不同地区之间的恶性竞争 、 不可持续的贫富分化 , 和高度依赖债务的经济 , 因为债务是中央政府用来缓和经济周期起伏的主要方式之一 。
反全球化运动和各种民粹主义政治运动
当中国成为世界第二大经济体 、 世界上最大的贸易国和最大的工业国时 , 其他国家和地区的经济没有达到9%的增速来适应这么多的产出 。
全球化的结果之一是 , 那些原本发达的工业大国正在失去其工业上的优势基础 。 而全球化为发达国家带来的好处又集中地过度分配给了科技与金融领域中的精英们 , 贫富分化日益严重 , 中产阶级的生活水平停滞不前 。
十八大以来的反腐运动两个目标
通过全面从严治党来加强对整个国家社会的掌控 ;
为中国继续创造中高速 ( 相对于超高速 ) 的 、 可持续的经济增长 。
[[中美贸易战]]
章家敦 ( Gordon Chang ) 2001年所写的 《 中国即将崩塌 》 ( The Coming Collapse of China )
[[供给侧改革]]降低中国经济对国外市场的依赖性,净出口占中国 GDP 的比例下降。
刘易斯拐点
过了刘易斯拐点后,经济发展进入成熟阶段,黄金时代
企业需要通过提高对生产设备的投资以提高产出 , 同时迎合满足雇员的需求 , 增加工资 , 改善工作环境和生产设备等等 。
在这个时期 , 因为劳动人口已经开始短缺 , 经济发展会导致工资水平不断上升 , 工资上升又引起消费水平上升 , 储蓄水平和投资水平也会上升 , 这样公司的利润也会上升 , 形成了一个互相作用 、 向上的正向循环 。
这个阶段中 , 几乎社会中的每个人都能享受到经济发展的成果 , 同时会形成一个以中产阶级为主的消费社会 , 整个国家进入经济发展的黄金时期 。
刘易斯拐点的被追赶阶段
企业人力成本不断上升,海外其他新兴经济会变更更加有吸引力,企业开始转移投资。
这一阶段 , 经济仍然在发展 , 但是经济发展的成果对社会中的各个阶层已经不再均衡 。 劳工需要靠自己生存 。
那些技术含量比较高的工作 , 比如科学技术 、 金融 、 国际市场类的工作回报会很高 , 资本的海外回报也会很高 。
但是社会的总体工资水平会停滞不前 , 国内投资机会大大减少 。
经济发展不同阶段政府宏观政策的作用
在早期工业化过程中 , 政府的财政政策会发挥巨大的作用 , 投资基础设施 、 资源 、 出口相关服务等都有助于新兴国家迅速进入工业化状态 。
进入到后刘易斯拐点的成熟阶段以后 , 经济发展主要依靠国内消费 , 处在市场前沿的私人部门企业家更能把握市场瞬息万变的商机 。 此时依靠财政政策的进一步投资就开始和私营部门的投资互相冲突 、 互相竞争资源 。 这一时期 , 货币政策更能有效地调动私营部门的积极性 , 促进经济发展 。
到了被追赶阶段 , 因为国内投资环境恶化 , 投资机会减少 , 私营部门因海外投资收益更高 , 而不愿意投资国内 。 此时政府的财政政策又变得更为重要 , 它可以弥补国内的私营部门投资不足 , 居民储蓄过多而消费不足 。 反而货币政策在这一阶段会常常失灵 。
但是因为政府的惯性比较强 , 所以常常当经济发展阶段发生变化时 , 政策的执行仍然停留在上一个发展阶段的成功经验中 。
工程师红利
现代文明的基础是现代科技和自由市场经济的结合 , 与政治组织方式关系不大 。 而技术密度却与经济增长直接相关 。
类似于之前的农业人口红利?
城市化率
高储蓄率
支持城市化、支持建设、支持制造业升级
高债务水平
中国以银行债务为主,股票市场及股权融资占整体融资比例很低。
中国政府想做的就是通过资本市场改革从根本上改变中国的融资结构 , 大大增加股权的权重 , 减少债务所占比例 。
资本市场改革将成为解锁高债务比问题和提高融资效率的关键 。
中国政府在处理重大问题 、 危机时的灵活性和实用性
东亚同样受儒教影响的国家 、 地区的发展历程对预测中国经济前景具有启发意义
关注对未来大概率正确的预测,分析尽量保持客观理性 , 摒弃任何意识形态及情感带来的偏见 。
作为基本面投资人 , 我们为什么现在投资中国呢 ? 因为在那里我们仍然能够发现一些优秀龙头企业 , 它们比西方的同类公司更便宜 , 而且增长速度更快 。 这就是我们在中国投资的逻辑。
我们是自下而上的投资者 。 我们的投资一般不受整体宏观环境的影响 。 今天我们之所以要讨论这些问题 , 是因为我们所投资的公司在某种程度上与它们所在国家的命运也是息息相关的 。 所以我们要对这个国家有一个粗略的认知 。 这种认知不一定要非常精确 , 也不需要时时正确 。 我们只需要对所投注的国家未来20年或30年的情况有个大致的推测 。 这就是为什么我们要做这些分析 , 为什么我们要思考这些问题 。
英国科技革命,欧洲 1850 开始的优势
中国无法赶超的原因是关于整个社会的想法和组织不同。
之前社会发展的动力:宗教、帝国、金钱
科技革命和工业革命之后:科学、帝国、资本
地理大发现之后世界的发在,科学在帝国和资本的帮助下,世界变得更加一体。但是没有变得更好。
饥饿、疾病、战争
一、超越死亡
二、全球的幸福
三、人类取得神一般的创造力和毁灭力
[[Ref]]
1 、并未缩小的社会格差
2、在泛滥的信息汪洋中只取一瓢饮,让人性的弱点凸显
一是过度关注自己在鄙视链中的位置从而深陷焦虑漩涡。
二是移动互联网+智能算法带来世界越来越坏的错觉。
文章结构
至暗时刻
未被兑现的承诺
元叙事的倒掉
迈入风险社会的最后一步
相信希望,而不是幻想
互联网是一种集权技术吗?
一种是完全由无形之手也即自由市场所主导的西方模式,另一种则是由强监管、强准入、强管理主导的东方模式。最终到集权、矮化公民为消费者、侵犯隐私这一终点。
如果产品是免费的,那么你就是商品。
互联网广告的竞争优势是利用用户隐私
企业提供互联网服务也有边际效应
更多的近似于美国 1998 年制定的《数字千年版权法案》(DMCA法案)中避风港原则所描述的内容,其大致为:互联网服务的提供者如不知晓用户的行为侵权,则在侵权案件中可以免责。
红旗原则是指:只有在互联网络服务提供者不明知或者不应知晓自己所传播的信息属于侵权信息或者链接的作品、表演、录音录像制品是侵权作品的情况下,才能适用避风港原则免于处罚。
技术中立代表:bittorrent
早在 1964 年麦克·卢汉就已经在其最重要的著作《理解媒介》中描述过“媒介即信息”——媒体天然具有意识形态。
苹果公司开启的是自苏联解体以来,人类消费科技的最后一个技术奇点。在 iPhone 面世的 10 年里,再没有一款产品,像智能手机那样彻底改变我们的生活、工作甚至是社会运作方式。
技术变革评价标准:技术裂变能力以及技术普及能力。
互联网危机诞生于行业给社会带来的刚性福祉放缓
在复杂经济学创始人布莱恩·阿瑟所著的《技术的本质》一书中,将技术定义为“有目的捕获并利用现象的方法”。并因此,组合被视为技术进步的重要来源之一,它就像是我们用乐高搭建一个物品——我们需要有轮子、传动装置,才能构建车。
网络普及加大信息格差
互联网对全球的链接构成利用信息格差进行剥削的基础条件
在相对狭小的舆论环境中,更有理的人更容易“声量大”;而在绝对开放环境中,则是谁的声量大谁“更有理。”
广场式社交媒体第一次赋予了个体侮辱一整个群体中每个个体的能力。
千人千面的算法会加剧人们的偏见和固有印象。为读者呈现它想看到的东西,并告诉他这就是全世界。加剧人以群分。
互联网从一扇通向世界的窗口,变成一个善于美颜的镜子
当人们获取资讯的方式从主动订阅、搜索,变为被动的“下拉刷新”的时候,互联网便不再是一扇通向世界的窗口,而只是一个善于美颜的镜子。
元叙事一套叙事结构(亦或话语体系),试图对人类过去、现在及未来的全部社会活动给出正确答案。
[[@人类简史]] 中将人类最伟大的能力归结为“创造和相信虚构故事”的能力。
这便是元叙事存在的意义,一个虚构的美好故事,让我们能够跨越时间空间为之努力,并使得彼此陌生甚至有一定利益冲突的群体之间形成合作。尽管我们可能永远达不到童话故事中所描述的 Happy ever after,但这并不妨碍所有人都在这一过程中收获一些好处。
二战后美国实现不生产一针一线亦能控制全球的能力,新型的以美元为工具的剪刀差,使得跨区域的剥削和经济殖民不再变得血腥。
元叙述反性
网络放大恐惧 网络的精确记忆和广泛传播,使得信用受损的影响与速度远远超过以往时代。
一个清析定义且具有强大控制力的道德标准会在各种维度上阻碍人类社会的进步。
如库克所说,“我并不担心机器像人类一样思考,我担心的是人像机器一样思考”。利用技术手段精确执行某种当下的道德,即是让人像机器一样思考。
新的模式在初期存在不用遵守旧的规则的优势,但是当企业开始受到监管和法律的约束,并履行其应承担的责任时,其营业成本必将上升并转嫁至消费者。
技术特权回收期现象:个体福祉在下降,而社会福祉却在上升。
@到底要如何有效读书呢 - 2021年读书计划, 最多只读50本
tags:: [[web]]
public:: false
categories:: 随手记
toc:: true
date:: [[2024/05/30]]
permalink:: note/
链接:
传统谈及全断与反垄断,往往涉及三个领域:经济, 法律和公共治理。但这三个领域建立的 “全断一反全断”框架均诞生在 “羊毛出在猪身上”这种互联网行业的基本支付转移手法出现之前。
我们先简单概括一下这三个领城都是怎么定义奎断和反垄断的:
上述三个领域对全断企业、全断行为、奎断边界和反垄断方法各有一些分歧和共识。但用“互联网黑话”来说,传统框架甚至没有很好地在互联网领域找到好的“抓手”——互联网服务的商品究竞是什么,价格是什么,市场是什么。如果连这些都尚未明晰,那么套用传统的、以钱易物的商业逻辑下形成的“垄断一反垄断”框架,必然出现问题。
无效垄断
从这个财务状况来看,无论滴滴是否垄断,它到目前为止都尚末达成资本所要形成的 “有效”一—赚钱。
在互联网领城,仅仅凭借复制或借鉴,在几乎没有关键性壁垒的情况下就可以对已有的垄断市场进行破坏。这是传统垄断行业或者说原子经济时代不具备的新特性。这也导致了无效全断的其中一种:无壁垒垄断。
无壁垒垄断的定义很简单:市场上某个企业拥有较高市场份额,原因是它的竞争对手不想与其竞争,而非不能与其竞争。
自动驾驶
相比起建立一个个区域性的网约车市场,自动驾驶出租车显然是一个能构筑起垄断门槛的业务。
有两派商业势力在争夺自动驾驶交通业的市场,一派是代表旧生产关系的网约车平台,另一派是代表新生产工具的车企。
在从 2020 年到 2040 年之中的某个时间点里,生产关系派很可能会发生内部斗争,阻碍其对新生产工具的运用。
网约车平台整体是轻资产模式,其最重要的外部资源是网约车司机这种 “传统运力”,它的意义就像用户之于微信。全面进军无人驾驶出租车,会在一个特定的时间点破坏平台与长期合作群体之间的友好关系,造成难以调解的冲突,就像网约车出现时出租车司机对网约车平台的抵制一样。而对于2040年的车企或新诞生的以自动驾驶技术为核心的新运力平台来说,则没有这种“历史包袱”,可以轻裝上路快速增长。如果特斯拉的L5自动驾驶成熱了。它可以迅速组建一个自动驾驶出租车公司。但Uber即便是在拥有同样成熱的自动驾驶技术情况下,也要面临如何遣散数百万网约车司机而不引发社会事件的问题。
中国互联网的第一起屏蔽
2008年9月8日 下午,上线五年、初具规模的淘宝网宣布了一项新的“消费者保障计划”。这项消费者保障计划中包括:对家电类产品要求商家提供三十天保修、珠宝类商家保真、食品类商家进行资质审核、奢侈品商品延长确认收货期给消费者留足监定时同,以及 “屏蔽搜索引擎对淘宝网商品、商家和淘宝除首页外页面的收录”
都说互联网是一门“流量” 的生意,但流动的量实际并不能为互联网公司带来实际的商业价值,只有留下的量,才能真正维系互联网产品的正常发展。因此,与滴滴的无壁垒生断相比,淘宝实际上建立了一种广告市场中的有效生断。
社交垄断能起到的作用比想象的要小得多,局限性也比想象的大得多。
平台经济是指通过创造一个平台,来撮合那些原本因为交易成本而无法达成的交易。
网约车平台没有对供需关系的本质改变,也没有凭空创造此前不存在的市场。
先决条件,产业链条本身要足够短,或是交易链条可以被互联网技术抹平。
平台经济的规模会受制于交易成本的限制
企业垄断的唯一目的,是为了赚钱。
垄断是企业赚钱的手段,而不是目的。但在过去十么的互联网领城,有不少的企业都陷人了本末倒置的境地。
为什么“垄断了市场,还能不赚钱”,因为垄断一个并不存在的市场并不是真正的全断。
有效垄断和无效垄断
一、任何在短期和长期均无法赚钱的垄断,都应破视为商业上的无效垄断。
二、有效垄断,应当建立在一种可行的商业模式上。
在经济学上一般认为存在四种市场结构,分别为完全垄断市场、寡头垄断市场、垄断竞争市场、完全竞争市场。
信息流业务平台
人工智能和互联网技术仅仅降低了内容的分发门槛,并未显著降低内容的创作门槛。
信息流业务的边际成本并不是简单的服务器带宽成本,而是随着读者规模扩大后,全网的优质内容生产成本。
资本的无序扩张与无效垄断
为什么会形成无效垄断? 这个答案非常无聊,因为我们己经看到这个答案很多次了:资本的无序扩张。
用企业和资本在鼓吹创业时所说的话术是,风口就是连猪都能飞起来的时机和赛道。但问题是,风口并不应当是一种起点思维,而是一种终点思维。当把一只猪送上天空的时候,预期的是它能在山顶平安降落。而不是不管山是否存在,都先把猪往上吹再等它掉死。( 这里讲一个许多人应该知道的小知识:中国的互联网公司之所以青睐美股,是因为美股没有太多的盈利要求,一家企业即使亏损也可以在境外上市。)
无限游戏是一种计划经济
企业是市场经济中最基本、最主要的市场活动主体。在参与市场竞争的过程中,企业外部的行为往往会遵循价值规律和市场经济的逻辑。但对于绝大多数企业来说,企业内部遵循的是计划经济。要解释这一点,我们需要先去了解一下《公司的本质》,这是英国著名经济学家科斯在1937年发表的论文。
在一个纯粹的市场经济中,企业应该是不复存在的,但为什么企业还是出现了?
科斯指出,企业的本质是一种非价格的统筹机制,企业管理制度和企业家代替了更细微的交易的发生,来协调经济的生产。而之所以这种替代会发生,是由于交易成本的存在。即每达成一次交易,除了服务与产品的实际价格,还要考虑促成交易本身所产生的成本。
交易成本是決定企业规模的重要因素。交易成本大抵是指使得交易成立的一种额外成本,由于这些交易成本的存在,对于一个稍大的企业来说,办公区里的打印机一定是行政配套设施之一,绝无可能让自己的员工为了打印资料而每天去外面的打印店。
企业会将那些维持企业自身运转所必需、且交易成本过高的外部业务内部化,直到它到达—个临界规模。这一临界规模被称为科斯天花板,亦即衡量企业规模极限的值。
此时,在企业外仍是市场经济,但在企业内为了抹除交易成本,它执行的是计划经济。
了解这个框架之后,你可能已经想到了平合经济领域的违和之处:平台经济是企业的半开放子集,它由企业进行管理但需要大量的外部参与者 (几乎是99%),但大多数特有平台的企业仍在遵循计划经济模式运营平台中的二级市场。
我们的商业分析类媒体似乎从来没有发現过这个矛盾点,一方面商业媒体普遍认可近年来互联网公司得以高速发展的原因之一是政府— “看得见的手”——在这一领域动作并不明显(没有太多管制性干预);另一方面又热衷于分析互联网企业与平台的公司战略或平台战略如何取得成功。但企业战路和平台战略,对于平台内的“小市场”来说是 “看得见的手”。看得见的手在这个领域表现的,远比看不见的手要强大得多。
鼓吹“无限游戏。本身,就已经落入了计划经济学家的集白,因为这种分析将一个市场的繁荣完全归功于顶层设计而非自然规律,这是一套连政治经济学派都不再相信的方向。
承认任何企业都只能进行有限游戏,并意识到无限游戏带来的并不是更高的效率,而是规模不经济,是解决无效垄断的大前提。
无效垄断的无效正是源于其对创新的无法防御。
个人内卷实际上源自行业的内卷
好垄断
通过计算垄断的成本收益来衡量互联网企业的垄断是否合理。
[[拉马·努金]]一位来自 印度 的数学天才,凭借直觉和灵感产生几千个数学公式,经过验证大部分公式是正确的。
卡尔 纯粹数学与应用数学概要,有结论但是没有详细证明 #card
机器学习中的拉马努金式思维训练法 #card
首先,看一下论文的标题,你能否从论文标题猜出作者要解决什么样的问题?能否从论文标题大致猜出作者用的什么方法?
如果上面两个问题的答案是肯定的,那么你可以试图恢复作者方法的细节信息,或者自己提出自己的重建方法来解决这个问题;
如果答案是否定的,那么请去看论文的摘要,那里会给你提供更多的信息,再次回答上述两个问题。
如果看完摘要,两个问题的答案依然是否定的,那么可以去看下论文里面的方法图示,之后再次问自己上面两个问题。
如此迭代,像慢慢拼出一副拼图一样,逐步释放给自己更多信息,争取让自己用最少的信息量重建出作者的方法,或者根据已知线索提出自己的解决方法。
然后,到了这一步,你一定已经尝试着猜测着去恢复出你认为作者使用的方法,或者提出了自己的方法。此时你可以去论文里大致看下你猜的对不对,如果猜的不对,问自己下列问题:
你的方法和作者的方法有什么不同?
各自的优点缺点是什么?
哪个更好些?
[[@Item2Vec: Neural Item Embedding for Collaborative Filtering]]
标题 #card
使用神经网络训练 Item Embedding
CF 使用 Rating Matrix 数据
分析可能的技术方案
无监督方法
<item1+,item2+,item->
item1 和 item2 来自同一用户序列中里的商品,item- 为随机选择负例。item1 和 item2 的分数要高于 item1 和 item- 的分数摘要#card
如何判断哪个工作有价值? #card
首先,先看实验部分,如果效果有特别明显的提升,那么这篇论文绝对是值得看的,无论它的方法是简单还是复杂;
而如果效果有提升但是幅度不是很大,我觉得这种工作可看可不看,可以加上一个辅助判断。
辅助判断是:如果方法比较复杂(除非整个思路框架非常新),建议直接扔了不看,有这时间不如去听会歌放松放松,我估计这不会给你的知识更新带来任何损失;
而如果方法比较简洁,那么看你心情,心情好就看,心情不好就不看。
怎么样,这个标准还是很随性很好执行的吧?不用谢。
[[知无涯者]] 拉马努金在英国处境不佳,一直急于发表自己的两部公式笔记,以期待因此能得到人们的肯定。 #card
[[@刻意练习]] 中提到需要有一位教练,但是在现实中很难每一件事情都能找到指导你的人。作者提出的努马拉金方法给你提供一次对答案的机会。#card
很想之前做作业,然后对答案的过程。
监督学习
假设,建模,求解,优化
功利主义:我之所以遵守诚信原则,是因为 :-> 规则能给我带来好处。
道德功利主义::-> 一个追求功利主义的结果是否符合道德主义。
纯粹的功利主义一定会导致 道德相对主义 :没有什么绝对是对,什么绝对的错。
相对主义是一切罪恶的源头。
善与善之前有冲突。情境主义保持道德主义的判断。
@我的笔记法(借助 Zettelkasten 和 Obsidian)
专业知识笔记
「XXX知识点」
需要单独研究,新建空白笔记。
人文知识笔记
如何解释名词和概念,从阅读中获取新的认知。
不同人对同一个主题的观点是什么?
以[[极权主义]] 为力,我从不同的书中,看到不同的作者对其的描述。
在 [[201912211716-艾希曼在耶路撒冷]] 中,[[汉娜阿伦特]] 说极权主义是,「把个人变成职能行使者和统治机器上的齿轮,将人非人格化处理的制度」
在 [[极权主义的起源]] 一书中,[[汉娜阿伦特]] 更进一步归纳为「极权主义就是将世界上的所有界限抹平,不考虑人的多元性,将人认为是集体中的一员来对待。」
而在 [[历史的终结与最后的人]] 一书中,[[弗朗西斯·福山]] 将近现代国家发展出来的一种有着史无前例的权力的中央制度称之为极权主义。
Zettelkasten
一条笔记只记录一个相关
通过关键字和其他笔记链接
总结
这两年来我越来越意识到我的问题并不是看得东西不够多,而是往往不能理解我所看过的东西。
一方面来随着时间的推移会忘记,
一方面当阅读的时候无法理解所看到的东西时,记忆也就没有那么深刻了。
所以我之后的目标之一便是我要能理解我写下的东西。
相对估值稳定而一致,具体的数额却无比随意。
特朗普
有行动力的传统白种上等贵族
触及民众真实需求
希拉里:民主党
男性精英主义
拜登
杰布布什:共和党
避免媒体牵引方向,媒体的报道做为你的材料,研究他的倾向得出结论。
美国总统选举的白马是什么?为什么是黑马
美国总统选举的局是什么?搅局是什么?
选举人行为,应该遵循什么那些标准?谁说了算?
谁对美国的政治人物更加了解?
美国是谁的美国
我们有关美国的知识,体验,标准从哪里来的?
哪些是思考美国问题的正确方式
从书本出发
经济基础决定上层建筑
生产力决定生产关系
客观存在决定主观认识
中国党派 人民党,美国党派 精英党,没有基层组织
民主党候选人
党员一人一票
每个州有一个超级代表,一个人一千票。精英控制平民的冲动,防止产生社会主义
不会出标准的民主候选人
民主的起源:[[Aristotle]] 政治学
精英民主主义捍卫者
共和党极度保守主义意识形态
少数人的政治
[[@21 世纪资本论]] [[资本论]] 问题的本质:在经济,在收益分配,在生产方式,在生产方式变迁带来的社会政治后果。
如何对数据进行一定的解释
关心议题:经济、移民(有效政策不足)
民主失能?
系统性培养政治冷漠
过度娱乐化媒体
选举人花边新闻
西方选举变得俗不可耐
霸权:实力、规范与观念
塑造知识,影响全球青年观念。认为特朗普不能当上总统
中国应该崩溃
什么时候认为 GDP 不重要的声音出现?中国超过日本
1949后的中国制度优越于明治维新的日本
西德和日本 GDP 超过苏联,所以要改革
修改 GDP 统计口径
意识形态和政治无处不在
收益在国内的分配,成本在国内的分摊方式。美国霸权在全球的收益和成本,在国内的分配因为资本主义制度被扭曲了。正确方式:超额利润部分补贴民众。现实:宣扬中国使用低人权劳动成本抢走了你的工作。政治听从资本。
iphone 在国外生产,获得的收益归属于资本,但是普通民众需要承担工作机会的流失。
占领华尔街,阶级意识
TikTok 转移国内压力?
新自由主义对媒体传播规范,以及新媒体空间解释框架与政治审美塑造能力,在全球有较为长足的发展。建构-塑造-规训
精巧的统治体系
操作系统发展趋势:人与硬件越来月隔离。
媒体离开问题的本质,通过感官寻找解决方案。
经济分配:
5% 充分就业:有就业意愿的人都有工作。
金融危机之后,就业质量下降。救市政策,中产阶级承担成本。
加剧两极分化,对金融资本极度不满。资本通过资金控制传统的白马。
[[民粹主义]]:任何试图无条件满足民众需求的政治主张。迎合中下阶层。不具备可持续性。
认知:个体层次的理解
政治正确与被规训,塑造中产阶级审美观
信仰的市场经济原教旨主义崩溃
[[基督山伯爵]] 欧洲富豪
地主:有自己产业
中世纪流传下来的家族统治
暴发户:笼罩在蒸汽中的一列火车头。有资产泡沫
中产阶级资产来源:储蓄性资产、房子固定资产、投入的资本性收入(理财工具破灭)
对收入或地位低于自身的民众的本能恐惧。多数暴政。
有没有相同的情况?
社会的理想模式应该是什么?正确的社会价值趋向是什么?
如何驯服资本?放任资本会带来整个社会的毁灭。资本在哪里能获得更多的剩余价值。希望在道德-信仰体系克制,政治行为能力的匮乏,与政策审美标准的异化 。
大而不倒,金融资本对国家的绑架。
[[消费主义]] 手机?
经济周期基本规律:繁荣-危机-衰退-萧条
左翼思潮为什么会失败?
关注特朗普现象所代表的美国政治结构的深层变化是什么?
更加自主的去进行思考,而不是满足于媒体提供现成的答案。
思考这些问题的标、立场:
对于中国:希拉里(人权意识形态和价值观)上台短期阵痛,长期利好,特朗普上台短期轻松中期不利,其实现在已经有所变化了。目前来看,都是短期阵痛,长期利好。
中国国家利益
中美关系冲突或者合作
全球收缩,放松同盟军事管制
知识资产
知识管理
[[知识管理的误区]]:囤积癖、墙头草、工具控、输出怪
本书分享记笔记的三种方法
用自己的话记笔记
用标签为笔记分类
通过回顾持续刺激
卡片笔记的四个特点
原子化
标准化
网络化
动态化
[[Dozen/如何复盘]] 《陈云文选》关于如何才能少犯错误的主要方法可以概括为三个: 交换 、 比较 、 反复
交换 #card
交换正反两面意见,让自己的视角更全面。
值得注意的是,收集反对信息后,如果这些信息正确就改进,如果错误就驳倒。
只有这样,一个人的认识才能更接近客观事实。
交换是为了 更全面地认识事物 ,比较则是为了更好地 判断事物的性质 ,用来了解事物的发展程度、要害和本质。
重复上面两步,既是 认识 的过程,也是 实践 的过程。在此过程中,坚持 正确的 ,改进 错误的 。
高亮后如何自我提问,增加笔记的摩擦力
问问我为什么感觉不错
问问自己将来能在哪里用;
问问自己是否见过或做过类似的事情。
“这个观点和传统观点有什么不同”
“我对这个观点有什么疑问”
“这个方法适用于什么场景下的什么问题,不适用于什么场景下的什么问题”
如何记录情绪 [[Life Log]]
精练笔记
Light 对邓小平时代的精练笔记
摆脱意识形态的束缚;
承认令人不快的事实;
实践是检验真理的唯一标准。
[[Q - 笔记需要分类吗?]] 分类是让自己更容易找到信息,适合自己的分类是从笔记中生长出来的。
分类的目的是什么?答案很简单,分类是为了让“自己”更容易找到信息,而不是别人。换句话说,对于别人来说有用的分类方式,可能对我们自己并不适用。
到这里你可能觉得有点[[反常识]]。的确,过去提到标签或分类,我们总觉得应该借鉴某种客观的分类体系,然后把笔记都分门别类地放进去。就像在盖图书馆之前,我们就应该知道分成多少区域,在盖医院之前,我们就应该知道分成多少科室一样。
但前面的案例告诉我们:
第一,不要机械照搬外部的分类,因为这并不符合你自己的提取习惯——就像大多数人不会根据图书馆的分类方式来整理自己的书架。所以大胆一些,根据你的主观需求为笔记打标签就好。
第二,不必试图一次性规划好标签分类体系,而要允许它自然生长出来。刚开始打标签的时候,或许你会觉得有点乱。但是别担心,你的标签体系会随着认知加深而逐渐生长出来。
基于[[PARA]]设计出[[IARA]],把笔记分为个人的领域、兴趣、项目、归档四大部分。
怎样更好的回顾记录?
每次记录新的笔记时,重新熟悉相关的笔记,然后再记录新的内容。 #card
同步思考一些问题 #card #incremental #depth-1
这条笔记和我最近遇到的什么问题有关? #card
关于这条笔记,我可以补充什么新实践或新思考? #card
这条笔记和其他哪条笔记有关系?
待整理
如何提出有价值的问题
重要的不是答案,而是一个好问题。而所谓“好问题”,其实源于你自己,源于你的经历、你的偏好、你的期待、你的兴趣……只有拿着自己的真实问题去搜集信息,才算掌握了获取信息的主动权。
2024-01-01 09:24:02
[[项飚对于工作意义的定义]]
2024-01-01 09:24:49
主动监控,保持质疑
2024-01-01 09:25:01
方法一
获取优质信息的第三条原则叫作:主动监控,保持质疑。它的意思是,对于搜集到的信息,无论是书里的名言也好,还是专家的建议也好,我们都不要被动地默认接受,而是要主动在大脑里增加一道监控程序,对它们保持质疑。
你可能觉得,这个建议说起来容易,做起来难,毕竟我们注意力有限,不可能监控所有信息。针对这一点,我有个小技巧分享给你,你可以提前设置一些“触发词”,重点监控这些词语,比如“绝对”“肯定”“一定”“永远”“所有”……当这些“言之凿凿”的词语或语气出现的时候,你就要多问一句:“真是这样吗?”让自己重新审视信息。
2024-01-01 09:25:26
除了提前设置“触发词”,如果你想更进一步,我还有第二个技巧分享给你。面对来自他人的经验,你可以设置一个监控问题:这个经验的完整逻辑是什么?适用场景是什么?只需多问一句,你就有可能收获完全不同的信息。
一个典型使用场景是金句。比如,巴菲特有句著名的话:“别人贪婪时我恐惧,别人恐惧时我贪婪。”这句话有道理吗?有,逆向思考往往有意外收获。但它适用于所有场景吗?并不。因为别人贪婪并不意味着高估,别人恐惧也不代表着低估。如果我们只是记住这句话,然后据此去投资,大概率也是血本无归。
而如果我们能多问一句:这个经验的完整逻辑是什么?就可能得出如下答案:
1.价格(市场情绪)和价值是两个独立值;
2.市场情绪往往极端演绎,于是价格也总是偏离价值;
3.当市场情绪极端时,不妨试试逆向思考,或有机会;
4.别人的贪婪和恐惧,只是一种信号,而非标准。
你看,在他人分享的经验里,通常隐藏了许多背景信息及其适用场景。因此,我们不妨多问一句,获取更多有价值的信息。做到了这一点,我们就不会止步于看似深刻的金句或经验,而是能够主动切换场景,不断跳出自己的立场,降落在粗糙的地表上,看到其他视角的考量,从而打破信息茧房。
2024-01-01 09:29:43
学习观里面类似的是什么
削减利用你情绪的信息源
第一个方法叫作,削减利用你情绪的信息源。
什么是“利用你情绪的信息源”?比如,“震惊!会被 ChatGPT 取代的 30 个岗位,其中有你的吗?”类似这种标题的信息,我们每天或多或少都会看到一些。
2024-01-01 09:30:22
削减让自己过于舒适的信息源
除了削减利用你情绪的信息源,削减信息源的第二个方法叫作,削减让自己过于舒适的信息源。
这一点是我们从好友 Mien 身上获得的启发。有一次和 Mien 聊天,她说她会取关一些让自己读起来很舒服的公众号。这让我们很好奇,既然读得舒服,那就继续读呗,为何要取关呢?
她回答说:“觉得舒服,意味着这些内容或观点你已经很熟悉了,但同时也意味着没有增量信息,只是情绪按摩。如果接触的信息源都是让自己很舒服的,那么长期下来,我们就会疏于关注舒适圈以外的信息,培养出某种惰性。”
2024-01-01 09:31:10
对于做笔记方法类笔记的排斥,大部分原理都知道,没有找到合适自己场景的方法
怎么识别“让自己过于舒适的信息源”呢?一个简单的办法是,问自己一个问题:这则信息能让我获得什么样的新知或启发?比如,你读了一篇文章,标题叫作《高效能人士都会关注的五个细节》或者《上进的人都在遵循的十条法则》,这时候问问自己:这篇文章给我带来了什么新知或启发?如果你发现,这些信息只是让你觉得“没错,我就是这样的高效能人士”或者“你看,我就是这样上进的人”,它大概率属于让你过于舒适的信息源。
2024-01-01 09:31:33
削减信息源的第三个方法叫作,削减缺乏具体事实的信息源。
何谓事实?事实指的是客观存在,并可以被证实的信息或情况。比如“水在标准大气压下达到零度会结冰”,这就是一个事实,不受个人感情、偏见或观点的影响。但许多时候,我们获取到的信息只是伪装成事实的观点而已。比如,许多对大公司、知名产品和名人进行分析的文章中,都充斥着大量的观点。这些文章搭配一些春秋笔法,让人读起来就像看小说一样过瘾,但实际上并没有提供任何事实。我们如果把这样没有依据的观点当作事实,就会造成许多决策失误。
2024-01-01 09:32:06
那么如何判断信息源中是否含有事实呢?你可以观察里面是否包含具体且长期的实践,以及作者的判断是基于上述实践,还是粗暴的主观判断。
2024-01-01 09:32:43
削减信息源时,请记得一句话:越低级的信息,越是充满了主观判断和结论,以此降低接收者的思考难度;而越是高级的信息,越是充满客观事实,尽量避免下判断,将判断的任务交给接收者。
2024-01-01 09:34:39
什么是一个好问题,为什么每次让你提问,你觉得自己的问题不行
那什么才叫一个好问题呢?举个例子。你想知道如何在海外推广产品,不要直接问对方“你们怎么做海外推广的啊”。你可以问得更具体一些,甚至可以先分享一些自己的观点和经验,比如:“你们在海外推广产品时,主要用了哪些付费推广渠道、哪些免费渠道?我们的做法是……你们怎么看?”一个好问题,一方面要能提供丰富的背景信息,另一方面要有清晰的边界,越具体越好。
2024-01-01 09:35:21
把他人作为信息源时,如果你想获得更优质的信息,还有三个要点需要注意。
第一个要点是,听实践者讲述事实时,留意他在叙述过程中提及的细节。
你会发现,其实真正了解大局的实践者并不会天天谈论宏大的叙事。他们充分了解一个又一个看似枯燥的细节,并且通晓这些细节之间的微妙关系。如果有兴趣,你可以去读一读巴菲特每年写给股东的信。你会发现,他不是靠着踢踏舞、看报纸和喝可乐就成了股神,而是对整个投资市场了如指掌。他从枯燥的细节中反思过去,并挖掘新机会。而对我们来说,这些充满细节的事实信息,远比那些充满戏剧性的宏大叙事更有启发。
2024-01-01 09:41:59
为什么问不出好问题,视角太少?
培训过程中我就发现,面对同样的信息,一个人拥有的视角越多,那么他收获的有价值的知识就越多。
比如在学习如何使用关东煮机器时,如果只是带着店员视角,那么你获得的可能只是如何给机器开火、如何清洗机器之类的知识;而如果你能同时为自己预设一个经营者视角,那么你就可以通过观察和提问获取更多信息。例如关东煮食材保质期往往比较久,这样报损率才低;不同食材在滋味上要能相互促进,有的负责放味,有的负责吸味,这样做出来才好吃;机器的操作步骤要非常简单,不要求什么厨艺,这样才能降低招人的难度……
不仅如此,你还可以从供应链管理人员的视角看,关注每种食材的供应者是谁,成本有多少;你还可以从人力资源管理的视角看,关注如何采用更标准化的机器来降低培训难度,等等。
你看,面对同样的信息,如果只拥有店员这一种视角,那么你只能获取极其有限的知识;而如果能从多个视角来观察和理解眼前的信息,你就能获得N份知识。
你可能会觉得,拥有多元视角固然有益,但转换视角并非易事。确实,就像并不是会背微积分公式就能熟练应用那样,转换视角也需要我们不断练习。以下是三种常见的练习方法,希望可以帮你从0到1,学会转换视角。
2024-01-01 09:43:39
方法一:考察概念
第一种转换视角的方法是“向下看”,挖掘“地表以下”的信息。其中很典型的一种应用叫作:考察概念。
关于考察概念这件事,Light 提过一个观点:“即便是简单的信息,一旦对其进行概念层面的考察,我们也可能会发现,自己其实对它一无所知。”
2024-01-01 09:44:12
向下看的例子,如何正确认识gpt的方法
比如 2023 年年初,许多人都在探讨“ ChatGPT 是否会替代自己的工作”,相关信息多如牛毛。如果只盯着问题的表面,我们心里肯定恐慌。但其实在哲学家维特根斯坦看来,我们应该先问“是什么”,再问“是不是”。
维特根斯坦所说的“是什么”和“考察概念”很像。如果仔细考察上述问题里的概念,你会发现许多模糊的地方:
1.“ChatGPT”指什么?是指 ChatGPT 这个应用,还是指 ChatGPT 背后的GPT-3、GPT-3.5或者更先进的技术?是专指以 GPT 为代表的 LLM(大语言模型),还是泛指 AGI(通用人工智能)?
2.替代什么样的“工作”?是文员、律师、作家、教师?还是程序员、导演、记者?这些工作有何异同?
3.以什么样的“方式”替代?是直接碾压式替代,还是渐进式替代?是彻底替代,还是只能替代一部分?
4.……
如果不能清楚地界定这些概念,那么一个人就算花再多精力去解答会不会被替代的问题,也很可能是缘木求鱼。
让我们继续聚焦于 GPT 这个概念,GPT 本身是 Generative Pre-trained Transformer 的缩写,指一种特定的大语言模型。这意味着它并不是先知,也不是搜索引擎,而是根据概率让所有的对话能“继续”下去。了解到这一点后,我们就不应该指望 2023 年年初的 GPT 能够给出大量靠谱的决断,反而要考察它给出的答案是正确的还是胡编的。
进一步考察,我们会发现 2023 年年初的 GPT 更像是一个聪明的本科大学生,可以像助理一样帮我们提供参考信息,但不能独立完成工作。考察到这一步,我们也就不再那么恐慌了,而是要思考:这么好的助理能帮我做什么事?
你看,如果我们不搞清楚关键概念就行动,比如马上创业,all in(全部押进)LLM,或者立即报名 ChatGPT 培训班,看似努力,却容易迷失其中。而如果提前把概念考察好,我们就会发现更多背后的信息,发现一片新天地,提出更多好问题。
2024-01-01 09:48:10
方法二:寻找范式
第二种转换视角的方法是“向上看”,抽象一层,寻找可迁移的范式。
何谓范式?简单来说就是各个领域里被大家公认的观念、理论或方法。面对同样的信息,如果能带上“寻找范式”的视角去看待,你会发现,很多信息看似和自己关系不大,却也能带来宝贵的启发。
2024-01-01 09:51:01
方法三:顺藤摸瓜
第三种转换视角的方法是“向四周看”,找到与你关注的信息相关联的关键线索。其中一种典型应用就是顺藤摸瓜。
我曾经有个不好的读书习惯,即讨厌看后记、附录、引文、注释等“边角料”信息。后来我发现,无论是书、演讲,还是文章,其中的每一条信息都不是孤立存在的,而是嵌在一个更大的知识网络里。而连接整张网络的,正是那些看似不起眼、曾被我看作“边角料”的信息。面对这些信息,如果能顺藤摸瓜去探索,我们会有更多收获。
除了附录、引文等信息,我还会特别留意自己所关注的信息中出现的“人”“概念”和“事物”,把它们作为线索,顺藤摸瓜,探索更多相关信息。
2024-01-01 09:52:23
接下来,我们就来为你分享记笔记或知识管理最重要的两条心法:第一,以我为主;第二,持续不断。
2024-01-02 20:19:04
记笔记的出发点,在于解决现实问题。而现实问题的提出,则需要从自己所处的环境、所做的事情出发去寻找。好的问题像北极星,能指引我们不断探索答案。而没有问题的各种积累,则像毫无目的地垒墙,让我们白白浪费力气。
截至今天,flomo 的开发还在继续,我当年提出的那个问题(如何让 flomo 为更多人带去有价值的帮助)也还没有最终答案。但正是这个长期而具体的问题,像北极星那样不断推动我继续向前,不断学习和实践。
2024-01-02 21:04:22
如何坚持写四年和算法相关的知识库?
自 2017 年起,我开始维护一个关于产品的知识库——“产品沉思录”,分享与产品有关的文章,每周更新一次,七年间几乎没有中断,从未重启。这七年的持续积累,为我带来了什么价值呢?
·不但帮我解决了工作上的许多问题,还促使我整理出好几套对外分享的课程;
·让我有机会认识了许多各行各业的朋友,拓展了书本之外的知识;
·有的知识间接塑造了 flomo 的理念,有的知识成为写作本书的原始素材……
其实我最想跟大家分享的不是这些价值,而是一件亲身经历过才知道的事情——这些价值不是在我做“产品沉思录”几天或几个月之后就显现的,而是从第四年开始,才陆续涌现出来。也就是说,如果没有前三年持续不断的积累,那么我也无法享受这样的知识复利。
2024-01-02 21:08:11
控制自己的主观意愿
个例子。如果想通过记笔记积累知识,那么我们就不该以完美的自己为标准,设置一个难以企及的目标,比如要求自己日更几千字,或者每年读上百本书。相反,我们应该设置上限,让自己每天记录或读书的数量尽量不超过某个值,比如每天写三张卡片或者读两页书——就像阿蒙森团队每天前进的距离一样,以最差的状态为参照来设计目标,留出余裕。这样,在精力不够的时候,我们可以因为目标不高而继续坚持;而在精力充沛的时候,也不至于一下子耗尽热情。
你看,“确定好目标之后,应该竭尽全力去完成”似乎是大多数人的共识,但我们做许多事情都是刚开始热情高涨,坚持不了多久就草草收场。当达到一个目标需要的时间足够漫长时,“冲锋”并不可取。就像我们要减肥,不能指望连续锻炼一星期就把体重减下来——这样做除了会让我们产生强烈的逆反心态,不会带来任何其他好处。而设置上限,就是让我们不要轻易去满足那些“脉冲式”的欲望,这样我们才能保持欲望的小火苗,有持续的动力去不断积累。
商起源
《诗经·商颂·玄鸟》对契降生的描写是:“天命玄鸟,降而生商。”
《诗经·商颂·长发》则是:“有娀方将,帝立子生商。”
为什么需要祭祀
以色列考古学家吉迪·谢拉赫认为,在“早期国家”或“复杂酋邦”阶段,社会开始变得更复杂,王权刚刚出现,统治者发现自己的统治体系还不够发达,急需借用一种强大的机制来维护权力,从而导致人祭宗教和战俘献祭行为的产生。
为何战争与人祭可以铸牢新兴王权,吉迪却没有多谈。
结合前文对新石器末期到中商这上千年人祭历程的梳理,本书认为可以从两方面来理解:
理论层面,王的大量献祭(意味着他获得神的福佑)是王权融合神权的标志;
现实层面,战争让本国族的民众团结起来一致对外,从而更巩固了王的权力。
大都无城
新宫殿区坐落在洹河弯内侧,今安阳小屯村北,“殷墟博物苑”所在地。
营建新宫殿时,武丁抛弃了之前的“城池”都城模式。他可能不相信商朝都城会受到外来威胁,认为与其耗费庞大的人力夯筑城墙,不如主动对外扩张。武丁规划的宫殿也不再是封闭的大院落,而是若干座彼此独立的大型建筑,皆有厚达1米的夯土地基、木柱框架结构和厚重的夯土墙,足以抵抗地震,且分散的单体结构也更利于防火。
商王朝留下了众多遗址、文物以及累累白骨,那么,这个身居华夏文明源头的王朝是如何运作的?商王如何解释自己的权力来源?他的臣民对此又是如何理解的?
层累地造成的中国古史
《易经》里为何会有这么多周人生活的真实记录?这便涉及周昌创作《易经》的目的:研究各种事物背后的因果联系,最终建立一套翦商的理论和操作方法。
先说最古老的所谓伏羲“八卦”。有四对卦,分别是乾和坤,坎和离,震和艮,巽和兑;各有代表图案,被称为“卦象”,由三根表示阴阳的“爻”组成,一根直线代表阳爻,两段半截的线代表阴爻。
东周时的学者说,这是宇宙间的八大元素:乾代表天,坤代表地;坎代表水,离代表火;震代表雷,艮代表山;巽代表风,兑代表泽(沼泽)。(《周易正义·说卦卷九》)至于伏羲或者周昌时代的人是不是这么理解的,就不好说了。
再来说六十四卦。卦象由两个八卦上下重叠组成,一共有六十四种,都有六个爻。假如是两个八卦的乾叠加,就仍叫乾卦,以此类推。但不一样的八卦互相叠加,就需要起新的卦名了,比如,震下坎上,叫屯卦。
六十四卦的每个卦都有一条简短的解说词,这被称为“卦辞”;相对的,卦里的每个爻也都有一条“爻辞”。概而言之,《易经》是由六十四卦的卦名、卦象、卦辞和爻辞组成的。
《易经》并非文王专门编写的算命教材,而更像是他自己的练习簿,所以内容驳杂,有大量的私人琐事。从萌生翦商之念始,文王就反复将其代入和推算,并随时验证、修订和增补,希望总结出一套最精确的占算方法,而最终目的,当然就是在消灭商朝的战争里运用这套预测技术。
从现代人的视角看,文王周昌为翦商而推演的“理论”,或许可以分为以下三个层面:
一,宗教的,即他对商人“上帝”概念的重新诠释和利用。文王的身份类似犹太教的摩西、伊斯兰教的穆罕默德,身兼部族政治首领与神意传达者两重职能。
二,巫术的,即他在《易经》里对商朝施展的各种诅咒、影射与禳解之术。在上古初民时代,这些行为往往和宗教混杂在一起,不易区分。
三,理性的,或者说世俗的,即各种“富国强兵”的策略和行师用兵的战术。
从考古来看,商朝一直繁荣的人祭和人奠基到西周建立时却戛然而止。文献和考古两相对照,本书推测,这场重大变革发生在周公辅政时期。
这场变革几乎从未被历史文献提及,甚至商代无比“繁荣”的人祭行为也没有被记录。那么,周人为何要掩盖商人的血祭宗教,以及这个宗教是如何被消灭的?
商人的血祭宗教是被周公终结的,但周公所做的远不止于此,他还要抹杀关于它的记忆,防止它死灰复燃。
而忘却是比禁止更根本的解决方式。为此,首先必须毁灭殷都,拆分商人族群,销毁商王的甲骨记录;其次,自古公亶父以来,周人曾经为商朝捕猎羌俘,这段不光彩的历史也应当被永久埋葬;再次,长兄伯邑考在殷都死于献祭,他的父亲和弟弟们还参与并分享了肉食,这段惨痛的经历也必须被遗忘。
成王亲政第五年,第二次东夷战争结束后,成王和母后东返,途中经过成周洛阳小住了一段时间。在这期间,有一位贵族曾获得成王的接见,之后更是专门制作了一件青铜尊,这就是因“宅兹中国”的铭文而著称于后世的“何尊”。这也是目前发现的“中国”一词的最早记录,它在当时的意思是“中原之地”。
周社会是典型的身份世袭制,周王任命朝廷高级官员(卿)的选择范围很小,基本由十几个显赫的家族世代占据着朝廷主要官职。而且,官职本身并没有薪俸,全靠自家封邑收入,做官只是可以给他们提供获得更多封邑的机会。各诸侯国内部的权力结构也类似,但规模要比镐京朝廷小很多倍。
就这样,随着统治阶层的繁衍,周朝特色的贵族制度逐渐得以形成,其中,最首要的是“宗法”家族制,核心则是嫡长子一系的独尊地位。
一,周朝各姬姓诸侯(被分封的王室亲属)对周王的效忠服从,是家族兄弟(及其后人)对嫡长兄(及其嫡系后人)的服从。
二,在各诸侯国内部,太子之外的公子被分封为世袭大夫,大夫再繁衍和分封出“士”。
三,非周族的异姓诸侯和贵族则通过婚姻关系被纳入家族结构中。周王尊称同姓诸侯国君为“伯父”,称异姓诸侯国君为“伯舅”(当然必须是曾经和周王室有过联姻关系的),伯代表排序。
这套基于血缘宗法制的贵族等级和封建政治秩序,周人称之为“礼”。不同等级的贵族使用相应的车马、住宅、衣服、乐器、玉器、酒器和食器组合,丧礼和随葬品也以此类推。各种典礼仪式上,比如朝见天子、祭祀和宴会等,入场顺序以及站或坐的位置由相应的等级身份决定。
典礼可以在不同层次举行,如诸侯国或大夫家,但基本原则一致。贵族的冠礼、婚礼、丧礼和祭礼也都有各等级的标准规范,几乎所有礼仪场合都有乐队伴奏,而乐队的规模和演奏的乐曲也都有相应规范。所以,周人贵族文化又被称为“礼乐文明”。
当然,春秋的人祭回潮并未成为主流,可能有以下两个原因:
其一,战国时期的社会重组和政治变革。由于列国兼并战争的威胁日渐增加,各国都进行了变法运动,废除贵族制,实行君主集权和官僚制,国家的首要目的是富国强兵,在国际竞争中获胜。而这需要官僚机器用理性、功利的方式管理社会,人祭自然属于不可容忍和必须取缔的行为。
战国初期魏国西门豹治邺的史事,呈现的就是新兴官僚政治和民间传统文化的碰撞。当时邺县还有“为河伯娶妇”的风俗,本质上是把少女奉献给漳河水神的人祭行为。邺县在殷墟以北15公里,所以这种风俗很可能是殷商宗教的残余。到西门豹时代,普通的邺县人已经不愿为祭祀承担如此高昂的代价,只是苦于无法对抗地方精英“三老”和女巫联手主导的民间权力结构。为此,时任邺令的西门豹表面上遵循本地宗教理念,实际却找借口把女巫及其弟子和三老先后投入了漳河,从此,这里再无人敢复兴人祭宗教。
其二,以孔子为代表的儒家逐渐兴起,开始提倡仁政和爱人。当时还有制作陶人俑随葬和埋入祭祀坑的习俗,结果遭到孔子诅咒:“始作俑者,其无后乎!”孟子对此的解释是,孔子讨厌这种模拟用人殉葬的行为,“为其象人而用之也”。(《孟子·梁惠王章句上》)和多数人不同,孔子的职业是整理上古史的学者,他很可能是在晚年破解了商周之际的一些隐秘往事,担心用陶俑随葬会唤起人们对人祭时代的记忆。
后世人对周公的认识,有事功和制度文化两方面:事功,主要是周公辅佐成王、平定三监之乱,为西周王朝奠定开局;制度文化,主要是周公“制礼作乐”,确立西周的政体,包括诸侯列国分封格局和贵族等级制度。在考古发现商朝的遗址与人祭文化之前,人们对周公的理解只能达到这种程度。
为了填补人祭宗教退场造成的真空,周公发展出了一套新的历史叙事、道德体系和宗教理念。这主要体现在《尚书》的几篇诰命中:
一,淡化商人对“帝”的崇拜。在商朝末期,“帝”已经和商王身份重叠,商王具有“帝”的神性。但周灭商后,王已经不能身兼“帝”之名号,对周人来说,帝在高高的天庭之上,不会化身为世间凡人。
二,为减少神界对现实的干预,周公会尽量用“天”的概念来代替“帝”,因此,上帝发布的命令(“帝命”)变成了含糊的“天命”。
天命的观念在后来的中国一直存在,但人们已经忘记了它的缘起。“天”无形无像,无言无行,不容易被赋予拟人化的个性。在《诗经》里,上帝曾频频给文王下达命令,如命令文王攻打崇国,武王灭商据说也是来自上帝的意旨,但后世周王已经无法接收神界的具体指示,所以改称为“天命”后,它变成了一种更为抽象的、近乎隐喻的道德规训。
当然,周公时代还不可能有科学主义的无神论认知,神界即使被放置得比较远,也不会和王朝政治完全绝缘。比如,西周的王就被称为“天子”,也就是天的儿子,而这是连商代甲骨文也没有的词,但无论怎样,“天”还是过于含糊,周人及其以后的历代王朝从未给“天子”增加更具体的神性定义与功能。即便秦始皇使用“皇帝”尊号,其直观用意也是强调自己和六国之王的不同,虽有强调王者尊贵的这一层神性之意,但也使“帝”落入凡尘,并不比“天子”概念更神秘。
三,周公宣称,王者应当爱民、德治和勤勉,这样才会受到“天命”青睐,长寿享国;如果王者残暴对待庶民和小人,天命就会转移到更有德的候选君王身上,从而改朝换代。
因为周公掐断了神对人间的直接干预,这意味着华夏世界不会再有主导性宗教,以神的名义颁布的道德律条(如摩西十诫、佛家五戒)也无从产生,所以周人必须另行寻找一套用于世俗生活的道德原则。这种世俗道德的原理,是“推己及人”,也就是把自己放在他人的位置上考虑,从而决定自己对待他人的方式。
“六经”具体是指《诗经》《尚书》《仪礼》《乐经》《易经》《春秋》。其中,《诗经》《尚书》《易经》包含大量商周易代时期的史料。在“六经”成书之前,社会上传抄流行的主要是单篇文章,真伪混杂,质量良莠不齐。为此,孔子选择了最可信且符合周公精神的汇编成书,而不符合这两点的篇章就逐渐失传了
《诗经》记载了周族从姜嫄、后稷以来的多篇史诗,包括周族早期历史、文王确立翦商大计、武王的灭商战争、周公平定三监叛乱以及对商文化的改造等,属于经过周公修订的官方正式版本。
书是文献之意,《尚书》就是古代的文献。按时间顺序,《尚书》分为《虞书》(尧舜禹时期)、《夏书》、《商书》和《周书》。在收入“六经”之前,《尚书》中各篇都是单行本,基本规律是越古老的越不可信,内容大都是西周及之后的人按照周公重写上古历史的精神,虚构了尧舜禹和夏商时期的很多帝王故事和讲话稿,基本是周公式的道德说教,不具备史料价值。当然,也会有个别真正的商代文献,比如盘庚迁都的讲话稿,内容上和周公精神抵触不大,或者已经被周公授意删削过,所以保留了下来。总之,这些真真假假的篇章被孔子分别收入了《尚书》的《虞书》《夏书》和《商书》部分 。
当然,孔子编辑“六经”的作用不止于此,其中还保存了从西周创立直到孔子时代的文化成果,这就是周人贵族社会的诗歌(《诗经》)、礼俗(《仪礼》)和历史(《春秋》)。
概而言之,周公时代变革的最大结果,是神权退场,这让中国的文化过于“早熟”;战国时代变革的最大结果,是贵族退场,这让中国的政治过于“早熟”。而在其他诸人类文明中,神权和贵族政治的退场,都发生在公元1500年之后的所谓近现代时期。
[[@我的笔记法(借助 Zettelkasten 和 Obsidian)]]
为了快速获取知识而读书
为了认识这个世界而读书
实践和读书矛盾吗?
[[人类理解论]]
读书获取理论,用理论指导实践。
方法论:从实践中获取经验,然后对经验反思总结和提炼。
[[@如何阅读一本书]]
在结合自身的经验,我发现我经过这样三个阶段:
在最开始的时候不知道看什么,漫无目的的阅读,没有作笔记,也没有写评价,最后什么没有收获
然后开始有目的的阅读,比如喜欢看某一位作者的书,比如 [[密尔]],或者是为了了解一个主题去阅读相关的书籍,比如去看 [[哲学]],又或者只是为了学习一门技术比如去读 [[Spring 知识点]],这个阶段会围绕同一个主题进行大量的阅读,通过大量的阅读积累对其的认识,并在自己心里产生基础的概念
在有了一定的基本知识体系之后再去阅读是为了接受新的、不同的思想,并将其拆解开放到自己的知识体系中。
如果以哲学家为例,在了解了其基本观念之后,逐渐添加我是否支持其观点,有没有反驳他的观点,我能不能找到佐证。
又如果是一门技术,新产生的技术解决了之前的什么问题,又会产生什么新的问题,这个技术细节为什么要这样实现,有没有更好的实现方式。
rss 源是一种被动接受信息的工具。
搜索,总结体系,实践,放到知识库中。
[[主动学习]],有针对性的获取信息,不仅可以避免自己陷入信息的汪洋,也可以扩展自己的认知边界,将新的、不同的理论纳入到自己的知识体系,不断地完善自己零散的思维模式。最关键的是,当不断阅读自己的感兴趣的内容时,会自发的产生兴奋的状态,并且可以不断往外延伸出不同的主题。
现在是不是由过去所决定的?
弗洛伊德 原因论 : 现在是由过去所决定的 , 而过去无法改变。
+ 反驳 :-> 如果过去决定一切,而过去又无法改变,那么也就说明现在无法改变。
[[阿德勒]] 目的论 #card
人际交往产生自卑感和自卑情节
自卑感:一个人学历不高,如果他认为自己学历低,所以要加倍努力。
自卑情节:一个人认为自己之所以不成功,是因为自己学习低。
[[课题分离]]
共同体
[[人生是一连串的刹那]]
阿德勒主张目的论,其心理学分析路径就抛开了人过往的历史包袱,着眼于眼前、现在,从而把解决问题的办法导向积极的、光明的一面。
越自负的人越自卑
哲人:而且,对自己的学历有着自卑情结,认为“我因为学历低,所以才无法成功”。反过来说,这也就意味着“只要有高学历,我也可以获得巨大的成功”。
青年:嗯,的确如此。
哲人:这就是自卑情结的另一个侧面。那些用语言或态度表明自己的自卑情结的人和声称“因为有A所以才不能做到B”的人,他们的言外之意就是“只要没有A,我也会是有能力、有价值的人”。
青年:也就是说“要不是因为这一点,我也能行”。
哲人:是的。关于自卑感,阿德勒指出“没有人能够长期忍受自卑感”。也就是说,自卑感虽然人人都有,但它沉重得没人能够一直忍受这种状态。
哲人:不是这样。特意自吹自擂的人其实是对自己没有自信。阿德勒明确指出“如果有人骄傲自大,那一定是因为他有自卑感”。
青年:您是说^自大是自卑感的另一种表现^。
哲人:是的。如果真正地拥有自信,就不会自大。正因为有强烈的自卑感才会骄傲自大,那其实是想要故意炫耀自己很优秀。担心如果不那么做的话,就会得不到周围的认可。这完全是一种优越情结。
青年:……也就是说,自卑情结和优越情结从名称上来看似乎是正相反的,但实际上却有着密切的联系?
夸耀不幸
哲人:密切相关。最后再举一个关于自夸的复杂实例。这是一种通过把自卑感尖锐化来实现异常优越感的模式。具体就是指夸耀不幸。
青年:夸耀不幸?
哲人:就是说那些津津乐道甚至是夸耀自己成长史中各种不幸的人。而且,即使别人想要去安慰或者帮助其改变,他们也会用“你无法了解我的心情”来推开援手。
青年:啊,这种人倒是存在……
哲人:这种人其实是想要借助不幸来显示自己“特别”,他们想要用不幸这一点来压住别人。
青年:的确如此。
哲人:通过这种方式,我就可以变得比他人更有优势、更加“特别”。生病的时候、受伤的时候、失恋难过的时候,在诸如此类情况下,很多人都会用这种态度来使自己变成“特别的存在”。
青年:也就是暴露出自己的自卑感以当作武器来使用吗?
哲人:是的。以自己的不幸为武器来支配对方。通过诉说自己如何不幸、如何痛苦来让周围的人——比如家人或朋友——担心或束缚支配其言行。刚开始提到的那些闭门不出者就常常沉浸在以不幸为武器的优越感中。阿德勒甚至指出:“在我们的文化中,弱势其实非常强大而且具有特权。”
Who
Why
学习精英阅读的方法和技巧
了解别人的阅读经历
What
为什么要读书
网络上的信息不具备系统性。
网络上无法获得涉及事物本质的深层次的知识。
能够理解他人情绪、体谅他人的人,绝不会贸然做出盲目的判断,首先会努力去理解现场和对方的情况。
How
如何挤出时间来读书
最好的办法就是尝试在不同的时间就寝和起床,以了解自己最低程度的睡眠时间。建议大家在不影响睡眠的基础上,创造读书的时间。
在时间表中添加读书时间
只在有需要时读书:30 岁之前读 300 本书,之后每年读 50 本书。
用社交网络召集读书伙伴:设置 deadline 和其他人分享
如何专注读书
坚持读完一本书之后再阅读下一本书 why 主题阅读时如何解决?
买书之后即刻开始阅读
不在阅读时做笔记
即使有不理解的地方,也不要重读:阅读关键在于不重读。就是说,即便有不理解的地方,也不要翻回去重读。比起重读,把握全书的主旨更为重要。
读完之后立即整理笔记
[[A4 纸整理笔记]]:将A4纸横放,左上角写主题,右上角写日期,每页写4~6行,每行写20~30个字。在一分钟内将想到的事情全都写在纸上,每天写20~30页纸。
言之有理的内容,表达出色的内容,体现作家洞察力于智慧的内容
[[读书档案]]:每月读 4 本书,一年就可以写出 48 篇,集中放在一个地方保存。
读这本书的目的
读书后的感受
阅读后会采取哪一些行动
3 个月之后要做些什么,有什么样的改变?
读书后写博客:限制读书时间,用更多的时间输出
极简方法:确定题目后,思考文章的内容和结构,再确定小标题。每个小标题需要写1~2行的内容。
确定一个自己最关注的主题。
事先决定文章的提纲。
举出具有代表性的事例。
使用定时器,催促自己完成。
提高信息敏感度
问题意识打造高深见解和洞察力
阅读优秀作家的全部作品
延后阅读畅销书
如何获得演讲的机会
Step 1:以5年后的目标为基础,思考“一年后想要成为什么样的人”“想得到什么样的评价”“想在什么场合做一个怎样的演讲”“演讲的题目是什么”“哪些人曾经做过此类演讲,是否能和他们竞争”等问题,将这些问题总结在一张纸上。
Step 2:在读书的同时,将数十个相关领域的关键词登录到谷歌资讯上,每天阅读相关报道,不断补充自己掌握的知识(第五章会详细介绍)。
Step 3:^列出20个左右要写在自己博客上的题目^。这时,可以参考Step 1中整理的“演讲的题目”,列出一些能够向策划演讲的社区骨干、事务所以及研讨会策划公司的负责人宣传自己的博客题目。
Step 4:每周写1~2篇博客。原本就是自己的专业或相近领域,由于每天阅读一定数量的报道,所以能够不断整理自己所掌握的知识,然后再写成3000~4000字的博客。
Think
Todo
每次读完一本书写一篇[[读书档案]],可以问自己 3WH2T,可能 What 和 How 很难区分。
读书档案是一种写博文的方法
写作和总结的练习
如果没有时间写长文章来分享自己的感受,可以使用 Twitter 进行简短的分享。 豆瓣 300 字评论总结主要内容。
每天至少阅读 1 小时
出版后记
书从多个角度分析了“为何优秀的人再忙也要读书,并且把书中的内容活用在工作和生活中”这个问题。
越是忙碌的人就越能有效地掌控自己的时间,充分思考目的后再开始读书,从而做到“主动读书”。总之,就是要自己做出判断,合理分配时间,找到适合自己的读书法。
在这本书中,作者详细介绍了一套系统、实操性高的读书技巧。不仅能够教你在工作之余如何合理规划时间,确保用来读书的时间,还能教你如何利用A4纸整理书中要点,牢记书中内容。更能教你如何在读过书后建立“读书档案”,设定行动目标,切实地将书中的内容转化为自身的知识。
[[Abstract]]
本田直之,明治大学商学院产业经营系毕业,美国雷鸟(Thunderbird)国际管理研究所经营学硕士(MBA),日本品酒协会认定葡萄酒顾问、世界遗产学会会员、一级小型船舶操纵士。
内容简介:
读书是一种自我投资,而且没有比这更划算的投资,比起投资任何报酬率好的金融商品来说,读书所带来的回报确实更多。阅读术是为了有效率阅读商业书而产生的“技法”。每个月出版的商业书数量超过百本,还有之前出版过的大量书籍,想要追上全部的书籍是不可能的,藉由本书多读的技巧,从大量的书中找出最合适自己的读物,把阅读商业书当成投资,有策略的实行,就能创造出100倍的回报。
[[Attachments]]
杠杆阅读术(即商业书的多读法则)
ls-type:: annotation
hl-page:: 18
hl-color:: yellow
第 一章以 “何谓多读商业书? ”为标题,一方面 提及和速读的差异 ;另一方 面介绍多读的好处, 以及把它当作投资手段 ,将商场上的成功和读书联系在一起等 。
ls-type:: annotation
hl-page:: 10
因为这1500元将来会有好几倍的回报。也就是说, 从我本身的经验以及周围事业成功的人的实际收益来估算的话, 大概会有一百倍的回报。
ls-type:: annotation
hl-page:: 20
hl-color:: yellow
为什么要读商业书
“为何要读这些书”的目的是显而易 见的:是为了要解决案例中出现的公司问题,并想出导引成功之路的对策。所以 ,我打算 只把 “解决企管问题应该知道的要素”印入脑海中, 并因此只选读重要的部分 。更不用说跳过不懂的单词去读, 那样当然阅读速度更快 。 不可思议的是,虽然跳着读,但不仅能思考,还能正确地掌握其中的意义 。
ls-type:: annotation
hl-page:: 24
hl-color:: yellow
如果将实际商场视为运动员的赛场来看的话,则商人读书就好比运动员的练习。也就是说,不读书的商人就像是平时不练习而突然临场比赛的运动员一样。
ls-type:: annotation
hl-page:: 34
hl-color:: yellow
记事本圆梦计划
年幼的熊谷帮父亲搓洗背时, 父亲突然问他:“你知道动物和人的差别吗?”
ls-type:: annotation
hl-page:: 27
hl-color:: green
人类通过书籍 ,在数小时内就能够模拟体验人的一生 。 所以 ,要读书,要活到老读到老 。
ls-type:: annotation
hl-page:: 27
hl-color:: green
在商场上如何应用杠杆效益?
速读和多读差异
多读了几本书, 并不是什么了不起的事 。仅仅做 “ 输入”的动作 ,只不过是自我满足而已 。 如何能输出”使用, 才是决定胜负的关键。
ls-type:: annotation
hl-page:: 39
hl-color:: yellow
速读是训练眼睛的移动法 , 是快速地将整本书读完的一种技术。 如果是这样的话,那么多读就可以说是切掉没用部分的一种技术。提升取舍资讯的能力 ,没有必要的地方不要读,这样才能缩短读书时间 。最后的终极目标是 ,在别人的经验上运用杠杆效益 , 把对实际事务有所帮助的技巧, 变成自己的东西。
ls-type:: annotation
hl-page:: 40
hl-color:: yellow
多读书, 不用全部读完
ls-type:: annotation
hl-page:: 56
hl-color:: yellow
((63f4124c-49c7-42bd-8189-aaefa22444e1))
多读书是投资, 而且是世间稀有的投资(因为报酬率一定是正数) 。 也就是说,投资金额越多 ,赚得 越多; 读得越多,能够回收的金额也变得越多 。尽量多读书才是获利。
ls-type:: annotation
hl-page:: 58
hl-color:: yellow
我知道读书的重要性,但为何要持续一年读400本以上呢?
ls-type:: annotation
hl-page:: 55
hl-color:: green
ls-type:: annotation
hl-page:: 62
hl-color:: yellow
在第二章 “选书就是挑选投资标的”中 ,我将说明多读的实施方法。
ls-type:: annotation
hl-page:: 10
阐述关于书的找法 。虽说多读,但也应该避免随便拿起各种离谱的书,然后白费力气去阅读。尽量多发现好书,并活用在商场上,这是必 要的 。本书不断强调“读书就是一种投资”, 因为这也正是找寻和筛选投资标的的诀窍
ls-type:: annotation
hl-page:: 10
本书将说明符合一般书店、 网络书店等各自特性的策略性活用方法 。
ls-type:: annotation
hl-page:: 11
首先不可或缺的是“有目的地选书”。 如果具备 “自己的人生目标是什么 ” “现在面临的主要问题是什么”之类的大目标,你就能清楚地意识到“现在,自己需要什么样的书”。
ls-type:: annotation
hl-page:: 66
hl-color:: yellow
具有即战力的书多半是对自己而言浅显易读的书; 对商场上有帮助的书,与其说是理论,还不如说是实践的技巧 。所以 ,不该选“专业类型”,而应选“经验类型”的书。
ls-type:: annotation
hl-page:: 72
hl-color:: yellow
由于一流的人其商业哲学上有许多共通点 ,所以你持续读了几本后 , 就会了解到商业上成功的秘诀是有普遍性的
ls-type:: annotation
hl-page:: 73
hl-color:: yellow
选书方法
依主题 选书
ls-type:: annotation
hl-page:: 75
hl-color:: yellow
从将来的目标倒推,推断自己当前必须完成的任务 , 然后, 依其相关内容选书。 想详知某个题目的内容 、 想解决某个问题等这种 “事先设定主题”的状况
ls-type:: annotation
hl-page:: 75
hl-color:: yellow
当读书的目的明确时,我建议采用 “类别集中法”的选书方式 。这是指 , 如果你想知道某种主题的内容, 那么, 你只要取得这类别的书,然后彻底全面地去读就可 以了 。
ls-type:: annotation
hl-page:: 77
hl-color:: yellow
只要是每本书都写到的相同内容 , 你就可以判断那是所有人都认为的重点 。
ls-type:: annotation
hl-page:: 78
hl-color:: yellow
依趋势 选书
ls-type:: annotation
hl-page:: 76
hl-color:: yellow
目的在于 ,掌握 、预测时代的趋势。 在杂志或新闻报道上 , 如果你认为,“这是有趣的经营方针”或是“这是改变后的投资方式吧 ”, 然后决定去搜寻与此相关的书籍来读
ls-type:: annotation
hl-page:: 76
hl-color:: yellow
第一种筛选法是一种利用朋友、 熟人的口碑来找寻好书的方法。
ls-type:: annotation
hl-page:: 81
hl-color:: yellow
第二种筛选, 即网络杂志。
ls-type:: annotation
hl-page:: 87
hl-color:: yellow
第三种筛选是参考报纸和杂志的书评栏来选书的一种方法。
ls-type:: annotation
hl-page:: 91
hl-color:: yellow
最后还有一种方法, 就是利用付费的书评服务。
ls-type:: annotation
hl-page:: 94
hl-color:: yellow
依直觉 选书
ls-type:: annotation
hl-page:: 76
hl-color:: yellow
网络书店对有目的的购买来说是便利的,而实体书店在发现新书上是便利的。
ls-type:: annotation
hl-page:: 114
hl-color:: yellow
ls-type:: annotation
hl-page:: 116
hl-color:: yellow
在第三章“一日一本 ,有策略地读通商业书”中, 整理出营造实践多读的环境 ,以及活用 “80/20法则”的 要点;也就是介绍这些有效而且不需要训练的读书方法。
ls-type:: annotation
hl-page:: 11
读书的流程
在开始渎之前 , 有非做不可的重要工作 。那就是 ,读每一本书前 , 都要明确读此书的目的。
ls-type:: annotation
hl-page:: 117
hl-color:: yellow
在杠杆效益阅读法中 ,读书并不是消磨时间, 而是一种投资。
ls-type:: annotation
hl-page:: 118
hl-color:: yellow
你逐渐就能弄清楚书中重要的部分和不重要的地部分。 因此 ,你会舍弃无关紧要的部分,读书的速度就自然加快了。
ls-type:: annotation
hl-page:: 118
hl-color:: yellow
彩色浴
这可以用 《考具 》一书中出现的 “ 彩色浴 ”说法来加以解释。所谓的 “彩色浴 ”说明如下 。
hl-page:: 121
ls-type:: annotation
熟练使用“彩色浴 ”效果 ,就算你快速翻阅书本 ,眼睛也能停在目的所在之处。
ls-type:: annotation
hl-page:: 121
hl-color:: yellow
读书的目的 试着一个一个写出来(就写在书本开头的空白页面上 ),只要花这样的时间, 并在心里产生意识就够了。
ls-type:: annotation
hl-page:: 122
hl-color:: yellow
给自己的目标暗示, 会在读书的时候不断出现在脑海中 ,碰到时就立即透过折角 、 画线、 在书页四周做笔记的方法记下(后面会再详加说明)。
ls-type:: annotation
hl-page:: 122
hl-color:: yellow
寻找固定的读书时间和读书环境
与其分散时段读书,还不如自行设定每天几点到几点 ,这样事先订好时间,然后变成习惯,也易于持续下去 。
ls-type:: annotation
hl-page:: 124
hl-color:: yellow
好的商业书会带给人勇气和干劲。 在阅读之际 , 潜力逐渐被激发出来, 冲劲也展现出来。如此一来, 一大早潜力就被激发出来,则一整天保持着积极的情绪。
ls-type:: annotation
hl-page:: 125
hl-color:: green
设定时间限制
忙碌的商人一边工作一边读书,这是需要技巧的 。 技巧之一就是 , 在开始读一本书之前,自己决定 “这本书大概在这样的时间内读完”。
ls-type:: annotation
hl-page:: 129
hl-color:: yellow
掌握 60% 就可以了
总之, 与其选出全部的一百项来读, 而没有学到一项,还不如只选出重要的一项来实践,才能有所回报。 与其在意小遗漏 , 而使速度变慢 ,还不如把精力放在以较少的劳力创造大大的回报上比较好 。
ls-type:: annotation
hl-page:: 133
hl-color:: yellow
一本书的重点大约只占全部内容的两成(这我会在下一章节详细说明) ,而掌握到重点的八成就可以了 。 也就是说, 一本书里, 重点只占20%,再抽出其中的80%,也就是整本书的16%; 若以200页的书来看 , 总共只有32页。
ls-type:: annotation
hl-page:: 133
hl-color:: yellow
80/20 法则
把读书视为投资来看, 你从书本里得到80% 的回报, 只要靠读20%的内容就可获得 。所以 , 一本书就算没有从头到尾全部读完, 但只要读区区的20% , 就大致了解了这本书的作者真正想主张的东西 。
ls-type:: annotation
hl-page:: 136
hl-color:: yellow
“如果是好书的话就特别花上5个小时细读吗?”才没这回事。和花在读其他书上的时间一样,大概一个小时。 像描写原理、 原则这样的好书,在适合自己程度的情况下, 有时也会读好几次, 而这是例外。将重要的部分画上线, 之后, 回过来只要读画线的地方 ,并实践它, 以表示确实学会了(这在下个篇章加以说明) 。
ls-type:: annotation
hl-page:: 138
hl-color:: yellow
浏览一本书的内容
首先要看的 , 是位于封面勒口和版权页上的作者简介。
ls-type:: annotation
hl-page:: 139
hl-color:: yellow
其次 , 我会读书腰 、 封底。 之后 ,再看前言、目录。有时,我会在目录上标记号。 然后,读最后的后记。 只要这样 ,就能看到整本书的轮廓 。开始读正文之前,脑海中只要备有这些内容 ,读这本书的目的就被重新确认了 。
ls-type:: annotation
hl-page:: 140
hl-color:: yellow
此外 , 有的书在每一章的开始或结束的地方,会把这章的内容做成“摘要 ”条列出来( 本书也是如此 )。 由于精华集结在此 , 所以先读它也可以,这也是一个方法 。
ls-type:: annotation
hl-page:: 141
hl-color:: yellow
不好的书马上丢掉
杠杆效益的阅读本质上不是读书, 而是投资行为。 所以必须具备这样的判断力。所谓的 “丢弃”并非指不要阅读。照字面来说, 是把垃圾丢出去 。
ls-type:: annotation
hl-page:: 143
hl-color:: yellow
不好的书尽早放在一边, 拿下一本书来读,这是要诀。读下一本更好的书, 并赚到15万日元 ,才是投资上有效率的表现。
ls-type:: annotation
hl-page:: 143
hl-color:: yellow
在有效率地读书上 , 如何具备“舍弃没用部分 ”的勇气 ,是重点所在。读了大约15分钟 , 就能判断这本书是否不好 。
ls-type:: annotation
hl-page:: 143
hl-color:: yellow
ls-type:: annotation
hl-page:: 164
hl-color:: yellow
不要读完后就放着不管了,读完之后所需要的 ,就是第四章 “不要读完就算了!”所要介绍的内容, 也就是本书能成为活用在商场上的最终书籍的“杠杆效益笔记”的制作方法, 以及利用空间时间反复浏览这些笔记,让自己能够达到直觉反应的程度的方法 , 并且说明今后如何学以致用。
ls-type:: annotation
hl-page:: 11
评价读书是否有效益
要把好不容易读完的内容变成自己的东西 ,难道没有最好的方法吗?
ls-type:: annotation
hl-page:: 170
hl-color:: yellow
像准备考试那样的做法是最好的。 总而言之,过去为考试而用功时, 大致上应该是用下页图中所示的做法,来深入理解书中的内容。
ls-type:: annotation
hl-page:: 170
hl-color:: yellow
[:span]
ls-type:: annotation
hl-page:: 171
hl-color:: yellow
我把画线的部分打进电脑里, 做成笔记。这个笔记集结了各种书中对我而言的 重点:一言以蔽之, 即犹如 “终极本” 一般的东西 。
ls-type:: annotation
hl-page:: 172
hl-color:: yellow
杠杆效益笔记
说到 “方法 ”,只不过是把内容打进电脑里 , 然后再打印到A4纸上。 经常把它带在身上, 偶尔拿出来反复阅读。而且 ,这个时候只读适合自己的部分 。
ls-type:: annotation
hl-page:: 173
hl-color:: yellow
这份打印稿虽然用文件夹夹着,但由于经常拿出来看, 所以纸张都变得皱巴巴的 。 如果变成这样, 就再重新打印一份。我就是这样反复去做 。
ls-type:: annotation
hl-page:: 174
hl-color:: yellow
与其读完后马上整理 ,还不如搁置几天后再打进电脑里比较好。这是因为刚读完时,不具有客观性的观点。稍微冷静之后再阅读时, 你可能会认为有些内容没那么重要 ,或是内容有所重复。 批次性地集中起来打进电脑, 也有这样的好处。
ls-type:: annotation
hl-page:: 177
hl-color:: yellow
笔记分类
主题类
“参考资料 ”是指 , 遇到自己业务上需要的数据时, 就算画不出图表来, 也可以参考笔记。
ls-type:: annotation
hl-page:: 180
hl-color:: yellow
“引用文句”是指 , 看到令人感动的言词时,写清楚是谁说的, 并把它打进电脑里。 附带一提的是 ,本书各篇章的开头也都用到引用文 。
ls-type:: annotation
hl-page:: 180
hl-color:: yellow
发现一个能够实践的重点,远比精读笔记,发现一百个重点来得更有效果 。 再来是 ,请在实践中修正并应用,创造出适合自己的东西 。
ls-type:: annotation
hl-page:: 183
hl-color:: yellow
然而基本上,读过的书就不要再拿来读第二次 。 要读的话,就读笔记。
ls-type:: annotation
hl-page:: 188
hl-color:: yellow
商业书推荐
人性的弱点
基业长青
杠杆阅读术里强调的是 , 把重点浓缩后 ,反复多读几次书中的精华 。 也就是说, 把书本读完之后 ,也还要持续阅读。实践书中的精华 , 然后再加上自己的解释, 例如"利用这个观念可以让事情进行得顺利 ” “这个稍微不适合自己 ”, 或是“ 把这个这样做,还不错”。这样一来,书中的精华刻印在脑里 ,并实际地做做看 , 因而产生书籍费用的一百倍价值。
ls-type:: annotation
hl-page:: 193
hl-color:: yellow
利用书架分类
靠实践活用知识
ls-type:: annotation
hl-page:: 199
hl-color:: yellow
[[PTM]] pre-train-model
17 年 Google 发表论文 「Attention is all you need」提出 Transformers 框架,之后一大批人在此基础上进行研究和应用。原始 Transformer 改进的变体被称为 「X-formers」。
X-formers 改进方向有三个:
Model Efficiency
self-attetion 带来的计算量和参数量(内存)
sparse attention 轻量级注意力机制方案
divide-and-conquer methods 分治方法
Model Generalization
框架灵活,对数据没有太多的结构偏置
训练需要数据量大
structural bias or regularization, pre-training on large-scale unlabeled data
Model Adaptation
背景知识
模型使用形式
Encoder-Decoder
Encoder only
Decoder only
sequence generation
根据对原始 Transformer 的改进分类:architecture modification, pre-training, and applications
architecture modification
Module Level
挑战
计算复杂度,受序列长度影响
Structural prior 没有结构先验,在小数据集上容易过拟合
Sparse Attention
token i 和 j 有关系的情况下计算 attention,以稀疏矩阵形式保存
如何定义关系
position-based
计算指定位置之间的 attention
atomic sparse attention
Global
Band
Dilated
组合 atomic attention 得到更加复杂的attention计算规则
content-based
Routing Transformer
Efficient Content-Based Sparse Attention with RoutingTransformers
聚类
[[Reformer]]
使用 LSH,同一个分桶内的 token 计算 attention
[[Linearized Attention]]
QKV 计算 Attention 的复杂度是 $$O(T^2D)$$,通过引入核函数降低到 $$O(TD)$$
key components
kernel feature map
Performer 用其他函数去拟合 attention 函数
FAVOR+ Fast Attention Via positive Orthogonal Random features approach
aggregation rule
Query Prototyping and Memory Compression
减少 queries or key-value pairs
Query Prototyping 计算关键 query 的 attention 值,剩余部分填充或者采用均匀分布填充
Memory Compression 减少 kv 数量
Low-rank Self-Attention
attention 矩阵线性相关的行数 A 远小于输入 T
Low-rank Parameterization
Low-rank Approximation
Attention with Prior
分成 generated attention 和 prior attention 两部分,下面的方法都是生成 prior attention 尝试
Prior that Models locality
文本之类的数据对位置敏感,使用 i 和 j 的位置,结合[[Normal Distribution]]计算先验信息
Prior from Lower Modules
使用之前层的注意力分布结果
Realformer 将 [[ResNet]] 结构放到 Attention 矩阵中
Lazyformer 每两层计算一次 Attention 矩阵
Prior as Multi-task Adapters
多任务适配器,看起来是在共享参数
Attention with Only Prior
Improved Multi-Head Mechanism
Head Behavior Modeling
Multi-head with Restricted Spans
观察到原始中部分 head 关注局部,部分关注全局
限制 attention 的范围(通过距离实现)
decoder 中 mask-multi-head 就是这个思路
Multi-head with Refined Aggregation
多头的结果如何合并
routing methods
Other Modifications
Shazeer multi-query attention
所有头之间共享 kv
Bhojanapalli 灵活设置 head size
OTHER MODULE-LEVEL MODIFICATIONS
Position Representations
Transformer 具有排列不变性,需要而外位置信息
Absolute Position Representations
正余弦编码
位置向量
Relative Position Representations.
token 之间的关系更加重要
将 embedding 加到 key 的attention中
Transformer-XL
Other Representations
TUPE
Roformer
旋转位置编码
线性 attention 中实现相对位置编码
Position Representations without Explicit Encoding 不要编码
R-Transformer 先过 RNN 再将输出结果输入到多头
CPE 使用卷积
Position Representation on Transformer Decoders
LayerNorm
Placement of Layer Normalization
post-LN
pre-LN 保证 skip 链接路上没有其他操作
Substitutes of Layer Normalization
可学习参数效果不好,
AdaNorm
scaled l2 normalization
PowerNorm
Normalization-free Transformer
FFN
Activation Function in FFN
[[Swish]]
[[GPT]] [[GELU]]
Adapting FFN for Larger Capacity
product-key memory layers
MoE
取 top k 专家
取最大专家
分组取各自 top1
Dropping FFN Layers
简化网络
Arch. Level
Adapting Transformer to Be Lightweight
Lite Transformer
Funnel Transformer
DeLighT
Strengthening Cross-Block Connectivity
针对 decoder 解决问题
Transparent Attention
Feedback Transformer
[[Adaptive Computation Time]]
解决之前模型中层数固定
三种方法
[[Universal Transformers]]dynamic halting
CCT
Transformers with Divide-and-Conquer Strategies
将 LM 任务中长文本拆分成多个片段
Recurrent Transformers 上一个 T 输出信息输入到下一个输入
Transformer-XL 上一个输出和下一个输入 concat 在一起
Hierarchical Transformers 多个结果聚合
Hierarchical for long sequence inputs
Hierarchical for richer representations 更丰富的表示
Exploring Alternative Architecture
PRE-TRAINED TRANSFORMERS
Encoder only
Decoder only
APPLICATIONS OF TRANSFORMER
CV
CONCLUSION AND FUTURE DIRECTIONS
理论分析
更好全局交互机制
处理多种类数据的框架
[[Layer Normalization]]
AFM(Attentional Factorization Machine), 在 FM 的基础上将 Attention 机制引入到交叉项部分,用来区分不同特征组合的权重。
单独看上面公式中的第三项结构:
Embedding Layer 与 NFM 里面的作用一样,转化特征。
Pair-wise Interaction Layer 是将特征两两交叉,如果对这一步的结果求和就是 FM 中的交叉项。
Attention 机制在 Attention-based Pooling 层引入。将 Pair-wise Interaction Layer 中的结果输入到 Attention Net 中,得到特征组合的 score ,然后利用 softmax 得到权重矩阵 。
最后将 Pair-wise Interaction Layer 中的二阶交叉结果和权重矩阵对应相乘求和得到 AFM 的交叉项。
AFM 如何引入 Attention 机制?
[[UPlift Model]] 目标是学习个体潜在弹性
,没有标签。
计算过程
数据集 , score
W 是样本所在的组,1 为实验组,0 为空白组
Y_obs 是观测到的样本响应信号
socre 是样本的 uplift 值
按 socre 从大到小排序,第 k 个的 uplift 值
排在前 k 个样本中属于实验组的人的响应之和
空白组的人的响应之和
前 k 实验组人数
前 k 空白组人数
避免实验组和对照组用户数量差别较大导致指标不可靠
全量人群的 [[Average Treatment Effect]]
含义:前 k 个样本中实验组平均产生的价值 - 前 k 个样本中空白组平均产生的价值
计算
实现 [[causalml]]
lift.plot
x=k, y=u(k)
gain.plot
x=k, y= k*u(k)
画 [[auuc/code]]
auuc_score['random']
值含义是什么?
无规律排序下,实验组相对于控制组的期望增值
TODO 在大多数情况下,使用归一化的auuc_score(normalize=True)函数计算得到的random值应该接近0.5,gain.plot()画出的random应该是一条直线。原因是在多次随机排序下,期望增值应该是稳步上升的。
假如random值不是0.5,图像不是直线时,这意味着什么?
导致不是0.5的背后原因可能有很多,可以先分析下是不是以下三种情况。
1.实验组和空白组不是平衡的,两者人群不是同质的,这时算AUUC没有很大的意义了,应该调平人群后再计算。
2.样本的y值即响应信号的离群点比较多。
3.样本量太小,无法支撑实验组和对照组的匹配。
除此之外,还有一种情况是random值为-0.5,这时整体的ATE为负数,所有样本均为负弹,这时候uplift值不再是“收益”,更像是“花销”。
适用情形:平稳的时间序列
平稳性和差分
[[平稳性]]:平稳的时间序列的性质不随观测时间变化而变化,具有 趋势性或季节性 的时间序列是非平稳的。
[[差分]] 计算了观测值之间的差值,衡量的是两者间的 变化/斜率 ,经过一次或多次差分后可以得到平稳的时间序列
步骤 #card #incremental #depth-1
对序列进行 ADF 检验,观察序列是否平稳 #card
对平稳的时间序列分别求 ACF 和PACF,两个图求出最佳阶数 p、q #card
+ 平衡预测误差与模型复杂度
+ AIC 准则全称是[[最小化信息量准则]](Akaike Information Criterion) #card
+ BIC(Bayesian InformationCriterion)[[贝叶斯信息准则]] #card
提高使用率的第一步,整理默认搜索支持常见的(谷歌、百度、知乎、微博、淘宝、b站)等等
多站点搜索,同时打开多个搜索页面
Force keyboard 强制默认输入法
Features
Default Results
Applications
「Match Application’s keywords in default results」可以匹配应用的元数据。
Extras 添加额外搜索
Advanced-Syncing 终于发现如何在不太的 mac 之间同步配置,现在在大白中完成配置,让小灰同步即可。
其他
Snippets
Search 拓展
https://twitter.com/search?q={query}%20(from%3Axiang578)&src=typed_query
使用 iTerm 2 做为终端:https://gist.github.com/xiang578/c8b504bdf9a34cd14e3acd95695ad773
调出时所在屏幕,激活窗口:Appearance > Options
快捷键
文件处理
’ 文件搜索~
~ / 文件浏览器 ⌘+下键
对文件点击向右方向键,查看对文件的操作
previous 上一次浏览的路径
shift 预览文件
open 打开项目,选中项目后按 ⇧Shift 键预览项目
除了空格键外,你还可以在前面加上 open 以打开文件,f 在 Finder 中查看,in 搜索文档内文字,tags 搜索指定标签文件。
在回车打开文件前,不妨先按下 ⌥Option + ⌘Command + \,你会发现 Alfred 已经为你准备了解压、复制、分享、查重等数项常用操作
Clipboard 粘贴板历史
Snippets 快捷短语
一站式文件处理中心:Alfred 文件搜索 & 处理详解 - 少数派
⌘Command-C 复制路径
⌘Command-Y 预览
搜索结果可以直接拖拽到其他软件中,按⌘Command移动,按 ⌥Option 是复制
搜索后的文件可以通过右方向键打开 action 窗口。
Workflow
Debug 难免会遇到问题
BlackwinMin/alfred-gallery: Original macOS Alfred actions by Minja. 集合
mpco/AlfredWorkflow-Recent-Documents: Quickly open recent documents and apps / 快捷打开最近访问的文档或应用
rr
当前激活应用打开的文档
rf
最近访问文件夹
rd
全局最近文档
ra
最近程序
环境变量 ExcludedFolders
忽视文件
需要 open macOS Full Disk Access preference
权限,否则使用 ra 可能会有问题
mpco/AlfredWorkflow-DEVONthink-Search: Powerful Tool for Searching in DEVONthink.
[[Alfred/Debug]]
Text Tools for Alfred http://matthewhealy.net/blog/category/text-tools-for-alfred
[[L2 Regularization]] 和 [[Weight Decay]] 在 Adam 这种自适应学习率算法中并不等价
使用 Adam 优化带 L2 正则损失并不有效
正常权重衰减是对所有权重都采用相同的系数进行更新,本身比较大的权重对应的梯度也会比较大,惩罚也越大。
Adam 计算步骤中减去项会除以梯度平方的累积,使梯度大的减去项偏小,从而大梯度的权重不会像解耦权重衰减那样得到正则化。
红色部分 Adam + L2 regularization,line 12 中 L2 部分会被二阶梯度调整,梯度变化快的方向上,调整之后的值比较小,这个方向上正则化更少。
分子右上角的 向量各个元素被分母 项调整。
作者提出以绿色的方式来在 Adam 中正确引入 weight decay ,使用相同的参数来正则化所有的权重,完成梯度下降与 WD 的解耦。
AdamWeightDecayOptimizer 通过 [[Weight Decay]] 参数控制
[[BERT]] 中使用 AdamW
#People
[[Evergreen notes]] 的网站而火
阅读 My morning writing practice
下来的体验,笔记的标题可以是另外笔记的内容,这不是刻意打造出来,真的把方法论融入到骨髓里面。
像自己这样,用关键字做为标题,无法达到高度有效的链接。
每一篇笔记没有必要太长,Roam 提供很多工具可以让你进行不同层次的引用。
每天坚持去写!
DONE [[@How to write good prompts: using spaced repetition to create understanding]][[2022/10/28]] 举例介绍如何写卡片
My morning writing practice
0730-1000 35分钟写作/5分钟休息
目标:
普通:记录其他人的想法或者是发生的事情
进阶:创造新的想法 [[Evergreen notes]]
DONE writing inbox:收集写作思路
挑选出想写的主题,写 evergreen note
memo pad:小笔记本记录外出时想到的话题
primary creative projects
what are the most important unknowns for this project?
what new ideas am I excited about?
what are the most interesting things I know about this project?
记录到 working log 中
write about what you read
My daily routine
通过 routine 引导生活
1000 之前不使用互联网,防止大脑被扰。
Daily working log
记录 reflections, scratch work
给予如何过好这一天的压力
通过什么内容记录这一天。
Interface for writing spaced repetition prompts inline while reading web content (andymatuschak.org) 阅读网页时写 anki 卡片流程
使用 [[Hypothesis]] 阅读网页,同时写 inline prompts
使用 [[Obsidian]] 插件 weichenw/obsidian-hypothesis-plugin: An Obsidian.md plugin that syncs highlights from Hypothesis. (github.com) 导出成 md 文件
阅读中的记录
The mnemonic medium can be extended to one’s personal notes 回顾个人笔记
An Alternative Probabilistic Interpretation of the Huber Loss
TODO 一文了解目标检测边界框概率分布 - 知乎 (zhihu.com) #XXX
已暂停 :-> 以后会不出现
已搁置 :-> 第二天再学习
简单而强大的 flashcard 软件,可以实现知识的[[Spaced Repetition]]。
一些可以思考的问题
什么是需要制作卡片记忆的内容?
观察不同时间段anki回顾的正确率区别,早晚会有区别吗?
如何衡量卡片是不是原子级别的?平均回顾时间低于10s
使用记录
logseq 同步卡片
复制过程中发现需要修改的卡片,搁置卡片等到能用电脑再修改。
电脑端使用快捷键 -
移动端,复习界面设置显示搁置按钮
选项
记忆难点(Leech)
[[Note2Anki]]
[[@BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding]]
代码:google-research/bert: TensorFlow code and pre-trained models for BERT
大模型 + 微调提升小任务的效果
输入层
词嵌入(token embedding)、位置嵌入(position embedding)段嵌入(segment embedding)
模型结构 12 层,每层 12 个 multi-head
CLS 句子开头,最后的输出 emb 对应整句信息
SEP 句子之间分割
BERT
L=12 H=768 A=12, Total Parameters=110M
L=24 H=1024 A=16, Total Parameters=340M
两种 NLP 预训练
[[ELMo]]
[[GPT]]
Transformer
单向
贡献性
模型输入:
训练方式
[[Masked-Language Modeling]] :->mask 部分单词,80 % mask,10 % 错误单词, 10% 正确单词
[[Next Sentence Prediction]] :-> 预测是不是下一个句子
句子 A 和句子 B 有 50% 的概率是上下文
解决后续什么问题 :-> QA 和自然语言推理
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTczNDYxNjMzODQyMV8wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6MzY3LjEzMDExNTk3NDg1MjYsInRvcCI6NTkuNDE3NTUwMDkwNDM3Mzk1LCJ3aWR0aCI6NjIzLjU5MTg3MjM5Mzc2MDksImhlaWdodCI6MTE4LjgzNTEwMDE4MDg3NDc2LCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjEwODEuOTAzNDAxNTY2MDE5LCJ0b3AiOjY1LjA2OTA2NDM1NDU0MTcsIndpZHRoIjo2NjUuMjAzOTI0MjY0NDI2LCJoZWlnaHQiOjkwLjM5NTU1NzkzMTAxMTA3LCJhbmdsZSI6MCwiY0lkIjoyfV19fQ==
[[激活函数]] [[GELU]]
和 [[GPT]] 一致,为什么?
优化器
不完整版 adam
fine tune 时可能不稳定,需要换成正常版 adam
fine tune
根据任务调整输入和增加预测结构,使用相关数据训练
使用 fine tune 比将bert做为特征放到模型中效果要好
研究取不同的 embedding 效果
缺陷
[[Ref]]
[[Multimodal BERT]]
像Bert这样的双向语言模型为何要做 masked LM?[[GPT]] 为何一直坚持单向语言模型? Elmo 也号称双向,为何不需要 mask?[[Word2Vec]] 的 CBOW 为何也不用 mask?
indirectly see themselves
GPT 保留用上文生成下文的能力
为什么 Bert 的三个 Embedding 可以进行相加? - 知乎
三个 embedding 相加和拼接
之前的理解和多个波长不同的波相加,最后还是能分离出来,所以模型也应该能区分。
空间维度很高,模型能区分各个组分
参数空间量 30k2512
模型表达能力至少是 2^768
梯度角度,(f + g +h)' = f' + g' + h'
BERT—容易被忽视的细节
[mask] 在 fine-tune 任务中不会出现,模型不知道如何处理。
缓解上面的现象
15% 标记被预测,需要更多训练步骤来收敛
是隐藏状态 的权重
用 softmax 得到一个强度表征
为什么需要使用 softmax 做归一化 #card #incremental
避免 attention score 数值过大,导致优化不稳定(数值小的部分)
保证 score 非负
是注意力打分机制
代表 :-> 解码器状态 和解码器状态 之间的匹配程度
常用的注意力计算方式
自上而下的有意识的注意力,主动注意——是指有预定目的、依赖任务的、主动有意识地聚焦于某一对象的注意力。
流程可视化
为什么要用 attention
参数少,速度快,能缓解神经网络模型复杂度。解决 RNN 不能并行计算问题
效果显著
按计算区域划分
soft-attention(global attention) :-> query 对所有 key 求相似度权重,得到 m*n 的 attention score
hard-attention :-> 直接精准定位到某个 key,其余的 key 不管,单个样本 query 仅对单个 key 进行相似度计算,得到 m*1 的 attention score
local-attention :-> hard定位单个key,以这个 key 为中心取周围区域,计算各个窗口的 soft-attention,得到 m*k 的 attention score
按所用信息
general-attention :-> 利用外部信息,用于构建两段文本之间关系的任务
[[self-attention]] :-> 只使用内部信息,寻找原文内部的关系。
按使用模型
CNN 是基于 N-gram 的局部编码,RNN 由于梯度消失问题也只能建立短距离依赖。
解决上面的问题有两种方法:利用深层神经网络来获取远距离的信息交互或者是使用全连接网络。
[[LSTM]] 对所有 step 的 hidden state 进行加权,注意力集中到整段文本中比较重要的 hidden state 信息。
[[Attention 按 QKV 划分]]
注意力计算方式 Neural Machine Translation by Jointly Learning to Align and Translate
Ref
归一化目的是将具有 相同性质的数据 转化成 标准正态分布 ,其结果不会破坏 数据之间的可比较性 。
LN 的操作可以类比于从一个句子中找到一个中心词,计算所以词和中心词的关系。
为什么处理不定长序列场景需要 LN ? #card
BN 和 LN 有哪些区别? #card
做 norm 的维度不同
在哪个维度做 norm,就在其他维度不动的情况下,基于该维度下的所有元素计算均值和方差,然后再做 norm
BN 在 batch 维度,LN 一般在最后一维
BN 计算代码 :-> for i in range(seq_len): for j in range(hidden_size): Norm([bert_tensor[k][i][j] for k in range(batch_size)])
LN 计算代码 :-> for i in range(batch_size): for j in range(seq_len): Norm([bert_tensor[i][j][k] for k in range(hidden_size)])
[[Ref]]
[[Bayesian]]概率:概率很难求,求反概率就很容易。
posterior 后验概率 :<-> 通过样本 X 得到 theta 的概率
likehood 似然函数 :<-> 通过参数 theta 得到样本 X 的概率
prior [[先验概率]] :<-> 在试验尚未发生前,对参数 的估计
evidence :<-> 样本 x 发生的概率
[[极大似然估计]]
核心思想:当前发生的事件是概率最大的事件,给定数据集,使得该数据集发生的概率最大求模型中的参数。
最大化似然函数
对似然函数取对数变成对数似然函数方便计算
计算似然估计只关注当前的样本(当前已经发生的事情,不考虑事情的先验情况)
[[最大后验估计]]
贝叶斯估计
缓解神经网络“内部协方差漂移”([[Internal Covariance Shift]], ICS)
对每个隐藏层输入进行 0-1 标准化
神经网络本身是为了学习数据的分布,如果训练集和测试集分布不同,会导致学习的神经网络泛化性能大大降低
网络每次迭代需要拟合不通的数据分布,增大训练的复杂度以及过拟合的风险。
对输入的数据分布进行额外的约束,从而增强模型的泛化能力,但也降低了模型的拟合能力
[[covariate shift]] 源空间和目标空间的条件概率是一致的,但是其边缘概率不同。神经网络的各层输出由于层内操作,其分布显然与各层对应的输入信号分布不同。
在神经网络训练时遇到收敛速度很慢,或者梯度爆炸等无法训练时可以尝试使用。
batch_mean, bacth_var = tf.nn.moments(data, [0])
求 data 数据的每一列的均值和方差
tf.nn.batch_normalization(data, mean, variance, offset, scale, variance_epsilon, name=None)
算法流程
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTcyNDE3MjAzMTgxN18wLnBuZyI6eyJjb25maWciOnsiaGlkZUFsbFRlc3RPbmUiOnRydWV9LCJlbGVtZW50cyI6W3sibGVmdCI6MTkxLjUxNTUyOTA3NzA4ODUzLCJ0b3AiOjE4OS41OTQ0MTY2NTQ0MjUyMywid2lkdGgiOjEzMS4xMTE5ODc5MjE3NDAxNCwiaGVpZ2h0IjoxMTEuMDQ2MzYzNjc5NTEyNjQsImFuZ2xlIjowLCJjSWQiOjF9LHsibGVmdCI6MjM3LjYyNjk0ODU1ODAzOTU0LCJ0b3AiOjI5My41MjM4MzU2MzQwMjc1Mywid2lkdGgiOjIyNS41NTcwNjM5NjcwNjExNywiaGVpZ2h0Ijo4OS43NDU0MTY3MDE4ODkyMSwiYW5nbGUiOjAsImNJZCI6Mn0seyJsZWZ0IjoyNDguMTgyNTc0NzA0MjgxMywidG9wIjozODEuOTEwMzMxMTI3MTkxMzQsIndpZHRoIjoyNDIuMjIzODQyMDkyNzA2MTUsImhlaWdodCI6NzUuMTAwMTE2Njg3NjUwMDcsImFuZ2xlIjowLCJjSWQiOjN9LHsibGVmdCI6MjY2LjUxNjAzMDY0MjQ5MDcsInRvcCI6NDUxLjA3ODgwMTY1ODU3NzEsIndpZHRoIjoyNzguODkwNzUzOTY5MTI0OTQsImhlaWdodCI6NTguOTE0MTUzMDI3MTIyODksImFuZ2xlIjowLCJjSWQiOjR9LHsibGVmdCI6NjAzLjY0ODM4NDc1Njg5NTQsInRvcCI6MTk1LjAyMjI3MzI2Mjk1NTIsIndpZHRoIjoxOTcuOTYzMzQ3MDEzMjc0NTYsImhlaWdodCI6NTQuNDEyOTk1NjA2OTAwNjQsImFuZ2xlIjowLCJjSWQiOjV9LHsibGVmdCI6NTg3LjkyNzU4NTQ5NDI5NTQsInRvcCI6MjkzLjg0NDM0ODI0MTY1MzcsIndpZHRoIjoyMzYuMDcxNjU2Nzg4NzMyNTUsImhlaWdodCI6NDUuNTQ4NjI2MzI2NTA1NzcsImFuZ2xlIjowLCJjSWQiOjZ9LHsibGVmdCI6NjI3LjUzNjE2NDM5MTM4MDgsInRvcCI6MzczLjczOTY1NTI2MDY1MzU0LCJ3aWR0aCI6MTU4LjQsImhlaWdodCI6NDMuNDQ0NjUyNjE4NzA3ODM1LCJhbmdsZSI6MCwiY0lkIjo3fSx7ImxlZnQiOjYxOS40MjY5ODM2MTU4MTI5LCJ0b3AiOjQ0NC41MzkyOTM0MTA5MDQyNCwid2lkdGgiOjE3NS4yOTUwOTc2MjkxMTY5OCwiaGVpZ2h0Ijo0My45ODU0NDY0NzUwMDc5NiwiYW5nbGUiOjAsImNJZCI6OH1dfX0=
原理
[[Batch Normalization/前向和反向传播]]
[[Batch Normalization/维度理解]]
如何得到预测时 BN 层使用的均值和方差?
如果训练时使用这个方法,会减少当前 batch 对参数的影响
Batch Normalization 训练的时候为什么不使用 moving statistics? - 知乎 (zhihu.com)
不能对统计量求导
除以标准差后的梯度方向是与减均值之后的feature垂直的,用这个梯度更新不会引起 feature scale 的剧变,从而解决梯度爆炸
moving statistics 对于 BN输入的变化是滞后的
为什么BN层一般用在线性层和卷积层后面,而不是放在非线性单元后
BN 层希望得到 0-1 高斯分布 的数据
非线性单元之后的数据分布 不一定对称
实践中 BN 放在 ReLU 后面 #card
放在 tanh 或 sigmoid 之前,可以 避免进入饱和区,缓解梯度衰减问题 。
BN 和 [[ReLU]] 的顺序关系?
[[ResNet]] :-> Skip -> BN -> RELU -> Conv -> BN -> RELU -> Conv -> Add
[[Batch Normalization 为何有效]]
[[Ref]]
例子 [[@PRML Note 前十一章]] 2-006
ls-type:: annotation
hl-page:: 62
hl-color:: purple
以及 ((654bb13c-db71-49d4-ad0e-123ec812c258))
[[二项分布]] 概率函数
结合 Beta 先验分布,根据[[贝叶斯公式]]后验分布有
n 和 m 都是已知
超参数 a 和 b 是先验中时间发生的次数和不发生的次数,a+b就是有效观察次数
根据这个公式可以看出先验对后验的影响
根据 后验分布也服从 Beta 分布
根据
得到事件发生的概率期望等于事件发生次数除以总次数
二项分布中 预测的分布就是
l = N-m,后验中时间不发生的次数
次数增加,m 和 N 值会变大,当趋于无穷时,a 和 b 可以忽略。
试验次数少,受先验影响大,反之相反。
试验次数多到一定程度后,先验几乎没有影响,后验估计和极大似然估计趋于一致。
2-008
ls-type:: annotation
hl-page:: 63
hl-color:: purple
[[Bayesian Online Learning]] ((654e45e1-d673-4eeb-806f-9334ee4ee3d9))
a+b 值越大,u 取值越集中。根据
a和趋于无穷时,u 的方差趋于 0。对应试验次数越多,u 的取值越集中,不确定(方差)越小。
+ [\[\[试验次数和后验分布的关系\]\]](/post/logseq/%E8%AF%95%E9%AA%8C%E6%AC%A1%E6%95%B0%E5%92%8C%E5%90%8E%E9%AA%8C%E5%88%86%E5%B8%83%E7%9A%84%E5%85%B3%E7%B3%BB.html) 随着试验次数的增加(数据集的变大),未知参数的取值越来越集中?
ls-type:: annotation
hl-page:: 63
hl-color:: yellow
+ 随着试验次数的增加,后验分布的不确定性会越来越小?
ls-type:: annotation
hl-page:: 63
hl-color:: yellow
+ 答案是:在一般情况下,理论上的确有这样的趋势,但对于某些特定的数据集则不一定。
ls-type:: annotation
hl-page:: 63
hl-color:: yellow
CODE
全称 :-> continuous bag-of-word
输入词经过线性变化后,词向量进行累加求和作为隐藏层。
经过softmax得到概率分布向量,进而计算概率的交叉熵实现参数的训练。
指标
CVR 转化率
[[NLP]] 中比较常用
参数 B 控制 beam width
翻译任务中:第一次选取概率最高的 B 个词语。第二次在这 B 个词语上进行扩展下一个单词,然后选取概率最高的 B 个词组,以此类推,直到结束。B=1 时相当于贪心。
在 [[Seq2Seq]] 中应用在 decode 部分
[[Transformer]] 解决实际预测环节如何构造一个理想输出
[[Ref]]
抛一次硬币
求解唯一的参数 或
根据似然函数
求对数似然函数
对对数似然求导,令结果等于 0
样本的均值是伯努利分布的[[充分统计量]] sufficient statistic
ls-type:: annotation
hl-page:: 89
hl-color:: yellow
(分布的参数 可以由该统计量估计得到)
适用于类别类特征
CatBoost vs. Light GBM vs. XGBoost | by Alvira Swalin | Towards Data Science #[[LightGBM/training]] #[[XGBoost/training]]
[[伯努利分布]] 一次二值实验
[[二项分布]] n 次二值实验
[[多项分布]] k 种取值
[[高斯分布]]
[[参数估计]]
[[高斯共轭先验]]
均值共轭先验是高斯分布
方差
一维高斯方差的共轭先验是逆Gamma分布
多维高斯协方差阵的共轭先验是逆Wishart分布
无信息先验及其他
[[Student-t 分布]]
[[指数族分布]] 一定可以找到共轭先验,且共轭先验形式确定。
非参模型:不能由有限个参数决定,对新 x 计算可以用之前全部的训练数据
参数控制模型复杂度
[[K-Means Clustering]] 中 K 代表中心点数量
根据数据集 X 建模 P(x)
[[快捷键]]
黑暗模式控制
关闭 defaults write com.google.Chrome NSRequiresAquaSystemAppearance -bool YES
打开 defaults write com.google.Chrome NSRequiresAquaSystemAppearance -bool NO
插件
修改插件的快健键 chrome://extensions/shortcuts
在线词典助手 - Chrome 网上应用店 和 [[Anki]] 搭配使用
Inoreader 快速查看文章以及订阅 feed
[[SingleFile]]
Convolutional neural networks on graphs with fast localized spectral filtering
优点
卷积核只有 K 个参数,K 远小于 n
不需要做特征分解,直接用拉普拉斯矩阵 L 进行变换,但是复杂度还是 n3
卷积核具有很好的 局部性
K 是卷积核的 receptive field 感受野
每次卷积将中心顶点 k-hop neighbor 的 feature 进行加权求和
例子
+ K=2 时需要二阶 [\[\[Laplacian matrix\]\]](/post/logseq/Laplacian%20matrix.html)
主要思想 :-> 每次新加的树要拟合并不是之前全部树 ensemble 后的负梯度,而是随机抽取一些树 ensmeble 后的负梯度。
解决 GBDT over-specialization 问题
S1 :-> 训练数据集
T1 :-> 使用 S1 数据训练得到决策树
针对决策树 2 到 N #card #incremental
从 M 中随机抽取决策树集合 D, 是 M 和 D 的差集
利用 计算样本负梯度,得到数据集 St
利用 St 训练 Tt
调整 Tt 的权重
调整 D 中其他树的权重
[[lightgbm 使用记录]] Early stopping is not available in dart mode
在 Wide & Deep 基础上,对 Wide 部分进行改进。LR 无法进行特征交叉,FM 受限于性能一般只去做二阶交叉,Cross 可以实现高阶交叉。DCN 和 DNN 相比,相同效果情况下可以减少参数量。
Cross 网络只能处理定长的输入,[[ETA]] v4 中无法使用……
特征处理和常规的模型一样,Sparse feature 经过 embedding 处理,然后和 Dense feature concat 在一起。由于 Cross network 每一层的大小都和输入向量大小相等,如果 Sparse feature 不处理,输入维度会很大,然后参数量会增加。
Cross 和 Deep 的输出结果 concat 后过一个 LR 直接输出。
Cross Network
每一层都是由 和前一层的输出 交叉学习残叉。
ResNet 的引入可以将网络做的更深。
特点:有限高阶、自动叉乘、参数共享
#card
Deep NetWork
Analysis
亮点
feature 分成四类:User Profile, User Behavior, Ad and Context
[[interest extractor layer]] 作用 :-> 兴趣抽取层,用 GRU 抽取序列信息
[[interest evolving layer]] 作用 :-> 兴趣进化层,将Target Attention引入GRU,过滤掉与待排序的广告不相关的信息。
[[AUGRU]] 计算方法 #card
这里是先用序列中Item的隐状态和待排序的广告Embedding计算一个Attention标量,再将该标量乘以更新门控向量。
最终隐藏状态和候选状态,以及每一个维度的重要性,由当前Item隐状态,待排序广告,前一Item隐状态,当前Item原特征(后两者用于计算更新门)共同决定。
源码阅读
train.py 指定模型
model 中包含对模型的实现
数据
uid_voc.pkl: 用户名对应的id
mid_voc.pkl: item对应的id
cat_voc.pkl:category对应的id
item-info:item对应的category信息
reviews-info:用于进行负采样的数据
local_train_splitByUser:训练数据,一行格式为:label、用户名、目标item、 目标item类别、历史item、历史item对应类别。
local_test_splitByUser:测试数据,格式同训练数据
网络设置
embeeding 18
hidden size 18*2
attention_size 18*2
fcn: 200-80-2
dice
prelu
需要分析代码:
aux 网络
gru 改造
din_fcn_attention
[[Ref]]
[[Attachments]]
Embedding & MLP 模型
embedding layer (for learning the dense representation of sparse features)
MLP (for learning the combination relations of features automatically).
Feature Representation
所使用的特征如下图,没有使用组合特征,所以避免了特征工程。
multi-hot 经过 embedding 层组成一个 embedding list,然后通过 pooling 层(sum pooling or average pooling)变成固定长度的向量。
损失函数:$$L=-\frac{1}{N} \sum_{(x, y) \in S}(y \log p(x)+(1-y) \log (1-p(x)))$$
Deep Interest NetWork
base model 中所有的历史行为最后通过 sum pooling 得到固定长度的向量,没有考虑 和候选商品的关系 。固定长度的向量表达能力有限。
用户特征的特点:diverse and locally activated
User Behaviors 通过 SUM Pooling 转化成为定长的向量。
考虑到用户兴趣不是 严格时间关系 ,所以 User Behaviors 没有考虑序列关系。
通过 local acvtivation unit 学习用户历史行为和候选广告的权重 [[target attention]]
商品特征包括 goods_id shop_id cate_id(分类)
网络结构 #card
[[mini-batch aware regularization]]
[[data adaptive activation function]]
Attention 权重可视化 #card
[[Group AUC]]
问题
DIN 模型提出的动机是什么?是否适合自己公司当前的场景和数据特点?#card
DIN 模型的模型结构是什么?具体实现起来有那些工程上的难点?#card
DIN 模型强调的注意力机制是什么?#card
[[为什么在推荐系统中引入注意力机制能够有效果上的提升?]]#card
动态权重分配,替代平均池化。长短期分配
引入行为序列表达用户兴趣
可解释性与鲁棒性
DIN 模型将用户和商品进行了 Embedding,在实际使用中,应该如何实现 Embedding 过程?#card
与DIN类似的模型有哪些,是否适合当前的使用场景。#card
[[Ref]]
特征处理
为什么 Deep 和 FM 共享一份 embedding #card
内存增大,过多参数可能导致过拟合
如果特征不同,同一个 token 可能训练量不一样
与 [[Wide&Deep]] 对比 #card
wide 部分引入 FM 自动特征组合能力,避免原来浅层部分人工特征工程
fm 和 deep 共享原始输入特征,保证模型特征的准确与一致。
FM Layer 的直接与输出单元连接,DNN 部分,加强浅层网络部分特征组合的能力。
DNN与DeepFM之间的区别? #card
[[Ref]]
推荐算法注意点和DeepFM工程化实现 - 知乎 混沌大学课程推荐
样本
样本冲突:相同推荐结果,用户选择前后矛盾。只保留正样本
样本下采样:样本集合倾向于高频时间段
数据穿越
特征数据在样本发生之后
线上预测特征延迟
特征稀疏、一列多值、权重共享
重排序:相同老师的课程不相邻出现。[[多路线]]
DeepWalk: Online Learning of Social Representations
定价:预估 + 决策
去偏(uplift、因果、单调性、parameterized model)表征(seq/时空/GNN)预估准确性(uncertainty、拒绝器、calibration)多目标、长期价值
决策:流控(系统、时效、大规模)、calibration、constrained RL
[[Markdown]] 写作软件
简洁而不简陋
简单、简洁是通过复杂逻辑设计实现
极简绝不是直截了当地做减法,而应当是在幕后完成更多的设计和开发工作,让前台「暴露」给使用者的部分在完成功能使命的前提下尽最大可能地精简。
文件不用命名就能保存
文章和大纲混排
功能描述
「不觉已春深,物我两相忘。」
「桐花诗八韵,思绪一何深。」
「无穷如天地,不竭如江海。」
「著叶满枝翠羽盖,开花无数黄金钱。」
#Workflow
如何选择处理 Inbox Triage strategies for maintaining inboxes (e.g. Inbox Zero) are often too brittle
[[GTD]] 中经常强调 [[Inbox Zero]]
至少做到内容增长率低于处理率
推迟处理不重要的任务
"Zero-inbox appears to be his principle behind 5.1 and 5.3. The reading inbox is a triage area. The work is deciding whether to:
throw away
read seriously (ie, take notes)
read shallowly (add to references)
added to another list (eg, recipes)"
Amazon 的工程师,偏向机器学习系统实现
ApplyingML - Papers, Guides, and Interviews with ML practitioners 机器学习资料整理
Effective Writing via Why, What, How (applyingml.com) [[说话练习]] 如何有效进行文档写作
Why and How to Read Papers (applyingml.com) [[how to read a paper]]
第一遍,读 problem statement, methods, and results
第二遍,整理文章的重点
第三遍,针对同一个问题,汇总多篇文章处理的方法,形成自己的结论
写文章发表自己的观点
[[Eugene Yan@imposter syndrome]]
FTL Follow The Leader 在线学习的一种思路 #card
[[稀疏性]] 模型稀疏好处
减少预测内存和复杂度,大量参数是零
利用 L1 正则不仅能获得稀疏,而且能降低模型过拟合带来的风险
稀疏模型,相对来说可解释性更好。
为什么 SGD 不一定能保证模型的稀疏性?#card
数据集规模大,每一次计算全局梯度的代价变得过高,完成训练时间会变得很长。
在线学习:每次处理一个样本,处理过的样本会被丢弃。
特点 #card
每个特征一个学习率([[Adam]]中也实现了)
收敛速度快
L1 正则引入稀疏性,L2 正则引入平滑 [[弹性网络回归]]
How they choose to center the additional strong convexity used to guarantee low regret: RDA centers this regularization at the origin, while FOBOS centers it at the current feasible point. 结合[[FOBOS]]高精度以及 RDA 较好的稀疏性
#Business
Farnam Street 优化读者的忠诚度,而不是访问量 | 湾区日报
[[Charlie Munger]] The Munger Operating System: A Life That Really Works
简介
Farnam Street 是关于阅读、个人成长、探索人生智慧的高质量的博客。Shane Parrish 于 09 年读 MBA 时开始做;现在是一家公司,靠广告、付费会员、开课、办讲座赚钱。
他是巴菲特与 [[Charlie Munger]] 的铁杆粉丝。
最早的博客域名是 68131.blogger.com,68131 是巴菲特的公司 Berkshire Hathaway 所在地的邮编;
现在博客名字 Farnam Street 是 Berkshire Hathaway 所在的街道的名字。
博客每月 page view 过百万,邮件订阅用户数 14.5 万。
TODO Mental Models: The Best Way to Make Intelligent Decisions (109 Models Explained)
The Great Mental Models
模型用来逼近 特征上限
[[特征设计原则四象限]]
[[特征设计]]
[[数据清洗]] 对异常数据进行清洗,最常见的异常有空值异常(缺省值处理)、数值溢出(数值异常处理)。
[[特征变换]]
使用方式
特征加权
[[SENET]]
[[CNN]]
[[Feature Hashing]]
[[标签和权重如何使用?]]
[[如何把相似的实体算作一类 one-hot ?]]
特征重要性分析和[[特征选择]]
特征抽取
线性判别分析[[Fisher]]
[[PCA]]
[[自编码器]]
Explicit Semantic Cross Feature Learning via Pre-trained Graph Neural Networks for CTR Prediction
使用 GNN 构造 (用户特征,物料特征) 的交叉特征
预估输入特征的 xtr
Ref
@探讨特征工程的方法论
基于业务逻辑去做特征工程
特征重要性表的特征工程思路
利用 xgb/lgb 输出特征重要性,对重要性高的特征交叉
通过 embedding 对物品进行泛化
工业级推荐系统中的特征工程 - 知乎 (zhihu.com)
误区
深度学习不需要特征工程?
[[AutoML]] 工具取代特征工程?
特征工程没有技术含量?
搜广推场景下的特征工程
high-cardinality 属性表示位特征时的挑战
对特征进行统计,分桶,然后再交叉
Feature Engineering/Time Series Feature
时间戳衍生
时间特征:年月日、节假日、星期几、上午中午下午凌晨
布尔特征:是否周末
时间差特征
time encoding
周期特征循环编码
好处:相邻两天的 encoding 结果相似
[[sklearn]] functiontransformer
[[sklearn]] functiontransformer
1 | def sin_transformer(period): |
时序值衍生
寻找时间序列的趋势因素,季节性周期性因素
滞后值 [[lag feature]]
取过去 X 个时间步作为 feature
昨天、上周同一天等数据高度相关
滑动窗口统计 Rolling Window Statistics
先前时间观察值的统计信息做为特征
前 7 天数据的平均数、中位数、标准差、最大值、最小值
过去数据被聚合成标量,也可以做比例、差值之类的运算
滞后值 [[lag feature]]
的滑动窗口为 1
扩展窗口统计 Expanding Window Statistics
序列属性衍生
连续变量衍生
其他连续变量特征
股票收盘佳之外还成交量、开盘价等
类别变量 Encoding
类别少时可以用 one-hot encoding
类别如果与顺序无关,放到树模型中会被当成是连续型处理
与 y 做特征交互
预测销量时,统计某个产品类别下的销量均值、标准差等
Ref
时序数据中的特征工程(待续) - 知乎 (zhihu.com)
两种方式
Global graph attention
每个顶点 i 都对图上任意顶点进行 attention 计算
相当于不考虑图结构
Mask graph attention
GAL
graph attentional layer
attention 系数
共享参数 W 相当于对顶点特征进行增维
站在顶点 i 的角度看顶点 j 对它的重要性
masked attention 机制,只计算顶点 i 和其他相邻点的系数
每个顶点最终输出
multi-head attention
和 [[GCN]] 联系
将临接点的特征聚合到中心顶点上,利用 graph 的 local stationary 学习新的顶点特征表达。
GCN 利用 [[Laplacian matrix]],GAT 利用 attention 系数
如何适用于 inductive 任务
学习参数 W 和 a,与顶点特征相关,与图结构无关
GCN 是一种全图计算方法,一次计算就更新全图的节点特征
Graph Attention Network的本质是什么? - 知乎 (zhihu.com) [[2023/03/03]]
Graph Convolution 的核心思想是利用边的信息对节点进行聚合,从而生成新的节点表示。
CNN 是利用节点信息生成新的节点表示?
如何让模型学习到相邻节点的权值?
利用相似度
利用 cost 衡量两个节点的相似度 AGNN
完全利用学习 GAT
GNN 让模型关注到 Garph 中最重要的节点/节点中最重要的信息从而提高信噪比。
GAT 在同质图上学不到任何有用的 attention 值
Cora 机器学论文,7类
citeseer 科学论文,6类
非同质 PPI
退化成 GCN
GBDT 核心思想
Gradient Boosting Machine 基于梯度提升算法的学习器
从 [[Gradient Descend]] 到 Gradient Boosting
Gradient Descend
迭代公式:$${\theta ^t = \theta ^{t-1} + \theta _{t}}$$
负梯度方向更新参数:$${\theta _t = - \alpha _t g_t}$$
最终参数等于每次迭代的增量的累加和:$${\theta = \sum_{t=0}^T \theta _t}$$
Gradient Boosting
迭代公式:$${f^t(x) =f^{t-1}(x) + f_t(x)}$$
拟合负梯度:$${f_t(x)= - \alpha _t g_t(x)}$$
最终函数等于每次迭代的增量的累加和:$${F(x) = \sum_{t=0}^T f_t(x)}$$
加法模型
其中,x 为输入样本,h 为分类回归树,w 是分类回归树的参数, 是每棵树的权重。
GBDT 算法可以看成是由 k 棵树组成的加法模型
流程
通过最小化损失函数求解最优模型:
输入:
2.1 计算负梯度(伪残差):
当损失函数为 MSE 时,负梯度 = 残差
2.2 根据 学习第 m 棵树:
2.3 line searcher 找步长:
2.4 令 ,更新模型:
[[gbdt 时间序列]]
流程
[[Gaussian Distribution]]
损失函数
负梯度
初始化
叶节点估计
[[AdaBoost]]
损失函数
负梯度
,
初始化
叶节点估计
gbdt 代码中
logistics Regression 与对数损失函数转化
对数损失函数
负梯度
初始化
叶节点估计
single Newton-Raphson
一阶导数
二阶导数
[[Poisson Distribution]]
概率密度函数:
对数似然函数:
损失函数:
负梯度:
初始化
叶节点估计
[[Laplace Distribution]] MAE
损失函数
负梯度
初始化
叶节点估计
MAPE
损失函数
负梯度
初始化
叶节点估计
证明:
对损失函数求完偏导之后的结果是
叶节点要估计一个值 ,使损失函数最小,即可以转化为
对残差进行从小到大排序,找到一个 值,满足
[[SMAPE]]
解析解不好求,还是直接用 XGB 的二阶泰勒展开方便
损失函数
负梯度
Ref
使用 Boosting 解决决策树算法 容易过拟合 的缺点
为什么使用决策树? #card
决策树是基于 if-then 规则的集合,易于理解,可解释性强,预测速度快。
需要更少的特征工程,可以不用做特征标准化,可以很好处理字段缺失的数据,自动组合多个特征。
树模型在Gradient boosting这种集成方式下有哪些独特的优势?
样本权重 :-> 方便地将样本权重整合到训练过程中,不需要过采样的方法来调整样本权重。
另外一种方式是 bagging,比如随机森林?
[[Adaboost]]
通过 树的层数 来平衡 表达能力和泛化能力
学习器角度 :-> 数据样本波动(采样)对决策树影响大,不同样本集合生成的决策树基分类器随机性比较大。不稳定学习器更适合作为基分类器。
特征工程 :-> 使用不同类型的数据时,不需要做特征标准化/归一化,对数据缺失不敏感
可解释性 :-> 模型可解释性好,学习模型可以输出特征的相对重要程度
特征交叉 :-> 能够自动做多组特征间的特征交叉,具有很好的非线性
为什么 GB 中使用的弱分类器不能是线性分类器? #card
线性模型无法拟合的残差,无法使用另外一个线性模型去拟合。
如何有多个线性模型,那么也可以将这些模型的系数相加,形成一个新的线性模型。
为什么高维稀疏特征时,lr 的效果会比 gbdt 好?
m*n
数据集,如果用GBDT,那么梯度是几维?m维?n维?m*n
维?或者是与树的深度有关?或者与树的叶子节点的个数有关 [[石塔西]] #card
GBDT/XGBoost 解决过拟合的思路?
正则化角度 #card
在目标函数中添加正则化。
CART 正则化剪枝
控制树的深度和最小样本的数量
采样角度 #card
列采样,训练只使用部分特征
子采样,每轮计算使用部分样本
early stopping
shrinkage :-> 调小学习率减少每棵树的影响,增加树的数量,为后面的训练留出更多的空间
GBDT与[[随机森林]]模型相比有什么优缺点?
相同点:最终的结果 由多棵树一起 决定
不同点
核心思想
GCN 本质用来提取拓扑图的空间特征
利用『边的信息』对『节点信息』进行『聚合』从而生成新的『节点表示』。
Non Euclidean Structure 拓扑图
为什么需要图卷积神经网络?
CNN 研究对象是具备 Euclidean Domains 的数据,特征是他们具有规则的空间结构,可以用一维或二维矩阵来表示。
CNN 的平移不变性在非矩阵结构数据不适用
平移不变性
平移可变性
目标检测,物体从图片左侧移到右侧,坐标发生改变。
R-FCN,网络变深平移可变性变差。物体在输入上的小偏移,经过多层 pooling 后在小的 feature map 上感知不到。
将 [[CNN]] 扩展到图上,如何在图上实现卷积的各个特性?
权重共享
局部性
第一代 GCN 没有 local 性质,卷积核的运算矩阵在所有位置上都有非 0 元素
第二代的运算矩阵在和当前顶点邻接的位置都是非 0 元素
多尺度
为什么需要 [[Laplacian matrix]]
对称矩阵,可以进行特征分解
拉普拉斯矩阵只在中心顶点和一阶相连的顶点上有非 0 元素
由于卷积在傅里叶域的计算相对简单,为了在graph上做傅里叶变换,需要找到graph的连续的正交基对应于傅里叶变换的基,因此要使用拉普拉斯矩阵的特征向量。
如何把卷积推广到 Graph 上
[[Spectral Networks and Deep Locally Connected Networks on Graphs]] 图上扩展卷积
基于空域的卷积构建 Spatial Construction
基于谱域的卷积构建 Spectral Construction
第一代 GCN
Spectral graph theory 借助于图的拉普拉斯矩阵的特征值和特征向量来研究图的性质
[[Convolutional neural networks on graphs with fast localized spectral filtering]]
第二代 GCN
把 设计成
最终
[[Semi-Supervised Classification with Graph Convolutional Networks]] 利用 Chebyshev 多项式作为卷积核
GCN 缺点
训练时需要整个图的结构信息,因此是 transductive 的(训练阶段与预测阶段都是基于同样的图结构)。无法处理 inductive 任务(动态图问题,训练在子图上进行,测试阶段需要处理未知的顶点)
不能处理有向图,不容易实现分配不通的学习权重给不通的 neighbor
[[Ref]]
图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导-持续更新_无知人生,记录点滴-CSDN博客 这个很详细,有 renormaliztion 具体的例子
Do we need deep graph neural networks? | by Michael Bronstein | Towards Data Science
图神经网络很难做深?
过度平滑:经过多个卷积层,结点特征趋向于收敛到相同或相似的向量
过度压缩:多层之后,相关的信息压缩到一个结点上,造成瓶颈。
解决高斯分布的单峰性,引入多个高斯模型加权平均拟合数据
几何角度
生成模型角度
利用离散变量 z 来选择来自哪一个高斯分布
得到 $$p(x)=\sum\limits_{k=1}^Kp_k\mathcal{N}(x|\mu_k,\Sigma_k)$$
[[MLE]] 求解
求解上面的 px
log 中有连加号存在,无法求出解析解。
[[EM]] 求解
EM 目标求解:
E-Step
+ 对第一个累加号展开,第一项为: + $$\sum\limits_z\log p(x_1,z_1|\theta)\prod\limits_{i=1}^Np(z_i|x_i,\theta^t)=\sum\limits_z\log p(x_1,z_1|\theta)p(z_1|x_1,\theta^t)\prod\limits_{i=2}^Np(z_i|x_i,\theta^t)\\ =\sum\limits_{z_1}\log p(x_1,z_1|\theta) p(z_1|x_1,\theta^t)\sum\limits_{z_2,\cdots,z_K}\prod\limits_{i=2}^Np(z_i|x_i,\theta^t)\\ =\sum\limits_{z_1}\log p(x_1,z_1|\theta)p(z_1|x_1,\theta^t)
+ 后面与 1 无关求和结果为1
+ $$Q(\theta,\theta^t)=\sum\limits_{i=1}^N\sum\limits_{z_i}\log p(x_i,z_i|\theta)p(z_i|x_i,\theta^t)$$
+ $$p(x,z|\theta)=p(z|\theta)p(x|z,\theta)=p_z\mathcal{N}(x|\mu_z,\Sigma_z)$$
+ $$p(z|x,\theta^t)=\frac{p(x,z|\theta^t)}{p(x|\theta^t)}=\frac{p_z^t\mathcal{N}(x|\mu_z^t,\Sigma_z^t)}{\sum\limits_kp_k^t\mathcal{N}(x|\mu_k^t,\Sigma_k^t)}$$
+ $$Q=\sum\limits_{i=1}^N\sum\limits_{z_i}\log p_{z_i}\mathcal{N(x_i|\mu_{z_i},\Sigma_{z_i})}\frac{p_{z_i}^t\mathcal{N}(x_i|\mu_{z_i}^t,\Sigma_{z_i}^t)}{\sum\limits_kp_k^t\mathcal{N}(x_i|\mu_k^t,\Sigma_k^t)}$$
M-Step
化简 $$p_k{t+1}=\mathop{argmax}_{p_k}\sum\limits_{k=1}K\sum\limits_{i=1}^N\log p_kp(z_i=k|x_i,\thetat) s.t. \sum\limits_{k=1}Kp_k=1$$
[[Lagrange Multiplier]] $$L(p_k,\lambda)=\sum\limits_{k=1}K\sum\limits_{i=1}N\log p_kp(z_i=k|x_i,\thetat)-\lambda(1-\sum\limits_{k=1}Kp_k)$$
[[Lagrange]] $$L(p_k,\lambda)=\sum\limits_{k=1}K\sum\limits_{i=1}N\log p_kp(z_i=k|x_i,\thetat)-\lambda(1-\sum\limits_{k=1}Kp_k)$$
\Rightarrow\lambda=-N$$
+ $$p_k^{t+1}=\frac{1}{N}\sum\limits_{i=1}^Np(z_i=k|x_i,\theta^t)$$
+ $$\mu_k,\Sigma_k$$ 无约束参数,直接求导
对比 MLE 和 EM 在求解 GMM 问题上的区别
极大似然需要计算 $$P(X)$$,EM 计算 $$P(X,Z)$$。$$P(X) = \sum _Z P(X,Z)$$,每次单独考虑 $$P(X,Z)$$,避免在 log 中求和。
E 和 M 具体的含义还没有整理!
任务分类
Graph-level task
Node-level task
Edge-level task
可以利用的信息
nodes,
edges,
global-context
master node or context vector
和全部的点或边相连接
解决 node 和 edge 信息传递速度太慢
connectivity
无监督的节点表示学习
[[GAE]]
图分类
同质图 Homogeneity
异质图
属性图
问题
A Gentle Introduction to Graph Neural Networks (distill.pub)
GNN Predictions by Pooling Information
箱线图 [[boxplot]]
+ [\[\[inductive bias\]\]](/post/logseq/inductive%20bias.html)
+ graph symmetries 对称性 permutation invariance
+ 交换顶点或边顺序,gnn 保持不变
+ Edges and the Graph Dual
+ 点和边互换
+ Graph convolutions as matrix multiplications, and matrix multiplications as walks on a graph
+ 图上做卷积相当于顶点的邻接矩阵做矩阵乘法
+ [\[\[GAT\]\]](/post/logseq/GAT.html) 对邻居的位置不敏感
+ 权重和两个顶点向量相关,和位置无关
管理大文件
使用 Git LFS 跟踪文件
git lfs track "*.jpg"
问题
[[修复 Apple Silicon 下 Sublime Merge 无法使用 git-lfs]]
Hooks 可以实现在 git 命令后,触发额外的脚本。初始化 git 项目时,会在 .git/Hooks
目录中生成一些 sample 文件。
举个例子,这个站点的 md 源文件放在 writing/notes
目录中,站点对应的项目是 xiang578/gru。每一次更新笔记后,需要手动将文件从 writing/notes
复制到 gru/docs
,然后再 push 到 github 中部署。
gru/.git/post-commit
,post-commit
代表这个脚本会在 commit 时触发,脚本代码如下:1 | !/bin/sh |
直接使用 [[Clash]] 终端代理命令,然后使用 https 下载
设置代理
1 | git config --global http.proxy socks5://127.0.0.1:7890 |
取消代理
1 | git config --global --unset http.proxy |
通过 .ssh/config
配置
1 | ssh .ssh/config |
增加新的子库
git submodule add url
子库更新到最新版本
git submodule update --remote
新项目初始化所有子库
git submodule init
git submodule update
Inductive Representation Learning on Large Graphs
GraphSAGE 是一种 inductive 的顶点 embedding 方法
之前的顶点 embedding 基于矩阵分解学习
训练一组聚合函数,从顶点的局部领域中聚合信息特征
降低计算新增节点的复杂度
[[Semi-Supervised Classification with Graph Convolutional Networks]] 框架的 inductive 扩展
aggregator functions 融合目标节点领域的特征,需要具有对称性
mean-aggregator 邻居先求平均,然后 concat 当前节点过全连接
将领域融合的特征和节点本身的特征进行拼接,通过神经网络更新每个节点的特征。
局部频域卷积的一个线性近似
gcn aggregator 结点和邻居先求平均,然后过全连接
和上一个区别在于当前节点信息什么时候和邻居节点融合,mean 是在 nn 层融合,gcn 是先求平均。
lstm
pooling aggregator
领域内每个顶点的特征向量通过全链接神经网络独立计算,然脏通过一个逐元素的最大池化来聚合领域信息
如何定义损失函数?
监督学习 [[Cross Entropy]]
无监督学习
顶点 u 和顶点 v 是在长度为 l 的 random walk 上共现的顶点。
负采样的分布函数
邻域
均匀采样得到固定大小的领域 , 确保每个 batch 的计算代价是固定的。
顶点 v 在每一层采样不同的领域,在不同层的领域大小都不同。
实验中 2 层,且两次领域数乘积小于 500
[[Ref]]
Weisfeiler-Lehman Isomorphism Test
[[Monte Carlo]],[[近似求定积分]]
f(x) 在 [a,b] 上的积分很难直接求,利用采样的方法进行计算。
假设需要估计期望 , 表示采样变量 的分布
:->
在 分布下计算期望公式 :->
重要性采样对估计的 [[方差与均值]] 影响 :-> 均值一致,但方差并不能确定一致
已知期望计算方差公式 :->
原分布p方差定义为 :->
新分布q方差 :->
根据 原分布p方差定义为 :->
和 ((66dc826d-6ba6-4a23-bf77-ce297d3e25d3))
[[Ref]]
[[李宏毅@强化学习]]
[[PPO]] 中实现
在每次策略更新之前,使用旧策略采集的一批轨迹数据。
对于每个轨迹数据点,计算新策略在旧策略下的采样概率比率,即重要性采样比率。比率的计算可以根据具体的策略表示形式进行推导。
根据重要性采样比率,对采样的数据点计算重要性采样权重,用于校正策略梯度的估计。权重的计算通常是将比率取倒数,并进行归一化处理。
使用校正后的重要性采样权重来计算策略梯度,并进行策略更新。
[[PPO 基本训练流程]]
encoder 输入
decoder 输入
feature 特征张量 (336+168,7) + 时间特征张量 (336+168,4)
168 是一次需要预测的长度
Encoder
ProbAttention
1 | def forward(self, queries, keys, values, attn_mask): |
_get_initial_context
_update_context
_get_initial_context
初始化的平均结果_prob_QK
1 | def _prob_QK(self, Q, K, sample_k, n_top): # n_top: c*ln(L_q) |
How to Read a Paper Efficiently By Prof. Pete Carr
判断论文
阅读论文
影响模型的收敛速度和模型质量。
[[Batch Normalization]] 可以有效降低深度网络对 weight 初始化的依赖。非线性计算之前,输出值有较好的分布。BN 强行将输出值做一次高斯变换和线性变换。
常量初始化
高斯分布初始化
tf.truncated_normal 按两倍标准差截断
tf.random_normal
[[正交初始化]]
不同方法的均值和方差
Interpretable Multi-Head Attention
Interpretable Multi-Head Attention
ls-type:: annotation
hl-page:: 9
hl-color:: yellow
相对于 [[Multi-Head Attention]] 的修改
参数角度 #card
针对 V 是多头共享参数 share values in each head
ls-type:: annotation
hl-page:: 9
hl-color:: yellow
,
对 Q 和 K 是多头独立参数
Attention score 使用方式 #card
计算多头 attention score 加权后的 V(求平均), employ additive aggregation of all heads
ls-type:: annotation
hl-page:: 9
hl-color:: yellow
,
原始方法中是 concat
#card InterpretableMultiHead 公式
作用:衡量 两个分布之间的距离
为什么不对称 :-> 计算两个分布之间的不同,从分布 A 的角度看分布 B 的相似程度
特点
A和B的交叉熵 = A与B的KL散度 - A的熵。
机器学习模型学到的分布和真实数据的分布越接近越好,但是现实中只能让模型学到的分布和训练数据的分布尽量相同,即 KL 散度最小。
熵 H(A) 是不依赖 B 的常数,固定 A,根据上面的公式最小化 KL 相当于最小化 H(A, B)。
由于训练数据是固定的,H(A) 不变。
如果 A 是固定的,关于 B 的优化 KL 散度等于优化交叉熵。
P 真实样本的分布,Q模型预测样本的分布,如果 Q 越接近 P,散度就越小。散度的值非负。
P 是未知分布,Q 是已知分布
KL 距离不是真正的距离,不满足 三角形不等式 和 交换律
KL散度理解 - 知乎
如何证明 KL 散度大于等于 0 #card
推导中第三行利用不等式
最后一行 和 都是概率密度函数,所以积分值都等于1
最小化 Kullback-Leibler 散度等价于最大化似然函数
梯度角度
L1 当w大于0时,更新的参数w变小;当w小于0时,更新的参数w变大
L2 正常的更新参数多了一项 $$\frac{w}{n}$$,当w趋向于0时,参数减小的非常缓慢,因此L2正则化使参数减小到很小的范围,但不为0。
解空间角度
上图的图形给出一个直观的解释,但是需要思考细节
黄色的范围是参数的空间,向 0 收缩。
两个圆的交点,就是我们需要求的参数。
L1 正则中交点有更大概率在坐标轴上,大量参数是 0 :<-> 求解出现的参数比较稀疏。
[[为什么加入正则是定义一个解空间的约束?]]
高斯分布 w 在极值点处平滑,w 在附近取不同值的可能性是接近的。L2 正则让 w 更接近于 0 但不会取 0。
[[Laplace Distribution]] 0 点处是一个尖峰,参数 w 取值为 0 概率更大。
带不同正则化目标函数对比
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTcyNjc1MDU3MTA0NV8wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6Mjk3Ljg0NDAwNDYwMDM0NDEsInRvcCI6OTcuMjkyMzQxMjYyMTA2MjUsIndpZHRoIjo0Ny42OTE1NTY2OTYzMjc3MywiaGVpZ2h0Ijo1MC41OTYzNjk5MzMyNzM5OSwiYW5nbGUiOjAsImNJZCI6MX0seyJsZWZ0IjozNTQuODQ1NzU5MDY4Mjk2MiwidG9wIjoyNDMuNzk2NDM0NjExNzQyMTQsIndpZHRoIjo0OS42ODg2MDY4NzY1ODQwMDQsImhlaWdodCI6MzcuNTkyMDQyMjg0MTYzOTk1LCJhbmdsZSI6MCwiY0lkIjoxfV19fQ==
[[MAP]] 公式 :->
1 | class Solution { |
图的矩阵表示
L 是 Laplacian 矩阵
D 是顶点的度矩阵,对角线上的元素依次是各个顶点的度
A 是图的邻接矩阵
常用拉普拉斯矩阵
Combinatorial Laplacian
方阵,主对角线出度,-1 代表两点一阶连通
顶点是度的倒数
归一化,最后每行和为 1
利用对称矩阵的形式归一化 renormalization
对称归一化的拉普拉斯矩阵(Symmetric normalized Laplacian)
随机游走归一化拉普拉斯矩阵(Random walk normalized Laplacian)
无向图的拉普拉斯矩阵性质
[[半正定]]
只在中心顶点与一阶相连的顶点上有非0元素
对称,可以进行特征分解
是 n 个特征值构成的对角阵
[[特征值]]
可以写成
[[Skip-Gram]] 根据一个单词来预测上下文
[[CBOW]] 根据中间单词预测上下文
[[RoPE]] 一种能够将相对位置信息依赖集成到 self-attention 中并提升 transformer 架构性能的位置编码方式
[[Position Interpolation]] 基于旋转位置编码RoPE进行改进,优化了外推性的问题
[[Post Norm]]
[[Pre Norm]]
[[GPT]]
[[LLaMA]]
[[GLM]]
[[Kimi]]
[[deepseek]]
[[MiniMax]]
[[Mistral]]
训练集的损失下降到一定程度后不在下降,training loss 一直在一个范围内震荡,遇到这种情况可以适当降低学习率。
常用方法
线性衰减,每过 5 个 epochs 学习率减半
decayed_learning_rate=learning_rate*decay_rate^(global_step/decay_steps)
[[Adam]] 自适应的优化方法还需要学习率衰减吗?
neural network - Should we do learning rate decay for adam optimizer - Stack Overflow
自适应优化器Adam还需加learning-rate decay吗? - 知乎 (zhihu.com)
[[Point Wise]]
全局相关性
没有对先后顺序的优劣做惩罚
将 Ranking 算法转化成回归、分类或序列回归
[[Pair Wise]] 二分类
多个 pair 排序问题,比较不同文章的先后顺序
目标
问题
考虑出现的相对位置,但是没有考虑文档在搜索列表中的位置。
不同查询相关文档数量差异大
方法
RankNet
[[GBRank]]
关注逆序部分
逆序 loss 为正,正序 loss 为零
[[List Wise]]
考虑整体序列,针对 Ranking 评价指标进行优化
方法
AdaRank
SoftRank
[[LambdaMART]]
LambdaRank
指标
MAP(Mean Average Precision)
例子
query_2有5个相关的document,分别被模型排在2,3,6,29,58位那么query_2的MAP就是(1/2+2/3+3/6+4/29+5/58) / 5,但通常情况下,我们的 不会取到58,只会关注排名靠前的document,因此排在29与58的document可以视为没有被模型检索出来,假设取m
,则query_2的AP是(1/2+2/3+0+0+3/6+0+0)/5。
+ 对以上两个query取平均即可得出MAP。
Ref
Learning to Rank for Information Retrieval
FM模型在LTR类问题中的应用 [[杨镒铭]]
NLP 之类的任务,每个 batch 采样到的词有限,每次更新对 embedding 的梯度估计是稀疏的,对 momentum-based 的 Optimizer,现在所有框架实现都会用当前的 momentum 去更新所有的词,即时这些词在连续的几十步更新都没有被采样到,这可能会使 embedding 过拟合。
LazyAdam 仅更新当前 batch 中出现的稀疏变量索引的移动平均累加器,而不是更新所有索引的累加器。
注意事项
统计单词数直接 int a[300]
这样可以省去 - 'a'
这一步操作。
代码中的 printf 不会影响最后的结果,猜测是去比较返回值。
函数里面定义数组,需要初始化。
vector<int>v(10, 0)
vector<vector<int>> dp(k, vector<int>(1 << n));
二维 vector
sort 手动传入 cmp 需要是 static 类型
sort(a.begin(), a.end(), [](vector<int>&x, vector<int>&y){return x[0]<y[0];});
n=1e5
时会超时。枚举子集 | CP Wiki n 个元素的子集枚举 $$O(3^n)$$ 复杂度
(j - 1)
将 j 最右边的 1 变成 0,得到小于 j 最大的一个二进制数(j - 1) & i
保证一定是 i 的子集1 | for (int i = 1; i < (1 << n); ++i) { |
0x3f3f3f3f
的十进制是1061109567,是10^9级别的,自身相加不会超过 int 范围,可以 memset 初始化
[[vector]] 取指定位置的迭代器
1 | vector<int>::iterator it; |
位运算的优先级
a+b^c
a+b
?=:
运算符优先级
(a[i]^b[k]) + i==0?0:dp[i-1][j]
?=:
__builtin_popcount
二进制表示中最低位
n & (n - 1)
n & (-n)
set、tuple、map 一起使用
1 | set<tuple<int, int, int>>use; |
复盘
每一道题目还是要掌握最优的解法,似乎自己都是靠运气好,暴力过的题目。
设计电影租借系统 - 力扣 (LeetCode) 竞赛 自己使用优先队列 + map
数据结构需要做到有序 + 增删,其实 set 更好,不像自己原来写的那么复杂。
模仿其他人的写,逻辑真的清晰好多
补题
ok
730. 统计不同回文子序列 - 力扣(LeetCode) ^^DP,注意题目中只有 4 个字符^^
DONE 5482. 二维网格图中探测环 - 力扣(LeetCode) ^考虑到特殊条件减少减枝^
DONE 1687. 从仓库到码头运输箱子 - 力扣(LeetCode)
需要维护之前的状态,然后观察到,每考虑一个新的箱子,需要淘汰非法的状态。
考虑到 n 的大小,状态用优先队列来维护。
DONE 1686. 石子游戏 VI - 力扣(LeetCode) AB 博弈,取石子,同一个石子两个人得分不同,问谁能赢。^得分相加,然后贪心去最大^
DONE 5638. 吃苹果的最大数目 - 力扣(LeetCode) 有什么简单的方法 ^^优先队列也没有错到哪里去,用 map 可能会方便一些^^
map 变量是有序的
维护 a[i], d[i]+i,按第二个从大到小排序,贪心,倒推能吃多少苹果
DONE 5640. 与数组中元素的最大异或值 - 力扣(LeetCode) ^利用数组的元素建立二叉树,然后查询时在树上遍历^
DONE 377. 组合总和 Ⅳ - 力扣(LeetCode) 题目给答案做了一个假设小于 int,但是直接 dp 会超过 int,记忆化搜索可以保障计算的都是需要 dp 值。^^题目给 sb 假设,就直接暴力加上这个条件^^
第 214 场周赛 - 力扣(LeetCode) [[2020/11/08]]
[[2020/11/29]] 周赛补题
DONE 5616. 数组的最小偏移量 - 力扣(LeetCode) 排序和尺取
[[2020/12/06]] 补题
TODO 石子游戏 V - 力扣 (LeetCode) 竞赛 这个题目下周之前需要做出来。
[[2020/08/23]] 第一想法背包?500 和 100w。看起来要超时。
晚上躺在床上一想,这是不是应该绝对不能写?爬起来一看题目,又是自己想错了,不是随机将石头分成两堆。看起来只要记忆化搜索就可以了。
TODO 664. 奇怪的打印机 - 力扣(LeetCode) 100
DONE 1787. 使所有区间的异或结果为零 - 力扣(LeetCode) 所有长度为 k 的子区间异或为 0,最小需要调整多少个 ^^最后答案是按 k 循环的数组,另外还有一个异或相关的优化。没有找到规律,看到 1024 直接想着按位考虑,不过后来发现太复杂了,也没有优化^^
DONE 5779. 装包裹的最小浪费空间 - 力扣(LeetCode) 如果对最后返回结果取模,答案正确,但是中间过程取模就会出错
1896. 反转表达式值的最少操作次数 - 力扣(LeetCode)
表达式解析,至少先要考虑表达式怎么解析?
auto [x, y] = make_pair(a, b)
1916. 统计为蚁群构筑房间的不同顺序 - 力扣(LeetCode) (leetcode-cn.com) 以及 1830. 使字符串有序的最少操作次数 - 力扣(LeetCode) [[乘法逆元]]
TODO [[乘法逆元]]
TODO [[费马小定理]]
结构
遗忘门 forget gate :<->
取值范围在 0 到 1
功能 :-> 控制上一个 cell
的状态 ,有多少信息进入当前状态
更新门 update gate :<->
:->
输出门 output gate :<->
cell
的输出新的 计算方式:->
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTcyMzk5MDQxOTk3NF8wLnBuZyI6eyJjb25maWciOnsiaGlkZUFsbFRlc3RPbmUiOnRydWV9LCJlbGVtZW50cyI6W3sibGVmdCI6MzQwLjM5MDM4Mjc3MTYxMjA1LCJ0b3AiOjUxMS4yNzA4NDgyMjA0NTgsIndpZHRoIjoxMjYuNjQzNDg4NDM3ODk3MDIsImhlaWdodCI6NjAuMDcwNzg4OTk5NzMzMzk1LCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjY5Mi40NDI4NTY5OTEyMDIsInRvcCI6NTE3LjU3MDYzMjMyMDcxMzgsIndpZHRoIjoxMjcuNDkxNDkxMTY5MTE0NDEsImhlaWdodCI6NDQuOTcyNzM1NDkzOTk5MzksImFuZ2xlIjowLCJjSWQiOjV9LHsibGVmdCI6NDc2LjQ4NTUyNjQ2MDQ5OTU2LCJ0b3AiOjUxNi42NjU2NTUyNzI5MSwid2lkdGgiOjEzNC40MzQ1MTUwMDAxMzgwNSwiaGVpZ2h0Ijo1MS43Nzk2NjAyMDAwNTE0NywiYW5nbGUiOjAsImNJZCI6Mn0seyJsZWZ0Ijo3OTUuODU2NzMwODU0NTY1NiwidG9wIjoxMzUuNjE0NDIxMjgxNjY2ODYsIndpZHRoIjoxNTUuNjQ4MDYwNDk5MTg2MzksImhlaWdodCI6NjkuMzMzNTA3MjI2MzI1MiwiYW5nbGUiOjAsImNJZCI6M30seyJsZWZ0Ijo1ODEuNzEzNzUzODYzODIxOSwidG9wIjo1MTQuMDExODM4MzkxMzAwOSwid2lkdGgiOjY2LjQ2ODU1MDMyMzY3OTc4LCJoZWlnaHQiOjQ5LjU5MTgzODA0NzYwMzIzLCJhbmdsZSI6MCwiY0lkIjo0fSx7ImxlZnQiOjMwNy4zNzU3NTA1OTQxOTE5LCJ0b3AiOjQzOS45ODU2NzIyMjU1NTMsIndpZHRoIjo4MC4xODAyNjA1ODQ2OTQ5NSwiaGVpZ2h0Ijo1NS4yMzA1MDc5ODE0MzQwNywiYW5nbGUiOjAsImNJZCI6Nn0seyJsZWZ0Ijo0NTguMTE3ODI1NzAyNjgwOTMsInRvcCI6NDUyLjQyNTUwMDc4ODk2NTgsIndpZHRoIjo1MS4xNzc5MjQ4MjcxOTY5OSwiaGVpZ2h0Ijo0Ny44NDAyNDc5OTExNjM4MzUsImFuZ2xlIjowLCJjSWQiOjd9LHsibGVmdCI6NTk1LjIzNDc3NTY4MTMwMzYsInRvcCI6NDQ0Ljg2NzUyNjAzMjg4MzgsIndpZHRoIjo1NC40MjU1MDU2NDk3ODg4NywiaGVpZ2h0Ijo0Ny45NjUyODU2NzE5OTQ3MSwiYW5nbGUiOjAsImNJZCI6OH0seyJsZWZ0Ijo2NjMuOTgyNTIzMzQzNzE2NSwidG9wIjo0NzEuNzA1MDM3MzM3MTMyODYsIndpZHRoIjo2Ni45MTk5OTk5MzU2ODU4NCwiaGVpZ2h0IjozNi43NjQ1MTMyNTIyNzM3OSwiYW5nbGUiOjAsImNJZCI6OX0seyJsZWZ0IjoxNDM0LjY2MTY5OTgzOTU4MDcsInRvcCI6NDMxLjg4MjY3Mjk4MDY2MTgsIndpZHRoIjo1MTAuNDI5MTc2MTI1ODU3MSwiaGVpZ2h0Ijo1ODEuMTI3NTA4NzM2NTQyOCwiYW5nbGUiOjAsImNJZCI6M31dfX0=
使用饱和的非线性函数
为什么 :-> 在输入达到一定值后,输出就不会发生明显变化
[[sigmoid]] 阈值 0-1 :-> 模拟开关的关闭程度,用于各种门
[[Tanh]] 阈值 -1 到 1,梯度的阈值为 0~1 :-> 生成记忆
0 中心
输入在 0 附近相比 Sigmoid 函数有更大的梯度
为什么不使用 relu :-> 只能输出大于 0 的部分,前向传播容易发生信息爆炸性增长。
[[LSTM/Backward]]
[[LSTM/Question]]
Lesson 7B - The Curate Session - Source Curation
链接:7B The Curate Session Source Curation (youtube.com)
Problem:
You are spending hours reading and when you get to the end you realize you have maybe one relevant note, or the book you just spent time reading wasn’t relevant at all.
You’ve got hundreds of sources in your Zotero and you have no idea how you will get through them all.
Solution: When in doubt… curate.
And Page Title on DNP, 开始一个番茄钟完成整理。
Review the TOC
Check Index
Read the publisher blurb
Find pivotal chapters
Read Chapter first paragrphs
Dip In
Read the abstract
Read the conclusion
Read the introduction
Dip In
Why am I reading?
What is the main point of this? What is it about?
What is the specific question?
What are the results/findings
Does this relate to something else I have read? Or a topic/section of my outline? - Add keywords to tags section
Dip In Thoughts:
Status: Source Review
or Source Complete
Guides you through a thought process to support your decision on whether to continue with the source. 引导您通过思考过程来支持您决定是否继续使用该来源。
If you DON’T read the source, the information gleaned means you won’t find yourself repeatedly visiting a source you have forgotten you discarded, plus it presents the solid reasons why.
If you DO read the source, the information gleaned serves as a solid jumping point for the Collection Process.
美国著名管理学家 [[Jim Collins]] 分享记笔记的方法
通过三列表格记录自己的每一天
第 1 列包含一天的描述
早起,2小时的创意工作,与妻子共进早餐,
5小时的创意工作,锻炼,午睡,
3小时的创意工作,与妻子共进晚餐,上床睡觉
第 2 列那一天创造性工作的小时数
过去 30 年里,每年工作超过 1000 小时
每三个月,吉姆会计算他的速度,并确保在接下来的九个月里,他平均每年能达到1000个有创造力的小时。
第 3 列列出一个数字记录当天的情绪
[-2, +2]
追踪当天整体情绪状态如何处理这些数据?
他可能会检查过去5年中所有的 + 2天,看看他平均每天有多少创造性的工作时间
情绪很好的日子,往往创造性时间也比较长;
情绪很好的日子都“非常简单”,比如去攀岩,和真正爱的人在一起,或者完全独处。
或者他会周期性地读一遍他对自己每天所做事情的描述
然后,他会简单地尝试将更多关于 + 2 天的东西融入到他的生活中
Bug Log
用第三人称的方式,你写下你在生活中遇到的情况中喜欢/不喜欢的东西,时刻牢记找到自己的 hedgehog
你冷静客观地在书中做笔记,“观察那个叫[你的名字]的 bug ”
举个例子,你可以这样写: The bug Jim 讨厌在会议上花时间
如何实践?
每天日历增加 Log 板块,按时间记录在做什么
增加状态标签
为什么需要持续学习?
[[Catastrophic Forgetting]] #card
举的例子中提到模型依次学习不同任务,任务学习过后就会遗忘。将不同任务混合训练,在不同任务上都有比较好的表现。
[[Multi-Task Learning]] 可以解决遗忘,但是每次新增加任务都需要从头训练。
LLL 不希望保留之前任务的 数据
Life Long Learning 的 upper bound
可塑性和稳定性 train a model for each task #card
存储多个模型
不同任务间的知识迁移
和 finetune 有什么区别? [[Transfer Learning]] #card
关注其他任务的学习能不能提高目标任务的表现,侧重训练后新任务表现怎么样。
LLL 关注训练新任务后,旧任务表现怎么样。
[[不同学习场景对比]]
分类
任务增量型持续学习(Task-Incremental CL)
类增量型持续学习(Class-Incremental CL)
域增量型CL(Domain-Incremental CL)
任务不可知型持续学习(Task-Agnostic CL)
模型在测试过程中可能会应对任意位置的任务
需要模型学到的特征能够容易地泛化到任意新场景
如何评估效果?
a sequence of task
: 训练 task i 后 task j 的效果
i > j
j 是否被遗忘?
i < j
任务 i 能否被迁移到任务 j
指标
Accuracy
Backward Transfer
评估遗忘程度(下降程度)
一般结果小于 0
Forward Transfer
为什么会发生 [[Catastrophic Forgetting]] #card
?
Regularization-based Approach
思路:保留模型先前学习到的重要参数,只改变不重要的参数学习新任务。
之前学习到的参数
评估 对前面模型的重要性
会出现 [[Catastrophic Forgetting]]
bi 过大会出现新任务学习不好 intransigence
bi 由人为设定,如果由模型学习,bi=0 后一项损失最小。
如何选择?
例子
SGD 代表之前的方法,学习 B 和 C 后,A 的效果明显下降。
L2 代表 ,B 和 C 很难学习
+ 研究如何计算不同的 bi 值
+ Elastic Weight Consolidation (EWC)
+ [\[\[Synaptic Intelligence\]\]](/post/logseq/Synaptic%20Intelligence.html) (SI) 参数改变对损失函数的影响
+ Memory Aware Synapses (MAS) 参数改变对模型输出的影响
+ RWalk
+ Sliced Cramer Preservation (SCP)
+ gradient episodic memory
+ 对梯度更新方向做出限制
+ task 1 和 task 2 的梯度做点积大于 0,让两个任务的梯度更新方向尽可能相同。
+ 需要记录过去 task 的梯度信息 (远小于过去task的数据量)
+ 不动已经训练好的模型参数,将它做为下一个模型某些层的输入,再增加模型学习新任务的参数。
+ PackNet
+ 不增加神经元数量,每个任务只使用部分模型参数
+ Compacting, Picking, and Growing (CPG)
+ 上面两种方法结合
Lesson 8C - The Building BLOCKS (Pt 3)
A Block is referenced and becomes part of a paragraph in an Output Page 一个区块被引用并成为输出页面中段落的一部分 #card
A journal response Block on your DNP #card
A Block is a note from a specific source and it lives on your Source Page #card
Nested under Page Backlink - Links Block and Page as a Linked Reference to another Page (Important) 嵌套在页面反向链接 - 链接块和作为另一个页面的链接引用(重要) #card
You are taking notes on a new source on your DNP and you nest notes underneath a source page link so you can relate your notes to the date. You will move important Blocks to On Page Blocks later
You are synthesizing Blocks on a Source Page and you realize you’d like to see many of them when reviewing a particular topic. You nest under a Topic Page Backlink
Page mentions (no double bracket)- Links Block as an Unlinked Reference (Not Important) 页面提到(无双括号)- 链接块作为未链接的引用(不重要)
读书笔记:关于小说创作的结构关键点
概要(Executive Summary):书中提到的每个情节都遵循一种特定的结构,复制这种结构即可能写出成功的故事。最初这种方法来源于电影,现在被应用到小说中。
+
第1章:
+ 建议从角色缺陷开始,因为每个伟大的故事都有一个有缺陷的角色。
+ 提到“灵魂的黑暗之夜”是小说中的一个关键点,反映角色如何应对逆境并最终突破,通常在故事的75%-80%处。这是一个角色思考和制定解决方案的时刻。
+
Nesting (Very Important)
Relationships
Thought Process
Tagging (Important)
Serendipity (Less Important, but extremely powerful)
[[XGBoost]] 支持两种方式
把原来的模型作为新的训练的初始模型
无法解决在新数据上训练后对老数据的遗忘问题
tests/python/test_training_continuation.py
process_type: update
refresh
prune
当前迭代树的基础上增加新树,原树不变
当前迭代树结构不变,重新计算叶节点权重,同时也可增加新树
keep_training_booster=rue
,init_model
为上一轮的结果Ref
创新点
GOSS :-> [[Gradient-based One-Side Sampling]] 单边梯度抽样算法
分裂方法 :-> [[Histogram-based Algorithm]]
EFB :-> [[Exclusive Feature Bundling]]
带深度限制的 [[Leaf-wise 叶子生长策略]]
level-wise 生长策略不加区分对待同一层的叶子,很多叶子分裂增益较低,没有必要进行搜索和分裂。容易进行多线程优化。
[[Level-wise 叶子生长策略]]不加区分对待同一层的叶子,很多叶子分裂增益较低,没有必要进行搜索和分裂。容易进行多线程优化。
每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环
分裂次数相同的情况下,leaf-wise 可以降低更多误差,得到更好的精度。
通过树最大生长深度,避免过度拟合
类别特征最优分割
时间复杂度 :->
每一次切分尽可能分成两个数量接近的集合
具体实现
并行
特征并行 :-> 每台机器保存所有训练数据,找到最佳划分方案后,本地执行重分区。避免[[XGBoost]]中不同机器同步划分方案。
数据并行 :-> Reduce scatter 把直方图合并的任务分摊到不同机器,利用 直方图做差加速
投票并行
缓存优化
[[Ref]]
[[LightGBM Bin]]
工程优化方案论文 A communication-efficient parallel algorithm for decision tree
源码
[[LightGBM/training]]
加强拟合
增大 max bin
小 learning rate 和大 num iterations
大 num leaves
大训练集
dart
减少拟合
小 max bin
小 num leaves
损失函数
MAPE
MAE
WeightedPercentileFun
id:: 63137188-e688-40b0-82ea-1623abcdf2fe
[[Exclusive Feature Bundling]] 中如何确定绑定特征的特征值? #card
模型可以通过值的范围来辨别不同特征
histogram-based 算法会将连续值保存为离散的 bins,将不同特征的值分到 buddle中不同的 bin 中。如果原始值存在相同,可以通过增加偏移量来解决。
分裂方法 :-> [[Histogram-based Algorithm]]
的优点有那些? #card
减少特征排序后位置索引的内存占用
,
减少预排序计算量,从 #data* #features
到 #k* #features
对比 LightGBM 和 XGBoost 的分裂策略区别?
类别特征最优分割
如何实现? #card
histogram 算法相对于 exact 算法有什么内存优势?
排序后对梯度是顺序访问,可以进行 cache 优化
直方图算法的内存消耗 :-> ( #data* #features * 1Bytes
)
xgboost 的 exact 算法内存消耗为 :-> (2 * #data * #features* 4Bytes
)
[[Histogram-based Algorithm]] 在 选择好分裂特征后,计算分裂收益时 相比于 exact 算法有计算优势
预排序算法需要 遍历所有样本的特征值 ,时间为 #data
[[Histogram-based Algorithm]] 需要 遍历分桶桶 ,时间为 #bin
lgb 相对于 xgb 有什么改进 #card
内存需求小,xgb pre-sorted 决策树,lgb 基于 histogram 的决策树算法
计算速度快,决策树算法主要包括寻找分割点与数据分割两步。pre-sorted 算法和 histogram 算法在寻找分割点上的时间复杂度是一致的。histogram 所有特征共享一张索引,pre-sorted 一个特征对应一张索引。histogram 随机访问性能好。
通信代价小,适用于分布式计算
一个随机变量的对数服从 [[正态分布]],则该随机变量服从对数正态分布。
[[概率密度函数]]
期望
方差
逻辑回归,能融合多种特征。
是 link function
线性分类
硬分类 :<-> 直接输出输出对应的分类
线性判别分析[[Fisher]]
[[感知机]]
软分类 :<-> 产生不同类别的概率
概率生成式(连续),类别先验 [[Gaussian Discriminant Analysis]] GDA [[Naive Bayes Classifier]]
概率判别式(离散) Logisitic Regression
逻辑回归
P(Y|X, \theta)=p_1^yp_0^{1-y}$$ 服从[\[\[Bernoulli Distribution\]\]](/post/logseq/Bernoulli%20Distribution.html) + 求 MLE 转化成 Cross Entropy
取 $$z=\ln \frac{P(x|C_1)P(C_1)}{P(x|C_2)P(C_2}$$
激活函数 [[sigmoid]]
阶跃函数不连续,sigmoid函数光滑,处处可导
数据取值范围从正无穷压缩到 0-1
两类联合概率比值的对数
odds 几率代表事件发生和不发生的比值 $$\frac{p}{1-p}$$
对数几率的线性回归
MLE $$w=\mathop{argmax} \sum(y_i \log p_1 + (1-y_i)\log p_0)=\mathop{argmax} \sum(y_i \log f(x,w) + (1-y_i)\log (1-f(x,w))$$
多分类
softmax regression
参数冗余
多标签:每个标签设计一个分类器
在推荐系统中,LR 当成是一个分类问题处理,通过预测正样本的概率对物品进行排序。将推荐问题转化为预估问题。另外也能使用 [[Pair Wise]]
优点
数学含义:用户是否点击广告是一个经典的掷偏心硬币问题,显然符合伯努利分布
可解释性强
工程化较为简单
[[面试]]
LR归一化问题
提到LR损失函数要能知道交叉熵,为什么是它,以它为损失函数在优化的是一个什么东西,知道它和KL散度以及相对熵的关系
提到LR的求解方法,比如SGD,知道SGD和BGD的区别,知道不同的GD方法有什么区别和联系,二阶优化算法知道什么,对比offline learning和online learning的区别
提到调参,知道模型不同超参数的含义,以及给定一个特定情况,大概要调整哪些参数,怎么调整
提到LR的正则,知道l1l2的原理,几何解释和概率解释
LR的分布式实现逻辑是怎么样的,数据并行和模型并行的区别,P-S架构大概是怎么一回事
LR作为一个线性模型,如何拟合非线性情况?
LR 如何解决低维不可分
假设误差服从某种特定分布,然后通过 MLE 推导最终 loss 形式。
MSE 反向传播梯度
MSE 梯度容易受到异常值影响。异常样本 label 非常大时, 的值也会非常大,将模型带偏。
MAE 反向传播梯度
MSE 和 MAE (L2 损失和 L1 损失)
x 是 label
p 预估购买概率
预估金额
网络结构
[[Weighted Logistics Regression]] 预估用户观看时长
出处 [[@Deep Neural Networks for YouTube Recommendations]]
[[Cross Entropy Loss]] 正样本以时长为权重,负样本权重为 1。模型能学习到观看视频的时间
,reweight 后,改变正负样本的比例。
label 为 T 的样本,相当于在分类任务重变为 T 个正样本。正样本总体比例变成
LR 可以写成
上面推导如果不忽略 k
label为 T 的样本,把它当做 T 个正样本和一个负样本,为每个正样本多增加一个负样本。
reweight 之后相当于假设 label 服从参数为 p 的几何分布(失败概率),label T就是几何分布的 pdf 取 log 后提到前面的值,表示连续失败 T 次。
[[Bucketing with Softmax]] 对 label 的值域进行分桶,根据每个样本的 label 把样本分到某个桶里。回归任务转成多分类问题,使用 softmax 损失函数训练。
线上预测时,用 softmax 预估的概率分布对每个桶做加权求和。
如何确定分桶数量和每个桶大小?
优化
分桶之后会丢失 laebl 之间的大小关系(label=50 分到 [0,10] 或 [51,100] 的损失没有区分性)。引入[[Label Smooth]]
[[ETA]]
均值和中位数哪个大?均值大?
对于 badcase 来说,哪个模型效果更好?
MSE 对异常值更加
MAPE 没有上界,对异常值敏感,训练出来的模型倾向于低估。(高估带来较大的惩罚)
SMAPE 有界(0-200),高估和低估的上界都是 200 。
问题
钉钉提示没有麦克风权限,然后在系统设置页面相关选项下没有钉钉可以添加。
重置相关设置,重启钉钉,发起会议,触发请求权限的弹窗。
重制 mac 上麦克风、摄像头、屏幕录制的权限
1 | sudo tccutil reset Microphone |
将在原串中加入特殊字符,比如#
组成一个新的字符串,这样可以把所有奇数或偶数的字符串都变成奇数长度的字符串. 例如abba
可以转化成$#a#b#b#a
用一个辅助数组P[i]
,代表以S[i]
为中心的最长回文串向左或向右扩展的长度.最后max(P[i]-1)
为最长回文串的长度
当 P[j] > mx - i 的时候,以S[j]为中心的回文子串不完全包含于以S[id]为中心的回文子串中,但是基于对称性可知,下图中两个绿框所包围的部分是相同的,也就是说以S[i]为中心的回文子串,其向右至少会扩张到mx的位置,也就是说 P[i] >= mx - i。至于mx之后的部分是否对称,就只能一个一个匹配了。
[[博弈论]]
[[微积分]]
极限
导数
[[泰勒公式]] 用 多项式来近似 表示 函数在某点周围的情况
偏导数
梯度
链式法则
[[Jacobian 矩阵]] 以及 [[Hessian 矩阵]]
向量与矩阵求导
[[线性代数]]
[[特征值]]与特征向量
奇异值分解 [[SVD]]
[[迹]]
[[统计学]]
优化
链接: 新 All Posts - Master How To Learn、 旧 Posts – Master How To Learn
[[Incremental Reading]] 相关资料
The Significance of Incremental Reading in SuperMemo: Part I
The Significance of Incremental Reading in SuperMemo: Part II
[[@Demonstration: My Workflow of Incremental Reading]]
Why I Switched to SuperMemo After Using Anki for 5 Years, With Over 50k Cards and 420k Total Reviews - Master How To Learn 资深 Anki 用户讲述为什么逃离到 Supermemo,部分内容比较专业,不适合新人。
two nagging reasons
Burning out in Anki
Believing in the superiority of the SM-17 algorithm
two final push reasons
Frustration with Transfer of Knowledge in Anki
Realizing the benefits of Incremental Reading
burning out in anki
high review count
Frustrated with the Anki Settings
MetaWebLog API — 一个多平台文章同步的思路 - 知乎 (zhihu.com)
YHaoNan/obsidian-metaweblog: A obsidian plugin to support metaweblog API. (github.com) 从 Obsidian 发布到博客园,支持拉取博客园已有文章到本地
使用Python和MetaWeblog API发博客 - 拾月 (skyue.com) python 脚本fa bu
T/S/X-Learner [[@Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning]]
适用情形:#card
[[S-Learner vs T-Learner]]
Summary
Abstract
dictionary look-up
Introduction
创新点:用队列表示字典
什么样的字典才适合对比学习?
(i) large
从连续高维空间做更多的采样,字典 key 越多,表示的信息越丰富
字典小,key 少,模型泛化能力弱
(ii) consistent
字典中的 key 应该用相同或相似的编码器生成
如果key是使用不同编码器得到的,查询时可能找到与 query 使用相同或相似编码器生成的key,而不是语义上相似的 key
无监督在 CV 领域不成功的原因
原始信号空间的不同
NLP 原始信号是离散的,词、词根、词缀,容易构建 tokenized dictionaries 做无监督学习
tokenized: 把一个词对应成某一个特征
Why tokenized dictionaries 有助于无监督学习?
把字典的 key 认为是一个类别,有类似标签的信息帮助学习
NLP 无监督学习很容易建模,建好的模型也好优化
CV 原始信号是连续的、高维的,不像单词具有浓缩好的、简洁的语义信息,不适合构建一个字典
如果没有字典,无监督学习很难建模
无监督学习主要的两个部分:
pretext tasks 代理任务
学习更好的特征表示
常见代理任务
denoising auto-encoders 重建整张图
context auto-encoders 重建某个 patch
cross-channel auto-encoders (colorization) 给图片上色当自监督信号
pseudo-labels 图片生成伪标签
exemplar image 给同一张图片做不同的数据增广,它们都属于同一个类。
patch ordering 九宫格方法:打乱了以后预测 patch 的顺序, or 随机选一个 patch 预测方位 eight positions
利用视频的顺序做 tracking
做聚类的方法 clustering features
loss functions
衡量模型预测结果和固定目标的差异
L1 or L2 Loss
判别式网络
eight position
对比学习损失:目标不固定,训练过程中不断改变
对抗学习损失:衡量两个概率分布之间的差异
Method
+ 一张图片 $$x_{i}$$ 经过翻转+裁剪等方法得到 $$x_{i1}$$ 和 $$x_{i2}$$,这两张图片做为正样本,其他图片做为负样本。
+ $$x_{i1}$$ 是 anchor
+ $$x_{i2}$$ 是 positive
+ 编码器 E11 和 E12 可以相同,也可以不同。
+ 对比学习怎么做?
+ f11 和 f12 接近,和其他样本远离
+ matching key and dissimilar to others
+ Learning is formulated as minimizing a contrastive loss
+ f11 当成是 query,在字典中查询接近的 key
如何构建大 + 一致的字典
基于队列的字典
摆脱 batch size 的限制
用队列大小限制字典大小
基于动量的编码器
momentum encoder 由当前的编码器初始化得到
动量 m=0.999 比较大是,动量编码器更新缓慢。尽可能保证队列的 key 由相似的编码器生成
和之前方法对比
end-to-end 牺牲大
memory-bank 牺牲一致性
moco
encoder 基于梯度更新
momentum encoder 基于 encoder 进行动量更新
目标函数 [[InfoNCE]]
计算 q 和 k 的点积判断两个样本之间的相似度
\tau$$ 控制分布图形,越大越关注困难样本
Experiments
7 个检测 + 分割任务
linear protocol
预训练模型,应用时只改变最后的全连接层。
backbone 做为特征提取器
对比预训练的效果好不好
Conclusion
1000 倍数据增加,moco 性能提升不高
尝试NLP中其他代理任务 masked auto-encoding
[[Masked-Language Modeling]]
见 [[Masked Autoencoders Are Scalable Vision Learners]]
总结
官方提供[[轴体]]
Clicky 清脆手感
[[Kailh Bronze]](Thick Gold) 50g 茶轴
[[Kailh Gold]] 60g
Kailh Box White 45g 白
Linear 线性手感,没有明确的物理回馈感,可能增加误触机率
[[Kailh Silver]] 40g,提前触发
Kailh Box Red 45g
Kailh Box Black 60g
Tactile 段落轴,有按键确认感,弹性手感
[[Kailh Copper]] 40g
Kailh Box Brown 50+15 茶轴
Tent Kit 支架
Zip Kit
DONE BERT 可解释性-从"头"说起 - 知乎 [[BERT]],不停的 mask 结构,判断对指标的影响。[[2021/06/16]]
任务:query-title
按 query-doc 相关程度分成 5 类
用 BERT 做多分类
研究各个头对模型的影响:通过将 attention = 0 来 mask 对应的头
结论
attention-head 很冗余/鲁棒,去掉 20%的 head 模型不受影响
144 个 head 随机 mask
分成 0-5 层、6-11 层 mask
各层 transformer 之间不是串行关系,去掉一整层 attention-head 对下层影响不大
各个 head 有固定的功能
某些 head 负责分词
某些 head 提取语序关系
某些 head 负责提取 query-title 之间 term 匹配关系
[[香侬科技@为什么Transformer 需要进行 Multi-head Attention?]]
借鉴了CNN中同一卷积层内使用多个卷积核的思想
Transformer,或Bert的特定层是有独特的功能的,底层更偏向于关注语法,顶层更偏向于关注语义。
多头中多数的关注模式是一致的
就是希望每个注意力头,只关注最终输出序列中一个子空间,互相独立。其核心思想在于,抽取到更加丰富的特征信息。
利用多组 $$W$$ 值和 $$X$$ 相乘,得到多组不同的 $$Q$$ $$K$$ $$V$$,分别利用这几组向量去做 self-attenttion,最终将得到的 attention 结果 concat 在一起。
论文中每一层有 h=8
个 attention
输入的向量大小为 512,为了保持大小相同,每个 attention 中的 $$d_k=d_v=d_{model}/h=64$$
从原理上来看,multi-head 相当于在计算次数不变的情况下,将整个 attention 空间拆成多个 attention 子空间,引入了跟多的非线性从而增强模型的表达能力。
论文中一共使用了三种 multi-head attention
encoder-decoder attention
:query 来自前一个 decoder 层的输出,keys,values 来自最后一个 encoder 输出。
encoder self-attention
:query,key,value 都来自前一层 encoder 的输出。这允许 encoder 的每个位置关注 encoder 前一层的所有位置。
decoder masked self-attention
:query,key,value 都来自前一层 decoder 的输出。这允许 decoder 的每个位置关注 encoder 前一层的、在该位置之前的所有位置。
第一种 QVV 模式,后面两种 VVV 模式
基本网络框架 [[底层共享法]]
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTczNjE3NTMyNDk1N18wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6MjY3Ljk5MzU1MDM0NDkxNjksInRvcCI6NjAyLjM4MzAxMDkzMDM5MjIsIndpZHRoIjozNDEuMTMyNDgzNDEzNjAxLCJoZWlnaHQiOjg3LjIzMzk3ODEzOTIxNTc2LCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjEyODcuMTM3ODQyNzI5Nzg5LCJ0b3AiOjYwMy44MTA5NTY5NDUzNjkzLCJ3aWR0aCI6Mjk5Ljk5MDY0NDI5MTI0MjIzLCJoZWlnaHQiOjg0LjM3ODA4NjEwOTI2MTI4LCJhbmdsZSI6MCwiY0lkIjoxfV19fQ==
结构
[[MMoE]]
CGC
ESSM
[[PLE]]
Optimization
Gradnorm
考虑 Loss 量级和考虑不同任务的速度
Label loss 和 Gradient loss
Dynamic Weight Averaging
两大分支:“网络设计” 以及 “损失函数设计”
关键点
任务需要有相关性
任务之间可以共享低层表示
网络设计
TODO 参考 [[神经网络与深度学习]]
网络如何小巧轻便,如何最大幅度的让不同的任务去共享信息。
Hard parameter sharing 底层共享参数,最上层有不同的任务。
Task 越多,单任务越不容易拟合
底层难以学到试用于所有任务的表达,比如多任务:猫狗分类,猫汽车分类
Soft parameter sharing
层次共享
共享-私有
Cross-Stitch Network、Multi-Attention Network、AdaShare、MTL+NAS 可以参考 “综述性质的文章Multi-task Learning and Beyond: 过去,现在与未来 - 知乎”
损失函数设计
类似方向 [[Auxiliary learning]]
[[Ref]]
DONE [[@深度学习的多个loss如何平衡?]]
[[@蘑菇街首页推荐多目标优化之reweight实践:一把双刃剑?]]
综述 Multi-Task Learning for Dense Prediction Tasks
[[@推荐精排模型之多目标模型]]
:->
第一项和第二项是线性回归
引入第三项神经网络学习 :-> 数据之间的高阶特征
tags:: #[[Model Architecture]]
Embedding Layer 层对输入的稀疏数据进行 Embedding 操作。最常见的 Embedding 操作是在一张权值表中进行 lookup ,论文中作者强调他们这一步会将 Input Feture Vector 中的值与 Embedding 向量相乘。
Bi-Interaction Layer 层是这篇论文的创新,对 embedding 之后的特征两两之间做 element-wise product,并将结果相加得到一个 k 维(Embeding 大小)向量。这一步相当于对特征的二阶交叉,与 FM 类似,这个公式也能进行化简:
Prdiction Layer 层输出最终的结果:
实验结果:  tags:: #HOFM
Four kinds of luck
The first kind of luck is ^^blind luck^^ where one just gets lucky because something completely out of their control happened. This includes fortune, fate, etc.
Then, there’s luck through persistence, hard work, hustle, and motion. This is when you’re running around creating opportunities. You’re generating a lot of energy, you’re doing a lot to stir things up. It’s almost like mixing a petri dish or mixing a bunch of reagents and seeing what combines. You’re just generating enough force, hustle, and energy for luck to find you.
A third way is you become very good at spotting luck. If you are very skilled in a field, you will notice when a lucky break happens in your field, and other people who aren’t attuned to it won’t notice. So, you become sensitive to luck.
The last kind of luck is the weirdest, hardest kind, where you build a unique character, a unique brand, a unique mindset, which causes luck to find you.
The Almanack of Naval Ravikant
[[@How to Get Rich]]
[[@Augmenting Long-term Memory]] 作者使用 Anki 两年半左右的总结,超过 1w 张卡片,每天大约需要 15-20 分钟复习。
如果复习时间超过 20 分钟,意味着添加卡片速度太快,需要放慢速度。
理解和小的经验
解决 [[Internal Covariance Shift]]
连续特征的值分布不统一,会导致训练波动,影响收敛速度。
归一化:对不同特征维度的伸缩变换的目的是使各个特征维度对目标函数的影响权重是一致的,即使得那些扁平分布的数据伸缩变换成类圆形。
[[归一化方法]]
减少人为参数选择
缓解过拟合
减少梯度消失,加快收敛速度,提高训练精度
通过计算均值和方差的集合分成,输入 [N, C, H, W]
维度图片
[[Group Normalization]]
[[Batch Normalization]] 神经网络中间层进行归一化
(N, H, W)
的统计量[[Layer Normalization]] RNN 等序列模型
[[Instance Normalization]]
与 LN
相同对单个样本操作
IN
对同一层神经元中的同一个通道进行归一化
[[Weight Normalization]]
Links are first-class citizens
The acts of the mind, wherein it exerts its power over simple ideas, are chiefly these three:
Hierarchy gives us No. 1, and linking gives us No. 2. We’re still unsure what No. 3 entails in the context of note-taking, but it might have something to do with programming or macros.
[[Ein Verne]] Obsidian 未来的笔记应用 | Verne in GitHub
首先,将几个简单的想法组合成一个复杂的想法,从而完成所有复杂的思维过程;
第二,是将简单或复杂的两个想法放到一起,相互设置关联,方便查看它们,而同时又不将它们融合到一起,从而可以一眼查看所有想法之间的关联。
第三,是将这些想法与实际存在的所有其他思想分开:这称为抽象思维,这是所有普适思想形成的过程。
笔记的层级关系 (Hierarchy) 实现了第一点,而内部链接 (linking) 正是第二点,而第三点如何在笔记中应用, Obsidian 的作者也没有想清楚,但他也说了,这可能是更高阶的抽象 —- but it might have something to do with programming or macros.
不等式约束优化问题中局部最小值的必要条件是什么?
是否所有的优化问题都可以转化为对偶问题? #[[incremental]]
+
为什么深度学习不用二阶优化 #card
计算复杂度,二阶导数计算是平方复杂度
小批量的情况下,牛顿法对与二阶导数的估计噪音太大
梯度下降找到的一定是下降最快的方法? #card
对所有优化问题来说,有没有可能找到比现在已知算法更好的算法? #card
#Workflow
Project: a series of tasks linked to a goal, with a deadline. 一系列与目标相关的任务,有明确的结束时间。
Resource: a sphere of activity with a standard to be maintained over time. 一个有明确标准的活动范围,随着时间的推移需要维持一个标准(或者状态
Area: a topic or theme of ongoing interest. 持续感兴趣的话题和主题。你的身份领域
Archives: inactive items from the other three categories. 其他三类完成的归档
Project 目标 和 Area 身份角色的区别
Project 有一个要实现的目标,以及结束日期
Area 有一个标准需要维护,持续关注
每一个项目都应该有单独的笔记、资源和你做的学习成果。
如何实践这个方法
列出需要项目
将项目列表复制到你现在和将来使用的每一个工具上。集中化的一致性,分散化的适应性。
原则
四个类别(项目、区域、资源、档案)。避免类别太多,层级太多
任务管理和项目管理系统使用统一套 PARA
可操作和不可操作信息,比如每天集中注意力在你的项目上。
实践
先从尝试项目管理开始,比如现在关于每一个项目的记录。
慢慢演化习惯。
在 Project 上在设置一层比传统的方式更加灵活
[[Ref]]
左转根据方差定义拆开
要证明
左边第一项
左边第二项
两项相加
什么是 PS ?
分布式进行梯度下降的计算完成参数的更新与最终收敛
和 [[Spark MLib]] 一样数据并行训练产生局部梯度,再汇总梯度更新参数权重的并行化训练方案
参数服务面临的挑战
访问参数需要的大量带宽
算法需要有序更新参数,不同服务器之间同步带来的时延
训练容灾
PS 重要特征
异步同行
灵活的一致性模型
弹性扩展
容灾
方便使用
并行梯度下降流程
任务管理器
Worker
初始化
加载训练数据
从 server 节点拉取参数
迭代
根据本节点训练数据计算梯度
将计算好的梯度 push 到 servers 节点
pull 最新需要用到的参数
Servers
汇总 m 个 worker 计算出的梯度成总梯度
利用总梯度和正则化项梯度,计算新参数
物理架构
server group 管理,每个 server 维护部分参数
Range Push 和 Pull
一致性和并行效率之间的取舍
同步阻断式
异步非阻断式
最大延迟
新的参数没有获取到时,使用旧的参数计算梯度
指定 X 轮迭代必须等待更新参数
Vector Clock
多 server 节点的协同和效率问题
server group 管理,每个 server 维护部分参数
通过[[一致性哈希]]计算参数位置以及分配对应的服务器
服务器 S1 会计算 S1 对应的参数,也会备份之后几个 server 对应的参数
增加节点相当于将 range 分裂
删除节点可以让临近节点负责
总结
用异步非阻断式的分布式梯度下降策略代替同步阻断式的梯度下降策略
实现多 server 节点的架构,避免单 master 节点带来的带宽瓶颈和内存瓶颈
使用[[一致性哈希]],range pull 和 range push 等工程手段实现信息的最小传递,避免广播操作带辣的全局性网络阻塞和带宽浪费
问题
各 worker 之间如何同步?
如何解决 DNN weight
AllReduce 完成 dnn weight 在各 worker 节点同步
feature embedding 使用纯异步 ASP 模式,dnn weight 使用纯同步 SSP 模式
基于ps-lite实现分布式算法
阿里巴巴的XDL
快手的Persia
数据分区
改善 GCN 的可扩展性
On-the-fly 卷积
生产者-消费者 mini-batch 构建
高效的 MapReduce 推断
[[Ref]]
[[Position Encoding]] 和 [[Position Embedding]] 区别
学习式,不可扩展
固定式
分类
absolute positions 绝对位置编码
relative positions 相对位置编码
Position Representation 结果 Concat 和 Add 的区别
联系 :-> 三个 embedding 相加相当于三个原始的 one-hot 拼接再经过一个全连接网络。
concat 效果不会比 add 差,但是会增加参数量
Position Representation 信息到达上层之后为什么不好消失?#card
[[ResNet]] 机制,模型输入特征会直接传递到上层
有一个 Transformer 版本每一个 encoder 输入都会加上 position embedding
为什么使用
如何理解Transformer论文中的positional encoding,和三角函数有什么关系? - 知乎 (zhihu.com) #card
如何构建一种位置编码?
直接使用下标计数 PE= pos
使用文本长度对每个位置归一化 PE = pos/(T-1)
有界周期函数
本质对位置信息进行建模,需要满足
需要体现同一个单词在不同位置的区别
相对次序关系,体现先后次序关系,编码差异不应该依赖于文本长度
值域落在一定数值区间内
Positional Encoding/Sinusoidal
公式
pos 代表位置编号,i 代表维度。不同维度对应不同波长的曲线,波长从 2pi 到 2000pi。选择这个看起来不是很直观的公式,主要是利用三角函数的特性实现 线性表示 。
波长比较长时,相邻字的位置编码之间的差异比较小
不同维度上应该用不同的函数表示位置编码
三角函数的周期性表示相对位置信息。位置 $$\alpha + \beta$$ 的向量可以表示成位置 $$\alpha$$ 和位置 $$\beta$$ 的组合
实现表达 relative position 的可能
使用sin+cos后,还需要有正向和反向吗?
为什么公式中有一个魔法值 10000? #card
2i = d_model = 512,周期为 2pi*10000
确保循环周期足够大,以便编码足够长的文本。
[[Potential Outcome Framework 专有名词]]
[[Treatment Effect]]
[[ITE]] 个体干预效果
[[ATE]] Average Treatment Effect,针对全体用户
[[ATT]] 实验组
[[Potential Outcome Framework 简化问题的三个假设]]
[[Re-weighting methods]] 解决的问题是控制组和治疗组的分布不同
[[Matching methods]] 关键在于如何度量样本之间的相似性
Tree-based Method - [[Causal Forest]] 在分裂最大化 ITE 方差
[[Representation Learning Method]] 本质是对反事实进行预测
[[Pre Norm]] :<->
第二项的方差由于有 norm 不会随层数变化,x 的方差在主干上随层数累积。到达深层后,单层对主干的影响很小,不同层在统计上类似。
这样训练的深层模型更像是扩展模型宽度,相对好训练。
[[Post Norm]] :<->
pre 和 post 具体含义 #card
先 norm 再残差 [[Pre Norm]] :<->
先残差再 norm [[Post Norm]] :<->
[[DeepNet]]
我的力扣主页: 算法花园,代码仓库:xiang578/acm-icpc
[[2025/04/28]] 2302. 统计得分小于 K 的子数组数目 滑动窗口/尺取法/双指针
最近写过最简单的 hard 题。
维护一个区间 lr, r 增加,判断区间是否满足要求,如果不满足增大 l 一直到区间为 0 或者满足条件,因为元素都是正的,l 越小,lr 的和肯定是越小。找到满足的 lr 之后,对答案的贡献就是 r-l+1.
[[2025/04/25]] 2845. 统计趣味子数组的数目 前缀和
刚开始想处理后缀,搞半天都调不对。。。其实方法不对。
看答案是处理前缀,差一步啊。
[[2025/04/24]] 2799. 统计完全子数组的数目 暴力
[[2025/04/23]] 1399. 统计最大组的数目 模拟
[[2025/04/22]] 2338. 统计理想数组的数目: [[素数筛]]+[[组合数学]]
有点难,只能看到出暴力的方案。题解也看了好久。
最后转化成,n 个盒子放 m 个球的问题(包含 k 种球)
[[2025/04/21]] 2145. 统计隐藏数组数目
[[2025/04/19]] 2364. 统计坏数对的数目:暴力算法平方,常规找规律降到线性
[[2025/04/17]] 2176. 统计数组中相等且可以被整除的数对:按题意模拟
[[LC1630. 等差子数组]] #[[Brute Force]]
[[LC887. 鸡蛋掉落]] #二分搜索 #动态规划 挺好一个题目,刚开始以为是一个简单的二分,然后找了几个小时都没有找到规律。然后想用 dfs 去解,又发现超时。
记录一个第二次访问终点需要经过多少个点
点数确定通过时间和等待时间都能算出来。
2034. 股票价格波动 模拟 + 有限队列
1332. 删除回文子序列 多读几遍题意,每次产出的是子序列而不是子串
1345. 跳跃游戏 BFS
简单题,写了快半个小时,先想清楚流程再写,不要边写变想。
按 arr[i] 聚合数字,然后每个点只能访问一次,访问后删除。
2029. 石子游戏 IX推荐
博弈论
找规律,反正是类似于 1-(1-2)-...
和 2-(2-1)-...
形式
写不出简洁的规律,直接上了模拟……
hash
效率更高一些,滑动窗口内 hash
1220. 统计元音字母序列的数目 简单 DP
python random.randint(st, ed)
蓄水池抽样:遍历链表,假设当前遍历到第 i 个节点,以 的概率选择第 i 个节点作为最后的答案。
1716. 计算力扣银行的钱 简单模拟或求等差数列通项公式
暴力:两个数组最多前 1000 个数字组合,然后排序取前 k 个
看题解
第一反应是用最长上升子序列的方法。
仔细想了一下,对一个位置 i 维护之前最小的结果 $$min(nums[0…i-1])$$ 和之后最大的结果$$max(nums[i+1…n-1])$$。如果这三个数不相同,就是一个可行解。
1036. 逃离大迷宫 搜索 + 优化剪枝
19 年就尝试过这题,然后当时暴力写了一个搜索,第一个样例就超时了……
坐标范围是 1e6,所以暴力搜索的空间可能是 1e12。题目关键是 blocked.length <= 200
这些 blocked 形成包围圈最大是 100*100?(在一个角上借助两条边围成封闭的正方形)。从起点和终点开始搜索,如果可以访问到超过 1e4 个空间,那么代表没有被包围住。
306. 累加数 DFS
枚举最开始两个数字,然后check之后的数据是否合法。
字符串最长长度等于 35,这个数字会超过 long long 的范围。但是观察一下可以发现 a + b = c 情况下,三个数字的长度不会超过字符串长度的 1/2,大概是 18 位,枚举时一个数字最大18位,这样就不会超出 long long 范围。
反思:没有考虑字符串长度小于 3 的特殊情况
空间复杂度 写法:维护后缀乘积结果。
空间复杂度 写法:用返回数组保存前 的乘积,然后逆序用一个变量保存 的乘积,然后可以根据这两个信息得到结果。
5847. 找到所有的农场组 暴力,一个格子是不是起点可以通过判断上边格子和左边格子得知。
5848. 树上的操作 模拟,先想清楚然后再写
5849. 好子集的数目 枚举所有合法组合的个数
5866. 数组的最大公因数排序 [[并查集]] + [[素数筛]],有相同因子的数会在同一个集合中。
5865. 访问完所有房间的第一天 漏看一个条件,实际上是傻逼题,还是错了好几次,1e9 相加会爆 int 以及返回答案前也需要取模。
1977. 划分数字的方案数 挺复杂的,写了好几个小时,看题解才过…… n=3500,暗示是 的算法
设以 nums[i…j] 为结尾的方案数是
可以发现 ,维护一个前缀和。
比较 nums[i…j] 和 nums[2*i-j-1…i-1] 大小,可以先预处理出以 i 和 j 开始的字符串的最大相同长度 lcp[i][j]。
LCP 42. 玩具套圈:r 比较小,可以暴力枚举,被抬一手还是没有写出来。。。需要注意细节。不要提交 debug。
36. 有效的数独:判断数独当前局面是否合法。
37. 解数独:求解数独,上一题的进阶。
[[LC5832. 构造元素不等于两相邻元素平均值的数组]] 排序 + 贪心
[[LC526. 优美的排列]] DP + 状态压缩
5856. 完成任务的最少工作时间段:DP + 子集合枚举
5857. 不同的好子序列数目:不重复的 01 子序列个数,DP
940. 不同的子序列 II:和 5857 类似,字符串包含小写字母
Progressive Summarization: A Practical Technique for Designing Discoverable Notes - Forte Labs
[[Tiago Forte]]
做笔记的意义是什么:
通过记笔记这个过程去记忆知识
给未来查阅相关信息节省时间
这篇文章介绍如何对笔记进行不同级别的抽象,对未来越来价值,抽象程度越高。其实可以作为 [[Zettelkasten]] 原子化原则的一个补充。
渐进式总结
困难的不是把信息从一个地方传输到另一个地方,而是跨越时距传递。
你看得东西没错,你只是没找对合适的时间。
知识的挑战不在于获取知识。建立一个系统知道什么知识有价值,将部分的知识跨越时距传递。
把知识从公共知识变成你的[[暗知识]]即经验知识。
Note-first knowledge mangement
与[[Zettelkasten]]对比
Tagging-first :笔记被认为是不断变化的、虚拟的、相互关联的思维矩阵。思维的运作方法不适应这种抽象的概念。
Notebook-first 对应[[PARA]] 中的思路。
Note-first 笔记独立
Designing discoverable notes
现在的笔记对未来的你不一定有作用
[[idea]] 花费大力气写的论文笔记,如果不在博客上发布,自己还会去看?
注重 note 的可发现性和可理解性:创造高度浓缩的摘要。
Opportunistic compression
大部分人比较擅长对阅读的事物做详尽的笔记。
如何让我现在正在消费的东西,更容易被未来的自己发现?对笔记进行分层处理。
一个例子:
why
Guidelines and Principles
最后这一篇笔记并不符合[[Progressive Summarization]]原则。
最终返回嵌套函数的引用
__name__
和 __code__
不修改原函数,不修改调用方法。通过标记,^增强函数功能^
为已经存在的对象(函数和类)添加额外的功能
函数修饰器在导入模块时立即执行,被装饰函数只在明确调用时运行。
@
装饰器[[语法糖]]
1 | def timer(func): |
标准库中的装饰器
lru_cache
把耗时的函数结果保存起来
单分派泛函数 functools.singledispatch
PEP 443
Python 不支持重载方法或函数
使用这个装饰器后根据第一个参数的类型执行对应的函数。
@singledispatch
标记基函数
@base_function.register(type)
装饰专门的函数
@staticmathod
@classmethod
@property
叠放装饰器,按叠放顺序执行
1 |
|
f = a(b(c(f)))
参数化装饰器
queue.Queue()
put
get
queue.LifoQueue()
queue.PriorityQueue()
collections.deque
线程安全
asyncio
heapq
nlargest
nsmallest
[[nn.ModuleList]] 存储不同 module,并将每个 module 的 parameters 添加到网络之中的容器
[[torch.nn]]
torch.topk
[[torch.gather]]
[[Pytorch/tensor]]
torch.argsort(*input*, *dim=-1*, *descending=False*, *stable=False*) → [Tensor]
按 input dim 维度排序
返回 input 对应元素的排序结果
https://www.zhihu.com/question/352525266/answer/3395318281 pytorch 架构
A Q-Note is a Question Note.
Q - 问题
为标题的 page论文出处:Quasi-Oracle Estimation of Heterogeneous Treatment Effects
适用情形:随机干预实验的数据
ex :-> 特征 x 对干预 w 的影响,也是 [[倾向性得分]]
:-> 基于特征 x 对目标 y 的影响 conditional mean outcome
拆解逻辑 #card
条件期望响应结果 可以表示为
不施加干预时的条件期望响应结果
倾向性得分 (即条件干预概率)与干预效应 (即 CATE)的乘积。
观测结果 分解为 #card
无干预时的条件响应结果
是否施加干预 与因果效应 的乘积
残差
观测结果变换 Robinson’s transfomation #card
两边分别减去条件响应结果
通过上述转化,我们会发现,假定我们已经有了 以及 的表达式,我们就可以通过最小化残差来估计得到 treatment effect ,即我们前面提到的通过一个 loss 优化问题来估计得到因果效应。
最终训练一个模型 最小化损失函数 #card
用权重为 的样本 X 去拟合
其中 是模型 参数的正则项,
和 是事先训练好的模型,
此时 的输出结果就是我们想要的 CATE。
优点
将因果效应的估计问题转化为 损失函数的优化 问题,提供了一种一般性的因果效应的预测框架。
缺点:#card
1)预测效果非常依赖模型 和 ,但是这两个模型不一定能预测得准确。
2)假设了潜在结果 的分解是一种线性关系,限制了模型对复杂数据的拟合能力。
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTcyNzEwMTQwODE4OV8wLnBuZyI6eyJjb25maWciOnsiaGlkZUFsbFRlc3RPbmUiOnRydWV9LCJlbGVtZW50cyI6W3sibGVmdCI6MTU0NC4wNzUyNzMzNjA3MzQ0LCJ0b3AiOjUwMC42NTQzNTc4NTAwMzkxLCJ3aWR0aCI6NzIyLjE0MDMwMTkxMDIxMzEsImhlaWdodCI6MTA3LjMwMjU3NDYzMDExODY3LCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjE0NjUuNTcxNzQ2MTMzNjQ4NSwidG9wIjo2MTYuNjU1MTg4MjQ2MjkxNiwid2lkdGgiOjU1OS4xNDU3NzEwOTM3ODQ2LCJoZWlnaHQiOjk5LjMwMzA3NjczMDE3ODMsImFuZ2xlIjowLCJjSWQiOjJ9LHsibGVmdCI6NzAzLjQ4OTk5OTUyMTU3MjgsInRvcCI6Mzk2LjI5NzA3MzY4NDQxODI1LCJ3aWR0aCI6ODIuMDIwNTAzNjg3MzcxODQsImhlaWdodCI6NzEuNTY1NDQ4ODQ0OTE0MjMsImFuZ2xlIjowLCJjSWQiOjN9LHsibGVmdCI6ODI1LjUzMjQzMjk1ODM4MTMsInRvcCI6MTMxLjk4MTg1NjMyMTg0MjEsIndpZHRoIjoxNDcuODE2MDUxNjczNjU5MSwiaGVpZ2h0Ijo3MC44MDQyOTIyNzcyMjA3LCJhbmdsZSI6MCwiY0lkIjoyfV19fQ==
结合
对应的曲线
如果 U 很大,ht 会接近于 1,$$\frac{\partial h_{t}}{\partial h_{t-1}}$$ 反而会小
[[RNN/Backward]]
[[Ref]]
[[RNN/Question]]
[[GRU]]
持久化指将数据进行保存,避免数据丢失。
RDD 持久化并非将数据落盘,而是缓存数据,供后续计算使用。
Cache()
persist()
使用指定的方式进行持久化
StorageLevel.
MEMORY_ONLY
内存优先
RDD 分区空间不够,旧的分区会直接删除
MEMORY_AND_DISK_SER
优先内存,内存不足到磁盘。
节省重新计算的开销
MEMORY_ONLY_SER
在内存存放序列化后的数据
DISK_ONLY
SER
Checkpoint
将 RDD 中间结果二进制形式写入磁盘
使用
sc.setCheckpointDir(“hdfs://hadoop102:9820/output/a”)
rdd.checkpoint()
手动释放rddx.unpersist(true)
RDD 持久化方式? #card
Cache()
persist()
memory_only 如果内存存储不了,会怎么操作? #card
利用 [[LRU]] 的缓存策略把最老的分区从内存中移除
下一次使用被移除的分区需要重新计算
共享内存模型
依赖关系
窄依赖 narrow dependency
OneToOneDependency
父 RDD 每个分区只被子 RDD 的一个分区所使用
不需要 shuffle
map,union
宽依赖 wide dependency/shuffle
父 RDD 的每个分区可能被多个子 RDD分区所使用,会有 shuffle 产生
groupByKey
Partitioner 分区器
定义如何分布数据
可使用分区器
[[HashPartitioner]] 给定的 key,计算 hashCode,对分区个数取余
[[RangePartitioner]] 尽量保证每个分区中的数据量均匀,且分区与分区之间是有序的。
自定义分区器
RDD是弹性数据集,“弹性”体现在哪里呢?
存储弹性
容错弹性
计算过程中如果出错会自动重试
task 失败会重试
stage 失败会重试失败的分片
计算弹性
分区弹性
你觉得RDD有哪些缺陷?
RDD分区和数据块有啥联系?
每一个命令支持按 cmd + k
查看更多操作
设置
search
Quicklink 拼接链接并通过浏览器打开(实现在指定网站搜索关键词或跳转到指定页面)
链接格式 https://www.baidu.com/s?wd={query}
,其中 query 对应需要搜索的关键词
Clipboard History 剪贴板历史管理
软件启动
设置快捷键
命令框
Snippets 文本片段
快捷短语
窗口管理
自定义脚本
Suggestions
在 Manage Fallback Commands
中设置
翻译
ai 对话
raycast-openai-translator 使用 chatgpt 翻译
终端安装 bitwarden-cli
参考 Personal API Key for CLI Authentication 获取 client_id 和 client_secret
和 [[Alfred]] 对比
免费,大部分功能可以直接使用,但是无法同步配置
Alfred 按版本付费
单纯堆积卷积层,并不能让模型表现的更好。
vanishing/exploding gradients
离输入近的网络层会产生梯度消失现象,比较难训练,接到靠近输出的层。
使用 Residual Block
Deep Residual Learning for Image Recognition
学习 residual mapping 比 original unreferenced mapping 轻松
identity mapping 给模型提供 shortcuts,如果 block 前后输入输出大小不同,可以通过 w 参数转化
在加法之后过第二个非线性单元
bottleneck architectures
为了解决层数变多时,参数数量增加问题。通过 bottleneck 结构,减少维持和左边相同的参数量,然后网络变成 3 层
[[Identity Mappings in Deep Residual Networks]]
[[Residual Networks Behave Like Ensembles of Relatively Shallow Network]]
[[ResNet/Question]]
[[Ref]]
给妹纸的深度学习教学(4)——同Residual玩耍 - 知乎 里面有解释 ResNet 的 ReLU 放在哪里的原因
Layer Normalization
On Layer Normalization in the Transformer Architecture
{{embed [[2020/09/22]] 堵点
}}
Informer:把残差转移到Attention矩阵上面去 - 科学空间|Scientific Spaces
Which Training Methods for GANs do actually Converge?
每次迭代只采样一个样本
优化 learn-rate,自适应学习率
自适应学习率的方法:对不同的参数使用不同的学习率,参数更新频率和更新步长负相关
[[Annealing]],全局共享learn_rate 所有的参数以相同的幅度进行更新
随步衰减
指数衰减
1/t衰减
[[AdaGrad]],参数独立 learn_rate 更新幅度取决于参数本身
计算一个时间区间内的梯度值累积和 [[移动平均]]
AdaDelta 分母滑动区间 + 单位矫正
[[RMSProp]] 分子滑动区间
cache = decay_rate * cache + (1 - decay_rate) * dx**2
x += - learning_rate * dx / (sqrt(cache) + eps)
[[Adam]] 分子动量版
优化梯度方向,减小震荡
[[Momentum]]:强化相关方向的训练和弱化无关方向的震荡来加速 SGD 收敛
V[t+1] = rho * v[t] + dx;
x[t+1] = x[t] - learningRate * V[t+1]
Nesterov 梯度加速法
预判前方地形
梯度下降法 [[SGD]]
并行化,Scalable
Downpour SGD
Hogwild!
S 的由来 :-> 将干预变量 和背景变量 一起作为特征输入到单个模型 (Single,S 的由来)学习
把用户是否干预作为特征加入到模型构建中
预测阶段如何得到反事实结果? #card
优点:#card
1)干预变量作为特征可以适用于多值干预。
2)干预 / 控制组样本共同训练单个模型的参数,有助于缓解干预组样本稀疏时的欠拟合问题,提高模型精度
可以直接使用现有分类算法
减少双模型误差累积
缺点:#card
S-Learner 中缓解特征被忽视的方法 #card
构造更强的交叉特征,
直连模型输出层干预打分,
作为裁判特征输出权重
将矩阵分解成奇异向量和[[奇异值]]
减少卷积计算量
它的核心思想是将一个完整的卷积运算分解为两步进行,分别为Depthwise Convolution与Pointwise Convolution。
[[@Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting]]
已有方法(超过30分钟的长周期预测)
dynamical modeling
data-driven methods
结构
Graph CNN
Chebyshev Polynomials Approximation
1st-order Approximation
Gated CNNs for Extracting Temporal Features
Semi-Supervised Classification with Graph Convolutional Networks
利用对称矩阵的形式归一化 renormalization
避免顶点的度越大,学到的表示越大
A 是图的邻接矩阵
D 是顶点的度矩阵,对角线上的元素依次是各个顶点的度
矩阵 nn, 矩阵 nm, 矩阵 mu, 矩阵 nu
考虑节点本身和邻居的信息
+
TODO [[Sequence to Sequence Learning with Neural Networks]]
[[Massive Exploration of Neural Machine Translation Architectures]]
TODO google/seq2seq: A general-purpose encoder-decoder framework for Tensorflow
Encoder - Decoder
Decoder
decoder 涉及输入是正确的单词还是预测的单词
Free Running :-> 使用 Decoder 上一步的预测结果作为当前步的输入
[[Teacher Forcing]] :-> 使用目标文本的“标准答案”作为Decoder的输入
每次输入正确单词,会导致 overcorrect
exposure bias 误差爆炸/曝光误差 (训练环节和预测环节存在行为差异)
Scheduled sampling 计划采样 #card
1-p 的概率用 teacher forcing
以一定概率随机选择用模型输出还是用真值,选择概率随着训练的推进不断调整
[[Beam Search]] 每一步,多选几个作为候选,最后综合考虑,选出最优的组合。
[[Transformer]] 不适用 RNN
CNN Seq2Seq [[Convolutional Sequence to Sequence Learning]]
[[SHAP]](SHAPley Additive exPlanations)
计算例子:用年龄、性别、工作来预测收入
3 个特征能训练 8 个不同的模型
边际贡献:两个节点的预测之间的差距可以归因于附加特征的影响
下图中 w1 对应的边是该样本 age 带来的边际收益:50k - 40k = -10k
age 特征整体的计算公式为
S H A P_{\text {Age }}\left(x_0\right) & =w_1 \times \text { MCAge. }{\text { Age }}\left(x_0\right)+ \
& =w_2 \times \text { MCAge. }{\text { Age, Gender }}\left(x_0\right)+ \
& =w_3 \times \text { MCAge. }{\text { Age, Job }}\left(x_0\right)+ \
& =w_3 \times \text { MCAge. }{\text { Age, Gender }, \text { Job }}\left(x_0\right)
\end{aligned}
$A n d w_1+w_2+w_3+w_4=1$ + 权重 w 可以设定为同一行中边总数m的倒数 $\frac{1}{m}$ + 最终计算公式为:  ## Ref + [理解用于计算SHAP值的公式 (baidu.com)](https://baijiahao.baidu.com/s?id=1654791131903418801&wfr=spider&for=pc)
目标:网络的多个输出之间的条件概率最大。
C 个输出概率分布相同,并且得分最高的单词不是一定是预测单词。
假设第 c 个输出的第 j 个分量为 $${u^c_j=w_j h_{u_j}^c}$$
{y^c_j}$$表示第 c 个输出中,词汇表 V 中第 j 个单词 $${word_j}$$ 为真实输出单词的概率。 损失函数定义 $$E = -\log \prod_{c=1}^{C} \frac{\exp \left(u_{j_{e}}^{c}\right)}{\sum_{k=1}^{V} \exp \left(u_{k}^{c}\right)}
{j^*_c}$$ 为输出单词序列对应于词典 V 中的下标序列。 每个网络的输出相同,化简得到: $$E=-\sum_{c=1}^{C} u_{j_{c}^{*}}^{c}+C \log \sum_{k=1}^{V} \exp \left(u_{k}\right)
^隐层的激活函数其实是线性的?^
skip gram 样本进行抽样:词频高的词(the)会在样本中大量出现,远远超过需要的训练样本数。
基本思想:对于我们在训练原始文本中遇到的每一个单词,它们都有一定概率被我们从文本中删掉,而这个被删除的概率与单词的频率有关。
保留某个单词的概率 $$P\left(w_{i}\right)=\left(\sqrt{\frac{Z\left(w_{i}\right)}{0.001}}+1\right) \times \frac{0.001}{Z\left(w_{i}\right)}$$
Z wi 在语料中的词频
0.001 越大代表有越大的概率被我们删除
threshold for configuring which higher-frequency words are randomly downsampled
+ x 代表 z,y 代表 p
+ z 小于 0.0026 100%保留
+ z = 0.00746 50%bclq
SQL
Hive
执行流程
+ SparkSqlParser
+ AST 语法树
+ 优化理论
+ Analyzer
+ 数据源绑定 & 字段类型确定
+ Optimizer
+ RBO 优化
+ SparkPlanner
+ 执行计划 Join 选择策略
Spark Streaming
MLlib
GraphX
区分 RDD 的方法和 Scala 集合对象的方法
Scala 集合对象的方法在同一个节点的内存中完成
RDD 的方法可以将计算逻辑发送到 Executor 端执行
Transformation
map
mapPartitions
映射函数的参数从 RDD 中的每一行元素变成 RDD 中每一个分区的迭代器
一次函数调用会处理一个 partition 所有数据
解决映射过程中需要频繁创建额外的对象
mapPartitionsWithIndex
sample
flatMap 先映射,再扁平化
filter
union 求并集
1 | rdd1 = sc.parallelize([1, 2, 3]) |
intersection 交叉口,求交集
distinct
groupby
groupByKey
reduceByKey
和 groupByKey
的区别?
reduceByKey 会先在 map 端聚合,减少 reduce 端压力
有时候使用 groupByKey 执行时间长,极易发生内存溢出
如果 key 非常少,value 非常多,reduceByKey 会触发 shuffle 操作,可以先对数据进行一次 repartition
aggregateByKey
sortByKey
repartition
实现原理 coalesce(numPartitions, shuffle = true)
默认对数据进行 [[Spark Shuffle]]
partitionBy
针对 RDD[(K, V)]
按指定规则对数据进行重新分区
HashPartitioner
repartitionAndSortWithinPartitions(partitioner: Partitioner)
针对 repartition 重分区后进行排序的场景
针对 RDD[(K, V)]
传入 partitioner 分区
对数据进行排序
连接
join
leftOuterJoin()
rightOuterJoin()
join
cogroup
cartesian
pipe
coalesce
rdd.coalesce(numPartitions = 2, shuffle=false)
调整 RDD 分区数量
收缩合并分区,减少任务调度成本
使用 coalesce 增加分区必定会导致数据倾斜
为什么使用 coalesce 合并分区后会导致数据倾斜? #card
cache
Action:遇到一个 action 算子,提交一个 job
reduce
collect
show
first
take 取前几条记录
takeSmaple
takeOrdered 返回前 n 个元素,并按默认顺序排序。
count
countByKey
foreach
lookup 返回给定 key 对应的所有值
saveAsTextFile
saveAsSequenceFile
saveAsObjectFile
collectAsMap kypairs 以 map 形式保存到 driver 上,注意可能会超过 driver 的内存上限
KeyBy:指定 key,将 RDD 变成 key-value 格式
shuffle 过程发生在不同 stage 之间
前一个 stage 的 ShuffleMapTask 进行 shuffle write,把数据存储在 blockManager 上,把数据位置元信息上报到 driver 的 mapOutTrack 中
后一个 stage 根据数据位置元信息,进行 shuffle read,拉取上个 stage 的输出数据
shuffle 操作必须要落盘,所以操作性能低
分布在多个节点的同一个 key,拉取到同一个节点上,进行聚合或 join 操作。
相同的 key 会写到本地磁盘,然后其他节点通过网络传输拉取各个节点磁盘上相同的 key
处理key过多,导致内存不够存放,进而溢写到磁盘文件中。
大量磁盘文件读写 IO 以及数据网络传输
不同 ShuffleWriter
BypassMergeSortShuffleWriter
SortShuffleWriter
聚合算子:边聚合边写入内存
普通算子:直接写内存
UnsafeShuffleWriter
序列化器KryoSerializer
直接在 serialized binary data 上 sort 而不是 java objects,减少了 memory 的开销和 GC 的 overhead
触发 Shuffle 的操作
repartition 相关
repartition
coalesce
ByKey
groupByKey
reduceByKey
combineByKey
groupByKey 和 reduceByKey 的底层实现
大概实现逻辑
遇到新 key 执行 createCombiner
遇到已有 key 执行 mergeValue
对所有分区执行 mergeCombiners
aggregateByKey
join 相关
cogroup
join
[[Spark 调优]]
减少 shuffle 次数
必要时主动 shuffle 改变并行度
使用 treeReduce & treeAggregate 替换 reduce & aggregate
[[Spark 数据倾斜]]
shuffle 默认使用 [[HashPartitioner]] 对数据进行分片,可能造成不同的 key 分配到一个 task 上
spark.default,parallelism
指定默认并行度
运行在 JVM 体系上,内存模型基于 Java 虚拟机
堆、栈、静态代码块和全局空间
Executor
M1+M2
+ OnHeap 堆内内存 spark.executor.memory
+ OffHeap 堆外内存 spark.yarn.executor.memoryOverhead
+ spark.memory.offHeap.size
Task Memory Manager
内存划分
Storage:RDD缓存、Broadcast 数据空间
Execution:Shuffle 过程使用的内存
第一块是让task执行我们自己编写的代码时使用,默认是占Executor总内存的20%;
第二块是让task通过shuffle过程拉取了上一个stage的task的输出后,进行聚合等操作时使用,默认也是占Executor总内存的20%;
第三块是让RDD持久化时使用,默认占Executor总内存的60%。
persisit() 或 cache()
通过 spark.storage.memoryFraction 控制大小
超过限制,旧分区会被移除内存
Other:用户定义的数据结构、Spark 内部元数据
Spark 2.0 引入概念,为用户提供统一的切入点来使用 Spark
[[pyspark]] 例子
1 | from pyspark.sql import SparkSession |
Scala 例子
创建
val sparkSession = SparkSession.builder().appName(appName).enableHiveSupport().getOrCreate()
sql
sparkSession.sql(sqlStr)
HiveContext
spark sql 支持 hive 读写
new HiveContext(SparkSession)
SparkContext
sparkSession.sparkContext
[[Resilient Distributed Datasets A Fault-Tolerant Abstraction for In-Memory Cluster Computing]]
一个用来实现快速而通用的集群计算的平台
Spark 任务
应用程序(Application): 基于Spark的用户程序,包含了一个Driver Program 和集群中多个的Executor;
驱动(Driver): 运行Application的main()函数并且创建SparkContext;
执行单元(Executor): 是为某Application运行在Worker Node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上,每个Application都有各自独立的Executors;
集群管理程序(Cluster Manager): 在集群上获取资源的外部服务(例如:Local、Standalone、Mesos或Yarn等集群管理系统);
操作(Operation): 作用于RDD的各种操作分为Transformation和Action.
Spark on yarn
区别 Application Master 作业级别
参数 --deploy-mode cluster/client
cluster 模式 driver 运行在 AM 中
client 本地运行,会和 container 进行通信。交互式查询和调试模式
Client 客户端不能退出
AM 向 YARN 请求 executor
spark 作业流程
RDD(Resilient Distributed Dataset) 即弹性数据集
Job action 算子划分
Stage 划分
根据 RDD 之间的依赖关系,形成一个 DAG,DAGScheduler 遇到 宽依赖 wide dependency/shuffle
就划分 stage
Task 最小执行单元
运行时的一些概念
mapper
reducer
任务并发数
Spark 划分逻辑图从而生成物理执行图
DAG 有向无环图
从逻辑图最后方开始创建 Stage
遇到完全依赖加入当前 Stage
遇到部分依赖新建一个 Stage
Pipeline 的计算方式
Stage 内部操作只有完全依赖
一个分区数据计算失败或者丢失,可以从父 RDD 对应的分区中恢复
[[Spark/Broadcast]] 数据共享
广播变量:
每个 Executor 节点上复制一份。各个节点可以直接访问本地数据进行计算而不需要通过网络获取。
数据在 Driver 上分块,BlockManager 记录保存在那个节点
Executor 从Driver 上查询数据信息,并拉取。防止同时从 Driver 上拉取信息。
Spark 和 MapReduce 的区别?[[Question]]
[[Hadoop]]一个 task 启动一个进程
MapReduce 过于抽象,高级 API (SQL vs. pandas numpy)
shuffle 的数据集不需要通过读写磁盘来交换,直接保存在内存中。
Hadoop 多轮作业之间无交互,磁盘文件进行数据交互
[[Scala]] 实现
task 如何通过序列化方法发送到远端
运行在 JVM 虚拟机上
Ref
sc.Broadcast(rdd.collectAsMap())
算子函数使用外部变量,默认情况 Spark 会将该变量复制多个副本,通过网络传输到 task 中,每个 task 都有一个变量副本。
如果变量本身比较大,会占用增大网络中传输的性能开销,以及在各个节点的 Executor 占用过多内存导致频繁 GC。
通过 Broadcast 的变量只在 Executor 内存中保留一份。
Executor 会有对应的 BlockManager,BlockManager 负责管理 Executor 对应的内存和磁盘上的数据。
需要使用广播变量时,先尝试从 BlockManager 获取。如果失败, BlockManager 会从 Driver 或者 其他节点的 BlockManager 拉取变量副本。
1 | // 以下代码在算子函数中,使用了外部的变量。 |
Spectral Networks and Deep Locally Connected Networks on Graphs
基于空域的卷积构建 Spatial Construction
直接在原始图结构上执行卷积
+ 方法
+ 按照什么条件去找中心vertex的neighbors,也就是如何确定receptive field?
+ vertex domain(spatial domain),找出每个顶点相邻的 neighbors
+ 根据顶点的领域进行简单的聚类
+ 确定receptive field,按照什么方式处理包含不同数目neighbors的特征?
+ 卷积操作
+ $\overrightarrow{\mathbf{o}}_{j}=\sum_{i \in \mathcal{N}_{\delta}(j)} F_{i, j} \overrightarrow{\mathbf{x}}_{i}$
+ $F_{i,j}$ 是卷积核
+ 非线性层
+ 聚类
+ 通过聚类算法将 $d_{k-1}$ 个顶点聚成 $d_k$ 个簇
+ 池化层 [[Pooling]]
+ 如何根据簇内顶点向量计算每个簇的向量表示,常用有均值池化、最大池化
+ 缺点
+ 每个顶点提取出来的neighbors不同,使得计算处理必须针对每个顶点
+ 每一层降低空间分辨率,增加空间通道数
+ 提取特征的效果可能没有卷积好
+ 例子
+ 第 0 层,12个顶点,一个通道
+ 第 1 层, 6个顶点,4个通道
+ 第 2 层,3 个顶点,6个通道
特点
不需要对图结构有很高的规整性假设 regualryity assumption
无法在顶点之间共享权重。
基于谱域的卷积构建 Spectral Construction
对图结构进行傅里叶变化,在谱域进行卷积。
中间项变成卷积核
问题
卷积空间 局部性
不好
计算复杂度高,需要对拉普拉斯矩阵进行谱分解求解 U 以及 的乘积
每个卷积核需要 n 个参数
标准化的前提假设
数据的权重相同
某些算法默认数据的 std=1 mean=0
不适合情况
类型不合适,类别变量
压缩的数据,稀疏矩阵
什么数据适合标准化?
SVM RBF
L1 L2 规则化的线性模型
标准化后损失什么信息?
原来的均值和标准差信息
含有极端异常点的删u
z-score 规范化
将数值范围缩放到0附近, 但没有改变数据分布。
对数据的分布的进行转换,使其符合某种分布(比如正态分布)的一种非线性特征变换
消除数量级对于模型的影响。
线性模型中,需要学习一条直线区分数据,将原始数据分布中心移动后,只是移动直线。不加正则的情况下。
什么时候需要标准化
主要看模型是否具有伸缩不变性。
有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行标准化,以免模型参数被分布范围较大或较小的数据dominate。
有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如logistic regression。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛。所以对于具有伸缩不变性的模型,最好也进行数据标准化。
静态协变量编码器 Static Covariate Encoders
ls-type:: annotation
hl-page:: 8
hl-color:: yellow
#card
使用单独的 GRN 编码器生成四个不同的上下文向量 separate GRN encoders
ls-type:: annotation
hl-page:: 8
hl-color:: yellow
#card
temporal variable selection (cs)
ls-type:: annotation
hl-page:: 9
hl-color:: yellow
[[Variable Selection Networks]]
local processing of temporal features (cc, ch)
ls-type:: annotation
hl-page:: 9
hl-color:: yellow
给 ((64301fb9-b177-436f-a199-5bba7709483c)) 做初始化状态
enriching of temporal features with static information (ce)
ls-type:: annotation
hl-page:: 9
hl-color:: yellow
给 ((64301e1f-6da6-4af4-ac64-ec89e3c99ea4))
Stop Taking Regular Notes Use a Zettelkasten Instead
Here’s how a Zettelkasten works:
Write each idea you come across on a card
Link idea cards to other relevant idea cards (idea -> idea link)
Sort cards into broader topic boxes (idea -> topic link)
Literature notes
Add useful docs (papers, books) as a literature note
Metadata includes: literaturenote tag, source, author
Summarise content, each key idea as a simple sentence
Elaborate on each key idea with some bullet points
Permanent notes
写 Permanent notes 的两条标准
Would I explore this further?
Or can I connect this to other ideas?
Permanent notes 的 metadata
permanentnote tag
topic tags
Source,literature note link
relevant permanent notes and short explanation of how it is relevant
Add summary in prose
Topics
This comes free if you’ve been adding topic tags
You can now jump into topics via tags and navigate via links of relevant permanent notes
具体实践可以参考
训练模型方式 #card
如何预测 #card
优点:#card
缺点:#card
两个模型训练 bias 不一致,容易有累积误差
干预组样本较少可能导致 过拟合,因此只能降低 的复杂度,这会导致 和 存在差异,影响最终的因果效果估计准度。
对于拥有较多 ID 类特征,或者连续特征离散化,采用了 Embedding Layer,可以参考多任务学习的架构,共享底层 Embedding 参数,仅对上层 DNN 参数独立学习,这样可以利用控制组样本的信息。
TCN 中输入和输出可能有不同的宽度,c 图表示使用 11 卷积调整输入大小
TCN = 1D FCN + causal convolutions
特点
使用因果卷积,不会泄漏未来信息。
可以取任意长度的序列,并将其映射到相同长度的输出序列。
引入 [[ResNet]] 和扩张卷积的组合可以将网络做深以及增加感受野。
细节
tcn 中没有 pooling 层
normalization 方法是 weight norm,更适合序列问题
增加感受野的方法
更大的 kernel_size (增加参数,卷积核大效果差,卷积核过大会退化成一个全连接层)
[[空洞卷积]]
时序问题
[[ETA 模型]] 实现
tf.nn.conv1d(input, filters, stride, padding, data_format='NWC', dilations=None, name=None)
创始人 [[Piotr Wozniak]]
记忆算法 [[Spaced Repetition]] (始于 SuperMemo 1 (1987))
渐进阅读 [[Incremental Reading]] (始于 SuperMemo 10 (2000))
优先级队列(始于 SuperMemo 13 (2006))
记忆价值
it: item
top: topic
Mac 使用虚拟机 [[VMware Fusion Pro]] 运行软件
[[Incremental Reading]]
网页
直接复制文字或使用[[简悦]]导出(不能包含 CSS)
在 IE 中打开需要导入网页,「编辑 - 导入网页」
split the article
epub
导入
修改后缀名为 .zip
解压对应的压缩包
使用 ie 打开网页,导入材料
Python 包 PyMuPDF
使用脚本提取 pdf 文件中的大纲
sm 中使用导入网页的方法导入大纲,然后分割成多个卡片
使用 split 命令分割 <p>
Learning-Add all to outstanding
根据 Priority=Value/Time 定义优先级排序
O4W54S31SM
,或者网上随便搜索,感觉都是通用的。KeepOnSurviving/anki2sm: Anki to SuperMemo 17/18 collection converter
MasterHowToLearn/SuperMemoVim: Vim emulator customized for SuperMemo, the best learning software in the world. (github.com) 使用 vim 命令控制 supermemo
TFT Interpretability Use Cases
以往基于 attention 进行神经网络解释的方法,侧重于用注意力权重对特定样本的解释。当前方法聚焦如何汇总整个数据集中的模式 #card
检查每个变量对预测的重要性 Analyzing Variable Importance
ls-type:: annotation
hl-page:: 17
hl-color:: yellow
[[Feature Importance]] #card
通过分析特征在 [[Variable Selection Networks]] 中的权重大小 (同时考虑 10th,50th,90th 分位数)
结果
Static Covariates 可以区分不同物品的特征权重大
the largest weights are attributed to variables which uniquely identify different entities (i.e. item number and store number).
ls-type:: annotation
hl-page:: 18
hl-color:: yellow
[:span]
ls-type:: annotation
hl-page:: 18
hl-color:: yellow
Past Inputs 目标(log sales)是关键,预测是对过去观察结果的外推
past values of the target (i.e. log sales) are critical as expected, as forecasts are extrapolations of past observations
ls-type:: annotation
hl-page:: 18
hl-color:: yellow
[:span]
ls-type:: annotation
hl-page:: 18
hl-color:: yellow
Future Inputs 促销和公共假日比较重要
识别相似的持续模式 identify similar persistent patterns
ls-type:: annotation
hl-page:: 19
hl-color:: red
可视化持续时序模式 Visualizing Persistent Temporal Patterns
ls-type:: annotation
hl-page:: 20
hl-color:: yellow
#card
把不同分位数损失下的自注意力层权重(或均值)绘制出来。
结论
识别重大事件 Identifying Regimes & Significant Events
ls-type:: annotation
hl-page:: 20
hl-color:: yellow
#card
用注意力的相异度(距离)来判断是否有重大事情发生
regime-switching behavior
ls-type:: annotation
hl-page:: 20
hl-color:: red
[[regime switching model]]
随着回报特征(波动性)被观察到在不同的制度之间突然变化 with returns characteristics – such as volatility – being observed to change abruptly between regime
ls-type:: annotation
hl-page:: 20
hl-color:: green
识别这样的转变为寻找显著事件提供洞见 identifying such regime changes provides strong insights into the underlying problem which is useful for identification of the significant events.
ls-type:: annotation
hl-page:: 20
hl-color:: yellow
结论
Temporal Fusion Transformer的可解释性 - 知乎 (zhihu.com)
[[@“Why Should I Trust You?”: Explaining the Predictions of Any Classifier]] 2016 年 KDD #card
[[SHAP]] 从博弈论角度考虑,特征如何影响原始模型的预测值。
[[TFT 关键实验]]
表格类数据模型 Ref1 #XXX
TODO 用torch lightning 开发tabnet - 知乎 (zhihu.com)
表格类数据上的自监督学习方法综述 Survey on Self-supervised Learning in Tabular Data - 知乎 (zhihu.com)
TODO 2021年,谁才是表格类数据模型的王者? - 知乎 (zhihu.com)
数据特性
评估指标
归纳偏置
当小部分列包含大部分有意义的信息时候
nn 缺少全局 feature selection 以及 gain。
lgb 能够做 feature selection 重点分割有价值的列,忽略无价值的列。
Temporal Fusion Decoder
ls-type:: annotation
hl-page:: 10
hl-color:: yellow
Locality Enhancement with Sequence-to-Sequence Layer
ls-type:: annotation
hl-page:: 10
hl-color:: yellow
在 TFD 前用 [[Seq2Seq]] 对数据进行一次增强 #card
重要的点通常是与周围的值相关系来确定的,例如异常值、变化点或周期模式 points of significance are often identified in relation to their surrounding values – such as anomalies, change-points or cyclical patterns.
ls-type:: annotation
hl-page:: 10
hl-color:: yellow
注意力机制架构中构建利用 point-wise values 的特征可以实现性能提升
LSTM encoder-decoder
encoder 输入 前 k 步特征
decoder 输入 未来 tao 步特征
由 encoder 和 decoder 生成的时序特征可表示为
时序特征输入到 TFD 前的在经过一次非线性变换
Static Enrichment Layer
ls-type:: annotation
hl-page:: 10
hl-color:: yellow
用静态变量增强时序特征 #card
静态协变量通常对时间动态有重要影响 static covariates often have a significant influence on the temporal dynamics
ls-type:: annotation
hl-page:: 10
hl-color:: yellow
自关注模块 Temporal Self-Attention Layer
ls-type:: annotation
hl-page:: 11
hl-color:: yellow
学习时序数据的长期依赖关系并提供模型可解释性 #card
[[Interpretable Multi-Head Attention]],每个 head 使用相同的 QW,然后用多头 attention score 加权平均后的 V 做解释
.
Position-wise Feed-forward Layer
ls-type:: annotation
hl-page:: 11
hl-color:: yellow
对自关注层的输出应用额外的非线性处理公式 #card
miRoox‘ Knowledge Base — All about miRoox
Dawei Ma’s Wiki — self/dev/money
— Read the Word,Read the World. Jerry 的读书笔记网站,基于 Library 对图书进行管理。
ProjectManager for Tiddlywiki — a non-linear personal web notebook 非常漂亮的任务管理版本。
TJ || 蒋継発 — 有自信的 team leader / 擅长前端的 full-stack engineer / 子弹笔记 fan
引思网卡片库 — 基于 TiddlyWiki:[[吴迪]]
Dimpurr’s Knowledge Base #1 — Just for quick notes of learning.
Library — knowledge base of Zhiheng 1000+ 篇笔记
集智·注意力与知识管理 — 关于知识管理的非线性的维基知识库
Sine’s Wiki:一位计算机专业女生的 kiwi
Skeleton的心智花园 — notebook for reading、writing、creating:20210614 无法访问!
缺点
适合多人编辑? 没有考虑过这个问题
没有服务器,无法在线编辑? 自己部署
数据无法导出?
上次考虑 wiki 方案时最终因为无法支持 markdown 而被放弃,单文件天然不靠谱。
第三次 :-> 是这个世界上最后一个记得你的人,把你忘记,于是,你就真正的死去,整个宇宙都不再和你有关。
入门以及进阶手册 Grok TiddlyWiki — Build a deep, lasting understanding of TiddlyWiki
版本
[[Soren Bjornstad]] 的 My TiddlyZettelKasten — Say something clever about it here (sobjornstad.github.io)
林一二开发的太记 tiddly-gittly/TiddlyGit-Desktop
[[TiddlyWiki/Tip]]
[[TiddlyWiki/Plugin]]
GitHub - viktomas/logseq-export: Tool to export raw Logseq Markdown files into Markdown blog posts with front matter. [[logseq-publish]] [[viktomas/logseq-export]]
RNN 为了解决不定长输入,LSTM 的三个门结构为了解决标准 RNN 的梯度爆炸和长序列信息消失问题
硅谷谷主
Transformer 缺乏时间维度建模,通过 [[Positional Encoding]] 也和 LSTM 这种天然的时序网络有差距。
Transformer 效果表现好建立在预训练的基础上,单独训练 Transformer 需要大量技巧
[[Graph Neural Network for Traffic Forecasting: A Survey]]
[[Traffic Flow Forecasting with Spatial-Temporal Graph Diffusion Network]]
[[Spatial-Temporal Fusion Graph Neural Networks for Traffic Flow Forecasting]]
[[Spatial-Temporal Transformer Networks for Traffic Flow Forecasting]]
[[Attention Based Spatial-Temporal Graph Convolutional Networks for Traffic Flow Forecasting]]
[[Spatial-Temporal Identity: A Simple yet Effective Baseline for Multivariate Time Series Forecasting]]
[[T-GCN]]
Transformer是否真的适合解决时序预测问题 - 知乎 (zhihu.com)
[[Autoformer]] #card
一类方法是否适用于某个问题,主要取决于两者的[[归纳偏置]]是否相匹配
标准 Transformer 实现的是点到点的特征融合,这种离散的方式其实是忽略了时间序列连续性。
基于自相关理论将 Transformer 扩展到序列到序列的特征融合
[[MTGNN]]
[[TPA-LSTM]]
Transformer是否适合用于做非NLP领域的时间序列预测问题? - 知乎 (zhihu.com) [[2023/03/05]]
吴海旭
一类方法是否适用于某个问题,主要取决于两者的[[归纳偏置]]是否相匹配
#card
RNN
对序列依赖马尔可夫假设
序列维度参数共享,天然可以处理变长数据
Transfomr
注意力机制处理变长数据
点点时序链接建模长期依赖
线性模型
不具备处理变长数据的能力
模型参数量随着长度增加而增加
[[@Non-stationary Transformers: Exploring the Stationarity in Time Series Forecasting]] 非平稳时间序列预测
科研汪老徐
[[@Are Transformers Effective for Time Series Forecasting?]] transformer 类方法短时预测效果差,所以强调长时预测,然后对比的 baseline 是自回归模型,由于错误累积,长时预测效果差。#card
此外,我们也并不认为时序预测这个问题有必要考虑变长数据,也因此应该使用Transformer这类支持对变长数据进行建模的架构。#card
SCINet CNN 提取时序特征
self-attention 机制上是 anti-ordering 的,与时间序列建模的目的恰好是矛盾的。#card
[[PatchTST]] 我们一直质疑的是attention对于提取时序信息的意义,文中的Patch内部使用linear来提取feature,这部分跟我们的做法类似。#card
直觉上来讲,学习不同patch之间的关系对大多数时间序列意义不大,可以做个ablation study看看attention是否真的起到了作用,i.e.,跟去掉attention后的两层Linear结构比较一下。此外,文中缺省使用了RIN来降低distribution shift带来的影响,跟NLinear的结果比较会相对合理一些。
RIN 对抗distribution shift的normalization方法 [[@Reversible Instance Normalization for Accurate Time-Series Forecasting against Distribution Shift]]
是真的,informer设计了一大堆花里胡哨的,看起来很有道理,实际上用起来真的不太行。#card
而且我发现,他们这些transformer的模型,在ETT数据集(只有7个变量)上,d_model设置为512,都快赶上nlp领域常设的768了,这也太离谱了。
按理说,只有7个变量,用这么大的模型(虽然层数较少)太扯了
而且那个pyraformer是真的没啥特别突出的地方,不知道咋能中oral。。。#card
我做过实验,就是在输出的时候把变量维度和时间维度统一拼接经过线性层,这样确实能效果好,
我觉得他的效果有提升就是因为这个,但这样得到的线性层是非常非常大的,参数甚至比transformer本身都多,不知道有啥意义。。。最近他的代码开源了,可以看看他是怎么实现的
TODO 为节约而生:从标准Attention到稀疏Attention - 科学空间|Scientific Spaces
TODO 有哪些令你印象深刻的魔改transformer? - 知乎 (zhihu.com)
Transformer/why self-attention
通过计算复杂度、并行操作数、最长学习距离三个方面来对比 Transformer、CNN、RNN。
计算复杂度就是模型中浮点计算次数
CNN 中的最长学习距离是通过[[空洞卷积]]实现
训练效率低下,self-attention 可以并行计算。
长距依赖问题,self-attention 可以忽视不同 token 之间的距离。
根据 [[营销人群四象限]],应该针对 TR 人群进行营销活动。
Uplift 干预和不干预的差值
响应模型 Response Model,预测干预情况下用户是否购买
uplift 通过干预和不干预的反事实来预估计算因果效应
样本服从CIA ( [[Conditional Independence Assumption]] ) 条件独立假设
通过随机对照实验收集数据:实验组全部干预,对照组都不干预。
利用条件平均因果效应[[CATE]]来预估给定条件下用户群体的平均因果效应
利用一个人群的条件平均因果效应去近似个体因果效应
核心问题
混杂因素偏置 Confounding Bias
归纳偏置
模型方案
CRFnet 和 EFIN ([[Explicit Feature Interaction uplift Network]])
多目标 uplift 模型
[[Uplift Model 评估]] 不可能同时观察到同一个用户在不同干预策略下的响应,即使无法获取用户真实增量,无法用常规分类和回归问题的评估指标。
通过划分十分位数来对齐实验组和对照组数据去进行间接评估
[[Qini curve]]
= :->
特点
非高斯分布
y = 0,如果预测结果不为 0 ,会有损失
应用场景
奢侈品销售或者电商销售,大部分是浏览不购买,导致 0 处值非常大。
如果正负样本比例差异大,但是数量充足还是可以训练。
如果直接下采样,会破坏分布
回到之前 回归问题使用什么损失函数由数据分布决定
的问题,决定为什么会有这个损失函数
Question
奢侈品销售或者电商销售,大部分是浏览不购买,导致 0 处值非常大。
如果直接下采样,会破坏分布
Ref
[[LightGBM/Tweedie Loss]] 实现
核心思想
如何构建 ground truth
代理任务生成标签
代理任务生成监督信号,充当标签信息
软换行 :-> Editor:Word Wrap
on 是打开换行
设置 git path
"git.path": "/mnt/workspace/shengxin/git"
变量选择网络 Variable Selection Networks
ls-type:: annotation
hl-page:: 7
hl-color:: yellow
作用 :-> 每一个时间步选择相关的输入变量 select relevant input variables at each time step
ls-type:: annotation
hl-page:: 6
hl-color:: yellow
#card
时间点 t 有 个变量,类别变量和连续变量都转换成 维度
非线性处理后特征
变量有单独 GRN,所有时间步中共享
,时间 t 第 j 个变量
#card 特征选择的权重 a vector of variable selection weights
ls-type:: annotation
hl-page:: 8
hl-color:: yellow
历史输入序列
j-th varaible at time t
针对静态、过去和未来输入,分别用 不同 的 VSN
Web Traffic Time Series Forecasting 1st place solution
局部特征
当发现有一个趋势,希望趋势持续。自回归模型
当发现一个流量高峰,高峰逐渐衰减。[[移动平均]]
当发现节假日流量高,期望未来的节假日流量都会高。季节性
全局特征
按年、按月有很强的 [[自相关]]
具体实现:尽可能减少特征工程,通过模型发现和学习特征
浏览量
day of week
year to year autocorrelation quarter-to-quarter autocorrelation
page popularity 区分高频页面和低频页面
This scale information is lost in a pageviews feature, because each pageviews series independently normalized to zero mean and unit variance.
流量中位数
lagged pageviews
Feature preprocessing
数据采样(数据增强)
模型
为什么使用 RNN 模型
比统计学时间序列模型[[ARIMA]]更灵活有效
非参数化方法
DONE 为什么两个 GRU 不一样?
Encoder
cuDNN GRU
输入 256,284,267 batch,time,features
输出 283,256,267 time batch features
Decoder
GRUBlockCell
tf.whil_loop()
支持将上一步输入加入到当前步输入
tags:: #[[Model Architecture]] [[Encoder-Decoder]] [[Seq2Seq]] [[GRU]]
解决长时间序列(700天)依赖
LSTM/GRU 预测限制:100-300 items
[[Attention]] 能带来远处过去信息。fixed-weight sliding-window attention
+ 取过去重要节点的编码器输出,用 FC 压缩维度,加到解码器的输入特征中
+ 减少 noise 进行平滑:`attn_365 = 0.25 * day_364 + 0.5 * day_365 + 0.25 * day_366`
+ 利用 1D CNN 计算平滑的权重
^^lagged datapoint 滞后数据特征^^ [[lag feature]]
捕捉固定周期的历史信息
将每个日期对应前四个季度的数据输入到解码器中
Losses and regularization
1 | epsilon = 0.1 |
Reducing model variance
使用不同种子训练 3 个模型,每次训练在 10500-11500 区间保存 10 个 checkpoints,最后预测合并。
SGD averaging (ASGD) SGD + 动量
相当于[[bagging]] 模型
Hyperparameter tuning
Ref
SGD 中权重衰减相当于加入一个 L2 regularization (对损失函数求导,然后化简)
为什么能避免模型过拟合问题?
Gratitude 感激
Daily Tasks
Daily Journal
深度工作标签 X - Curate
Reading
Process Steps #card #incremental
First thing you do… open Daily Notes page and paste in Day Open Smart Block 首先,打开每日笔记页面并粘贴到“Day Open Smart Block”。
Track your daily activities under the journal as per the suggestion. 根据建议在日记中记录您的日常活动。
At the end of the day you MUST close out. Paste in Day Close Smart Block 在一天结束时,您必须进行结算。粘贴到日结智能块中。
Review Inbox and follow Task Management process
Complete Daily Thoughts and Daily Accomplishments
Open the Weekly Plan in the sidebar and TIME BLOCK the following day
[[X-Learner ppt]]
X-Learner 基于 T-Learner 而改进点 #card
一是针对当干预组样本较少时 T-learner 预测不准,
二是针对 S/T-Leaner 都不是直接预测因果效应。
分为两个阶段:
X-Learner第一阶段#card
和 T-Learner 一样,将控制组样本和干预组样本分别用于训练模型 和 ,
分别学习 和
X-Learner 第二阶段#card
基于 和 分别交叉(X 的由来)预测干预组和控制组样本的反事实结果,与事实结果的差值就是样本的因果效应,此时就可以用控制组和干预组的样本分别训练 CATE 预估模型 和 ,
最终的 CATE 估计是两者的融合 ,对于权重函数 一种选择是[[倾向性评分]]函数 ,当干预组样本量远大于控制组时也可以取 1 或 0。
通过与实际结果差分计算增量
用有干预模型预测无干预群体的有干预结果,无干预组近似增量
用无干预模型预测有干预群体的无干预结果,有干预组近似增量
根据增量建立两个模型,对增量建模可以引入相关先验知识提升模型精度
引入 [[倾向性评分匹配]]PSM 加权得到最后提升评估结果
优点#card
适合实验组和对照组样本数量差别较大场景
增量的先验知识可以参与建模,引入权重系数,减少误差
缺点#card
两种方法
Count-based
Context-based
词向量常用方法
Distributed representaion:包含信息多
[[One-hot Encoding]] 维度灾难,样本稀疏
统计语言模型:通过统计词频计算一个句子在文本中出现的概率,以此确定哪个词序列的可能行更大。
[[Markov]]假设 n-gram 模型
泛化能力差、模型计算复杂度高、没有解决文本本身的表征问题
[[NNLM]] 利用神经网络求解出每个词语的 Word Embedding
[[Word2Vec]] 考虑文本的上下文环境
[[GloVe]] svd 矩阵分解和 [[Word2Vec]] 上下文思想
Conxtextualized Word Embedding 每一个 word token 都给一个 embedding
[[ELMo]]
[[GPT]] 单向语言模型,生成式任务
常见 emebdding 方法对比
NEG:负向样本太多,选取部分负样本来更新。可以作为 HS 的一种替代。
词在集合中的频率,带权采样
具体采样实现 #card
负采样概率*1亿=单词在表中出现的次数。
生成 0-1亿范围内的一个随机数,然后上面对应的序号
负采样的目标函数是一个经验公式。
:为真实的输出单词对应的输出向量
`:为负采样的单词对应的输出向量
作用:
记忆能力:模型直接学习并利用历史数据中物品或特征的“共现频率”的能力。
泛化能力:模型传递特征的相关性,以及发掘稀疏甚至从未出现过的稀有特征与最终标签相关性的能力。
不应该进 DNN,进入 DNN 之后没有记忆性。
Wide 侧
人工特征工程
TODO #card 为什么现在搜索排序或者推荐不常用这种架构?
+
[[Code]]
tf.estimator.DNNLinearCombinedClassifier
稀疏特征向量如何乘以一个稠密的权重矩阵
One-Hot-Encoding
Multi-Hot-Encoding
tf.sparse.SparseTensor(indices, values, dense_shape)
dense_shape 需要指定原始 tensor 的尺寸
[[Tensorflow]]
tf.sparse_tensor_dense_matmul(sp_a, b, ……)
tf.nn.embedding_lookup_sparse(params, sp_ids, sp_weights)
相同 id 取出权重后可以指定聚合方法
一个 feature 有多个 <tag, value>
实际使用 safe_embedding_lookup_sparse
和 embedding_lookup
区别
如何实现两部分使用不同的优化器 group
特征
_CategoricalColumn
_WeightedCategoricalColumn
_DenseColumn
_EmbeddingColumn
[[Ref]]
[[@看Google如何实现Wide & Deep模型]]
为什么wide&deep模型用ftrl和adagrad两种优化方法? - 知乎 #card
wide 部分看成传统的 lr,用 ftrl 可以得到稀疏权重,ftrl 考虑之前每一轮训练的梯度和。
deep 部分是神经网络,权重是否稀疏不重要,过去样本提供的信息少于最近的样本提供的信息。
见微知著,你真的搞懂Google的Wide&Deep模型了吗? - 知乎
效率优化
并行
boosting 算法的弱学习器无法并行迭代,弱学习器迭代过程中最耗时的部分是决策树的分裂过程。
在不同线程中并行选择特征最大增益的特征划分点
内存优化
存储+IO
合理设置块的大小,充分利用 CPU 缓存进行读取加速
分块压缩并且存储到硬盘上,将分块分区到多个硬盘上实现更大的 io
效果优化
缺失值处理
树模型的正则项控制模型复杂度
叶子节点个数 + 叶子节点权重的 L2 正则化
采用预剪枝策略,只有分裂后增益大于 0 才会进行分裂
寻找最佳分裂点以及如何加速
[[XGBoost/code]]
k分类实现
每一轮训练k棵树。
第一轮用 (x,0), (x,1) 去训练树,x 在每一棵树上的预测结果求 softmax 得出分类概率,然后计算残差。
第二轮用 (x,0-fi(x)), (x,1-fi(x)) 去训练树,和上面相同。
利用最后一轮的结果的 softmax 结果。
如何理解 XGB 的延展性?
基分类器 :-> CART决策树、LR 和 Linear
目标函数 :-> 自定义 loss function,需要二阶可导
学习方法 :-> block 结构支持并行化,支持 out-of-core 计算
GBDT 和 XGboost 的区别
算法本身优化
运行效率优化
算法鲁棒性
求解器 :-> 减少求解器的设计,其他损失函数泰勒展开之后最终的形式和 mse 不泰勒展开的形式是完全一致的。
通用性 :-> 统一损失函数求导形式,可以自定义损失函数
收敛 :-> 二阶导数能让梯度更快收敛
计算量 :-> 可以使用打分函数,减少分裂子叶时的计算量
如何选择用一种模型来替代 xgboost 模型,你会用什么?
[[机器学习知识体系汇总]] Xgboost
你选择使用xgboost的原因是什么?#card
Xgboost和GBDT有什么异同?#card
为什么xgboost训练会那么快,主要优化点事什么?#card
Xgboost是如何处理缺失值的?#card
首先忽略带缺失值的数据,像正常情况下一样将前两种数据分别计算并导流到左子树和右子树。
然后计算带缺失值的数据导流向左右子树,计算两种方案下的Objective 情况,取得分最小的作为在这个节点的默认情况。
Xgboost和lightGBM有哪些异同?#card
算法本身
运行效率
鲁棒性
Xgboost为什么要使用泰勒展开式,解决什么问题?#card
Xgboost是如何寻找最优特征的?#card
训练损失
正则化损失包括 #card
叶子节点个数 + 叶子节点权重的 L2 正则化
为什么不用更高阶的正则约束 #card
card-last-score:: 5
card-repeats:: 1
card-next-schedule:: 2023-08-26T01:53:50.014Z
card-last-interval:: 4
计算复杂度增加
欠拟合
目标函数分裂推导
优化目标、损失函数 :->
二阶泰勒展开公式 :->
带入化解:
树的维度,带入 :
设 ,可以得到
目标函数化简为
树分裂
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTc0MjM5MDAwNDU1Nl8wLnBuZyI6eyJjb25maWciOnsiaGlkZUFsbFRlc3RPbmUiOnRydWV9LCJlbGVtZW50cyI6W3sibGVmdCI6NTIwLjA5OTAxMDQyMTM3MDQsInRvcCI6NTI4LjgwOTM4MTM3NTUxMSwid2lkdGgiOjc4NC4yMDM5MTU5NzM5MjIyLCJoZWlnaHQiOjc3LjYxODczOTYzNzExNDIzLCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjUwMy42MDA0ODQyMDQxNjU4NywidG9wIjo2NDMuMzA5Mzk4MTA5MDE3NSwid2lkdGgiOjY1My4xOTk4NzQ3NDE0NjA1LCJoZWlnaHQiOjg0LjYxODczNDU4MDk0NjQ3LCJhbmdsZSI6MCwiY0lkIjoyfSx7ImxlZnQiOjUwNS41OTkyNjM4MzE5ODY4LCJ0b3AiOjc3Ni4zMDkzOTM3NzUxNTk3LCJ3aWR0aCI6NjkzLjIwMjYwODkwODYzNzgsImhlaWdodCI6ODYuNjE4Nzc1NTExODI1NTYsImFuZ2xlIjowLCJjSWQiOjN9LHsibGVmdCI6NTA2LjE5ODI2MDkxNTk1NjE1LCJ0b3AiOjg5OC42MTg3OTEwNDE0ODI2LCJ3aWR0aCI6NjMyLjAwNDIxNDYxODY3MywiaGVpZ2h0Ijo3NC4wMDAwMDg5MDg0ODU0OCwiYW5nbGUiOjAsImNJZCI6NH0seyJsZWZ0Ijo2MTYuNjAwNDMwODU0NTYyMSwidG9wIjoyMTQuODA5MzYwNjY5MzAxNzgsIndpZHRoIjo0MTUuMTk5OTAxNDE2MjYyNywiaGVpZ2h0Ijo4NS42MTg3MDY0MTA4NzEwMywiYW5nbGUiOjAsImNJZCI6NX1dfX0=
xgboost如何使用MAE或MAPE作为目标函数? - 知乎
mse 在初始误差比较大时,loss 是平方会偏离目标
ln(cosh(x))以及 log(exp(-x) + exp(x))进行逼近
利用 huber loss 逼近 mae
使用可导逼近形式 Pseudo-Huber loss function 做为目标函数
1 | def huber_approx_obj(dtrain, preds): |
gblinear
线性模型,迭代器增加再多对模型的收敛能力提升也不大
数据高维稀疏的场景可以尝试使用
利用 gbm 框架求解 linear,利用梯度提升方法代替梯度下降方法
Word2Vec 是 NLP 中一种通过语料库预训练[[Word Embedding]] 的方法。常见实现形式:
[[CBOW]] :<-> 根据上下文来预测下一个单词。
[[Skip-Gram]] :<-> 根据一个单词来预测上下文。
CBoW 和 skip 对比
训练速度 :-> Cbow 训练速度快
训练效果(准确率):-> skip 准确率和生僻字预测效果好,每一词会经过 C 次调整,模型的训练机制会对向量的预测能力要求更高(1 predict n)
参数更新
,即网络第 c 个输出的第 j 个分量对应于第 c 个真实的输出单词 $${word_{j^*_c}}$$时,它为 1;否则为0。定义:
优化
[[Hierarchical Softmax]]本质是把 N 分类问题变成 log(N)次二分类
从 Word2Vec 中可以看到,更新一个样本时需要计算词表每个单词的概率。计算量大。
HS 使用树结构能在 $${\log(V)}$$ 的时间内计算出给定单词的概率。
二叉树的每条边代表分裂:
向左的边:表示选择左子节点,边的权重为选择左子节点的概率
向右的边:表示选择右子节点,边的权重为选择右子节点的概率
对于任意一个中间节点 t,有一个向量 $$\overrightarrow{\mathbf{v}_t}^{\prime}$$。从求解 $$\overrightarrow{\mathbf{w}}^{\prime}$$ 问题转化到 V-1 个二叉树的中间节点向量表达(下图灰色的节点)。
左子节点的概率:$$p(t, l e f t)=\sigma\left(\overrightarrow{\mathbf{v}}_{t}^{\prime} \cdot \overrightarrow{\mathbf{h}}\right)$$
右子节点的概率:$$p(t, right)=1 - \sigma\left(\overrightarrow{\mathbf{v}}_{t}^{\prime} \cdot \overrightarrow{\mathbf{h}}\right)$$
左右节点的概率和为 1
当需要计算某个单词的概率时,找到从根到这个单词所在叶节点的路径。然后按上面的方法计算概率,一直将概率相乘,得到这个单词的概率。
表示如果这个单词属于当前节点的左子树,为 1,反之为 -1。和上面的节点概率有关。
词频高的节点离根节点较远,距离远参数数量就多,在训练过程中,低频词的路径上的参数能够得到更多的训练。
问题
为什么在计算word similarity的时候,我们要用cosine distance,我们能够用其他距离吗?
在word2vec的目标函数中,两个词 $${w_i,w_j}$$ 的词向量 $${v_i,v_j}$$ 其实分别来自输入权重矩阵和输出权重矩阵,那么在实际使用时,我们需要分别存储输入矩阵和输出矩阵吗?还是直接用输入矩阵当作word2vec计算similarity就好了?
两个向量来自不同的空间
输出权重矩阵 encodes the meanings of words as context
^需要选择那个矩阵?^
隐层的激活函数是什么?是sigmoid吗?
推荐系统中使用 embedding 的方法
有监督学习 wide&deep 之类,embedding 作为优化变量,随机初始化,在优化最终的 logloss 的过程中, embedding 是模型副产品。
无监督学习
套用 word2vec 的方法,预训练 embedding
上面学习得到的 emb 可以用来做召回,或者放到其他模型中作为参数输入。
embedding 使特征向量化,从而实现计算相似度
[[Ref]]
[[Word2Vec tf 实现]]
稀疏词向量,用skip-gram还是cbow训练好? - 知乎
使用 Skip-gram :一句话可能产生多个训练样本,对罕见词和罕见搭配更加友好
cbow 避免训练集膨胀,训练结果偏向常用词
[NLP] 秒懂词向量Word2vec的本质
Distributed Representations of Sentences and Documents
Efficient estimation of word representations in vector space
贡献:专门讲训练 Word2vec 中的两个trick:hierarchical softmax 和 negative sampling
优点:Word2vec 开山之作,两篇论文均值得一读
缺点:只见树木,不见森林和树叶,读完不得要义。
Xin Rong word2vec Parameter Learning Explained
Glorot 条件 :-> 好的初始化应该使得各层的激活值和梯度的方差在传播过程中保持一致。
mean=0.0, std_dev=(2.0 / (input_dim + output_dim)) ** 0.5
tf.contrib.layers.xavier_initializer
W = tf.Variable(np.random.randn(node_in, node_out)) / np.sqrt(node_in)
保持输入与输出的方差一致。在线性函数上推导出来,部分非线性函数比如(tanh)也可以使用。ReLU 需要使用 [[He Initialization]] 解决
XGBoost 中有什么方法可以评估特征重要性? #card
通过整体分布产生随机特征,通过随机特征在特征重要性中的位置,筛除重要性不是非常明显的特征。
特征重要性指标 get_score
方法
第一部分
Animation speed
调整灯光动画的速度
Brightness
调整灯光
第二部分
Hue
调整不同颜色
Saturation
Set color
设置成指定颜色
Switch animation
切换不同的灯光动画
Toggle layer colors
打开或关闭 layer 的灯光,关闭之后如果有灯光动画,就走灯光动画。
Toggle lighting
打开或关闭灯光,关闭后,layer 灯光不受影响。
为什么需要有出价 #card
因为在广告场景中引入了广告主 (advertiser) 这一角色, 出价则是提供了一种方式供广告主表达其对付费诉求,即对一次曝光 / 点击 / 转化愿意付多少钱。
其次,广告平台往往需要提供多种产品形态来满足广告主的各种需求,如最常见的是保成本类产品、还有一些更追求跑量、品牌广告则是对保量有严格的要求;针对这些不同的产品形态,基本上最终的策略都落在了出价上。因为在基于 ecpm 排序的广告系统中,基本上能比较灵活地改动的就是 bid 这个因素了
而针对上面各种产品需求,其实都是可以通过相同的最优化建模的方式来解决的,阿里之前发表过一篇 paper 来描述这个问题,对于出价公式的推导和控制器的构建都有较好的指导意义;#card
先看 bid,直观上看就是竞价流量的 bid 平均水位,对于大部分的 oCPX 广告,这里的 bid 也往往是广告主的平均出价水位(nobid 类产品没有广告主出价,但是 bid 也能一定程度上反映广告主的预算),系统不能在广告主的 bid 基础上无约束地提,因为广告主的出价表达了其对转化成本的预期,如果一个劲儿地提 bid,成本是没法很好地保证的,所以这里的 bid 基本上能理解为 “广告主在某个媒体平台上愿意为一个转化出的价格”,而影响广告主出的 bid 高低有很多,这里重点讲以下 2 个因素:
(1)广告主的生意模式:一个比较关键的因素是转化对于广告主而言有没有除了这个转化以外的价值#card
一般的白牌商家的预算都属于纯效果预算,都是有比较严格的 roi 的考核的,这种情况下广告主愿意出的价格在各个媒体上也是比较固定的,与之相反的是纯品牌预算,即对转化基本没有太多考核,像 gd 很多时候就是在溢价买流量,这个时候广告主会根据平台的影响力,或者说流量价值来出价;
而实际中,很多预算其实是介于纯效果预算和纯品牌预算之间的,所以广告主的出价的时候也会根据平台的转化是否能带来外溢价值,来对出价做相应的调整; 如广告主在小红书等种草平台是能接受赞藏、加粉等成本,比抖音、快手等竞品要更高,因为在广告主心里会认为这些种草平台的一个转化能够带来更多外溢价值
(2)平台的竞争激烈程度:即广告主能否在平台上卷起来#card
在一个媒体平台上,如果竞争不够激烈,如最极端情况下只有一个广告主,那转化的定价权基本上就掌握在广告主的手里(而这也是广告主生态需要解决的问题之一);当广告主数量变多后,蓝海变成红海,广告主在总体 roi 还是为正的前提下,还是有动力降低自己的利润、在平台提升转化出价的成本来做营销的
所以,假设广告主出价是理性的,那要提高公式里的 bid,平台长期要做的就是提升其流量价值(比较虚的概念,与市场认可度与声量相关),满足更多广告主的营销诉求,引入更多的广告主进入平台,营造一个良性的竞争环境,这部分主要上面提到的第 3 部分即客户产品来承当,当然也会涉及到第 1 部分(如 ctr、cvr 预估准确性)第 2 部分(如流量策略影响广告主生态)
YJango@万字科普ChatGPT-4为什么会颠覆人类社会
记忆和泛化
[[In-Context Learning]] 语境内学习
理解指令
理解例子
思维链
代码训练
拆分问题,分布思考
[[Reinforcement Learning from Human Feedback]]
人类群体通过语言处理来实现「知识的创造、继承和应用」
教育模式影响
培养终生学习能力
时间序列问题难点
理解时间序列预测问题是要用历史数据预测未来数据
时间序列问题的训练集、测试集划分
特征工程方法及过程(方法2的过程很有趣)
如何转化为监督学习数据集
LSTM计算过程理解,包括输入输出维度、参数数量等
seq2seq过程的理解,decoder实现
attention注意力机制的原理及实现,包括encoder-decoder attention, self attention, multi-head attention等
时间卷积网络的含义,顾名思义就是将CNN方法用于时间序列中,主要是dilated-convolution and causal-convolution
prophet预测原理,各参数对模型拟合效果、泛化效果的影响
TPA侧重选择关键变量
时间序列基本规则法中周期因子得计算过程
传统方法如周期因子、线性回归、ARMA等的预测结果表现为,预测趋势大致正确,但对波动预测不理想,体现在波动的幅度差异、相位偏移。
时间序列分解方法。理解加法模型和乘法模型,判断分解模型的选取及分解技巧
A Z-Note is a Synthesis Note.
A [[Z-Note]] is used within your academic writing as a representation of a resolved and converted #[[Q-Note]] :-> 对应一个已解决或转化的 Q-Note
A Z-Note is always at the Page level and has a single declarative title (claim, theory, argument, problem) as a page title (prefaced by an Z) :-> 以 Z - 声明性标题(主张、理论、论点、问题)
为标题的 Page
A Z-Note is densely linked with #[[R-Note]], possibly other #[[Z-Note]] and #[[Q-Note]]. :-> Z-Note 和其他类型的笔记都息息相关。
A Z-Note may be produced as the result of a #[[Q-Note]]. :-> Z-Note 可能是对一个 Q-Note 研究的成果。
The content of a Z-Note can be used in multiple contexts and for multiple projects. :-> 可以在多个上下文和项目中使用
A collection of Z-Note are a representation of your personal synthesized knowledge. Also know as #[[Zettelkasten]], [[Evergreen Notes]] or [[Permanent Notes]]. :-> 多少 Z-Note 就代表你有多少综合的知识。
日本留学文科博士
[[@文科博士是怎样读书的]]
[[@如何保持创造力?–「观心笔记」]]
[[My workflow- 一个文科博士生的资料管理、阅读和笔记系统-基于 DEVONthink 3,Obsidian/]]
微信读书笔记导出后,做详细笔记
Competitive Programming(CP) 指竞赛性编程。与面向工程的程序设计不同,CP追求的是在一定的时间内,实现一定的算法和数据结构,以解决某一特定的、可能并不具有现实意义的问题。
定义来源于 CP Wiki
[[二分搜索]]
[[三分搜索]]
[[Number Theory]]
[[欧几里得算法]]
[[费马小定理]]
[[乘法逆元]]
[[树形 DP]]
[[状压 DP]]
torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=None, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None, multiprocessing_context=None, generator=None, *, prefetch_factor=None, persistent_workers=False, pin_memory_device='')
collate_fn
如何处理每一行数据[[@Applying Deep Learning To Airbnb Search]]
[[DIN]] Adam + [[exponential decay]]
learning rate 0,001
decay rate 0.9
[[DIEN]] 没有特别提到优化器
问题背景 #card
解决方法
在召回上被简化成[[负样本]]选择问题 [[双塔模型样本选择]] [[SENET]]
曝光未点击数据 #card
全局随机选择负样本#card
Batch 内随机选择负样本 #card
选择 4: 曝光数据随机选择负例 #card
选择 5: 基于 Popularity 随机选择负例 #card
选择 6: 基于 Hard 选择负例#card
#card 我们在模型召回阶段的经验是:比如在 19 年年中左右,我们尝试过选择 1 + 选择 3 的混合方法,就是一定比例的 “曝光未点击” 和一定比例的类似 Batch 内随机的方法构造负例,当时在 FM 召回取得了明显的效果提升。但是在后面做双塔模型的时候,貌似这种方法又未能做出明显效果。
hls__A Consumer Compensation System in Ride-hailing Service_2023_Yu
a transfer learning enhanced uplift modeling is designed to measure the elasticity
ls-type:: annotation
hl-page:: 1
hl-color:: yellow
a model predictive control based optimization is formulated to control the budget accurately
ls-type:: annotation
hl-page:: 1
hl-color:: yellow
Given a total compensation budget or an average compensation rate, find an optimal policy to subsidize queries so that the overall revenue is maximized.
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
Consumer elasticity
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
Consumer fairness
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
Randomness in queries:
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
Transfer Learning Enhanced Uplift Modeling
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
abundant biased observational data and limited randomized data
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
[:span]
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
tabular input space and transfer learning
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
Massive observational data is first fed into both inputs to pre-train the model
ls-type:: annotation
hl-page:: 3
hl-color:: red
RCT data is used to fine-tune using a different output layer
ls-type:: annotation
hl-page:: 3
hl-color:: red
Optimization Formulation
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
use the mean of the historical query-wise elasticity to forecast the class-wise elasticity
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
model predictive control (MPC) technology
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
[:span]
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
The features include query information (e.g., the origin, destination, time, weekday, and distance), spatial features (e.g., point of interest information, and order statistics in the same cells), subsidy information, and trading features (e.g., historical order placement rate). I
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
The size of the common inner layers and output layer is set to 128, 64, and 32
ls-type:: annotation
hl-page:: 4
hl-color:: green
[:span]
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
No Cluster Oracle
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
Compared with the baseline, our system obtains a lower subsidy rate and higher revenue, for its accurate compensation, to achieve a higher ROI.
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
routing engine
Routing engines divide up the road network into small road segments represented by weighted edges in a graph.
ls-type:: annotation
hl-page:: 1
hl-color:: yellow
graph-based models used by routing engines can be incomplete with respect to realworld planning scenarios typically encountered in ride-hailing and delivery
ls-type:: annotation
hl-page:: 1
hl-color:: yellow
路线不确定
人为失误:开错路
分布偏移:不同任务到达时间分布不同
预估形式不确定:不同业务对 ETA 诉求不同,比如预估价需要平均 ETA,用户可能需要 ETA 分布或者期望
routing engine ETA
DeeprETANet 预估 routing engine ETA 和 the observed arrival time 的残差
本文创新点
ETA Post-processing
ls-type:: annotation
hl-page:: 1
hl-color:: yellow
DeeprETANet Architecture
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
Multi-resolution Geospatial Embeddings
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
geo 相关信息如何 embedding
Past works have encoded these locations with multi-scale sinusoidal embeddings
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
have used LSTMs to learn geospatial embeddings [29]
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
[30 ] use grid embeddings of latitude and longitude in which the grid cell is augmented with the relative distances between the original point and the four corners of grid.
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
In [15 ], latitude and longitude are embedded separately over uniform grids to reduce cardinality, and graph pretraining is used to incorporate road network connectivity information for each origin and destination.
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
A wide and deep recurrent network was proposed to capture spatial-temporal information [27]. This model uses a cross-product of embeddings to learn feature interactions, which is commonly used in recommendation systems
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
Routing Engine ETA
特征
[:span]
hl-type:: area
hl-stamp:: 1675210287675
hl-page:: 3
ls-type:: annotation
系统的挑战性
firstly, the RE-ETA data and the residual distribution are skewed and have long tails.
ls-type:: annotation
hl-page:: 3
hl-color:: green
数据分布倾斜以及长尾
Log-transformation is usually used for normalizing skewed data distribution. 通常使用对数变换来处理这个问题
hl-page:: 3
ls-type:: annotation
We propose to solve this issue by using an asymmetric loss function.
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
Secondly, heterogeneity of data is due to multiple trip/request types;
ls-type:: annotation
hl-page:: 3
hl-color:: green
网约车 ETA 和 配送 ETA 分布不一致(数据异构性)
we design a model structure to deal with trip heterogeneity specifically
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
Thirdly, this post-processing system needs to handle a large volume of requests with a low latency.
hl-page:: 3
ls-type:: annotation
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
+ #### 特征处理 #[[Feature Engineering]]
+ calibration features
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
+ 区分是什么类型 ETA 请求
+ The calibration features convey different segments of the trip population such as whether it is a delivery drop-off or ride-sharing pick-up trip.
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
+ we found discretizing and embedding all the features provided a significant accuracy lift over using continuous features directly. 特征离散化 + embedding 有显著效果提升
hl-page:: 3
ls-type:: annotation
+ Categorical features
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
+ Continuous features
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
+ quantile bucketizing function 数值等频分桶
hl-page:: 4
ls-type:: annotation
+ 等频分桶效果优于等距分桶
+ We found that using quantile buckets provided better accuracy than equal-width buckets, similar to other literatures have suggested [19 ]
hl-page:: 4
ls-type:: annotation
+ 分位数分桶单位bit下传达更多原始特征信息
+ One explanation is that for any fixed number of buckets, quantile buckets convey the most information in bits about the original feature value compared to any other bucketing scheme.
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
+ Geospatial features
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
+
+ 为什么这么做?
+ 唯一字符串表示地理信息,然后再对字符串做 embedding
+ The idea is to first obtain a unique string to represent the2D geospatial information and then map the string to a unique index for embedding look-ups.
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
+ [[Geohash]]
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
+ geohash(lat, lng, u) => encoded geohash strings
+ u 指定 string 长度
+ 将 lat, lng 转换成 [0,1] 之间浮点数,再转换成整数,最后用 base32 编码成字符串
+ [:span]
hl-type:: area
hl-stamp:: 1676206598188
hl-page:: 4
ls-type:: annotation
+ [:span]
ls-type:: annotation
hl-page:: 4
hl-color:: red
+ Feature hashing 将 encoded geohash strings 变成 index
hl-page:: 4
ls-type:: annotation
+ Exact indexing
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
+ 每个 grid cell 有单独 embdding,geohash 精度越高,该方法内存消耗越大
+ Multiple feature hashing
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
+ 使用多个哈希函数将格子转化成 index,减少哈希冲突
+ 细节
+ 起点经纬度、终点经纬度、起终点对经纬度都做为特征
+ MurmurHash 使用不同的种子初始化
+ 使用 $u \in \{4,5,6,7\}$,多种大小的格子,减少数据稀疏性影响
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
+ Interaction layer
ls-type:: annotation
hl-page:: 5
hl-color:: yellow
+ 每一个向量代表一个独立特征,无顺序要求(不需要位置编码)
+ each vector represents a single feature
ls-type:: annotation
hl-page:: 5
hl-color:: yellow
+ [:span]
ls-type:: annotation
hl-page:: 5
hl-color:: red
+ Linear self-attention
+ 输入矩阵 $L*d,L >> d$
+ attention 矩阵计算速度太慢
+ [[linear transformer]] [[Linformer]] [[performer]]
+ $\begin{aligned} V_i^{\prime} & =\frac{\sum_{j=1}^L \phi\left(Q_i\right)^T \phi\left(K_j\right) V_j}{\sum_{j=1}^L \phi\left(Q_i\right)^T \phi\left(K_j\right)} \\ & =\frac{\phi\left(Q_i\right)^T \sum_{j=1}^L \phi\left(K_j\right) V_j}{\phi\left(Q_i\right)^T \sum_{j=1}^L \phi\left(K_j\right)}\end{aligned}$
+ $\phi(x)=\operatorname{elu}(x)+1=\max \left(\alpha\left(e^x-1\right), 0\right)+1$
+ $f\left(X_{e m b}\right)=V^{\prime}+X_{e m b}$
+ 复杂度: $O(Ld^2)$
+ Calibration layer
ls-type:: annotation
hl-page:: 5
hl-color:: yellow
+ 输入请求 ETA 类型,得到一个对应的偏置
+ $\hat{r}_{\mathrm{ij}}=\hat{f}_2\left(\hat{f}\left(X_{i_{\mathrm{emb}}}\right)\right)+\hat{b}_j\left(X_{i_{\mathrm{type}}}\right)$
+ $b_j$ 第 j 种类型 ETA 的偏置(可学习)
+ f Interaction 层
+ f2 全连接层
+ 优点
+ 相当于对预测结果进行整体偏移,最小时间成本
+ [[MMoE]] 或 [\[\[Multi-Head Attention\]\]](/post/logseq/Multi-Head%20Attention.html)
+ We also tried the multi-heads structure and mixture of expert structure
ls-type:: annotation
hl-page:: 6
hl-color:: yellow
+ ReLU 限制预测值范围
ls-type:: annotation
hl-page:: 6
hl-color:: yellow
不同类型 ETA 任务需要用不同的指标来评估
对异常值鲁棒性更好,可以平衡多种常用的点估计指标
分别控制对高低估倾向以及异常值的容忍程度
that control the degree of robustness to outliers and the degree of asymmetry respectively.
hl-page:: 6
ls-type:: annotation
越大,对异常值越不敏感
低估和高估有不同的权重(对业务影响不同)
代表模型参数
优点:模拟其他回归损失函数以及使点估计满足多样性的业务指标
每周训练模型
ls-type:: annotation
hl-page:: 6
hl-color:: yellow
baseline methods
HammockNet
ls-type:: annotation
hl-page:: 6
hl-color:: yellow
DeeprETANet
qkv d=4
fc size=2048
Adam as the optimizer and relative cosine annealing learning rate scheduler.
ls-type:: annotation
hl-page:: 7
hl-color:: yellow
变形
评估指标
数据集
离线实验
p95 error 模型有无 feature hashing 表现相似,地理信息可能在典型 case 上有提升,但是不能改善极端错误
w/o calibration 层效果比 restnet 等方法差
对数据采样,分析 RE-ETA 残差和模型 ETA 残差
6.5 Online experiments 在线实验
ls-type:: annotation
hl-page:: 8
hl-color:: yellow
6.6 Embedding Analysis
ls-type:: annotation
hl-page:: 8
hl-color:: yellow
[[t-SNE]]
1 temporal embedding
深色 weekend 浅色 weekday
minute-of-week embedding 具有局部连续性,没有明确的周末或工作日效应
one-dimensional manifold 一维流形
[:span]
hl-type:: area
hl-stamp:: 1675819746664
hl-page:: 8
ls-type:: annotation
14 geospatial embeddings
颜色代表 speed buckets
hl-page:: 8
ls-type:: annotation
局部聚集性,相似的位置有相似的表示,不同 ETA 的表示部分相似
[:span]
hl-type:: area
hl-stamp:: 1675819938929
hl-page:: 9
ls-type:: annotation
7 CONCLUSION
ls-type:: annotation
hl-page:: 8
hl-color:: yellow
有这样分离架构(RE+模型)的任务都可以尝试使用这种方法提升效果
请求类型编码放到模型中学习
校准层,每个类型 ETA 都有一个 bias
[:span]
ls-type:: annotation
hl-page:: 7
hl-color:: yellow
[:span]
ls-type:: annotation
hl-page:: 59
hl-color:: yellow
如果先验和似然相乘得到的后验与先验有相同的函数形式,我们就说该先验是似然的共轭先验,也说后验分布和先验分布是共轭分布。
ls-type:: annotation
hl-page:: 61
hl-color:: yellow
是否共轭看的是后验是否和先验有相同的函数形式。
ls-type:: annotation
hl-page:: 61
hl-color:: yellow
在某些情况下,存在先验、后验、似然三者函数形式均相同的情况。
ls-type:: annotation
hl-page:: 61
hl-color:: green
x服从高斯分布时似然是高斯的,其均值的共轭先验也是高斯的,由共轭先验得到的后验也是高斯的,此时三者的函数形式都相同。
ls-type:: annotation
hl-page:: 61
hl-color:: green
我们说“伯努利分布的共轭先验是Beta 分布”
ls-type:: annotation
hl-page:: 62
hl-color:: green
我们一般不说“伯努利分布参数µ的后验分布和Beta共轭”
ls-type:: annotation
hl-page:: 62
hl-color:: green
我们倒是可以说“由Beta分布导致的伯努利分布参数µ的后验分布和Beta先验是共轭分布”
ls-type:: annotation
hl-page:: 62
hl-color:: green
ls-type:: annotation
hl-page:: 62
hl-color:: yellow
ls-type:: annotation
hl-page:: 62
hl-color:: yellow
理论上,我们应该从问题的实际出发,为参数引入最合理的先验,也就是我们应该从建模的合理性而不是从计算的方便性和可解释性出发选择先验。
ls-type:: annotation
hl-page:: 62
hl-color:: yellow
2-006
ls-type:: annotation
hl-page:: 62
hl-color:: purple
2-007
ls-type:: annotation
hl-page:: 63
hl-color:: purple
2-008
ls-type:: annotation
hl-page:: 63
hl-color:: purple
随着试验次数的增加,后验分布的不确定性会越来越小?
ls-type:: annotation
hl-page:: 63
hl-color:: yellow
随着试验次数的增加(数据集的变大),未知参数的取值越来越集中?
ls-type:: annotation
hl-page:: 63
hl-color:: yellow
答案是:在一般情况下,理论上的确有这样的趋势,但对于某些特定的数据集则不一定。
ls-type:: annotation
hl-page:: 63
hl-color:: yellow
在考虑了全部的数据集后,后验方差的均值总是小于等于先验方差。
ls-type:: annotation
hl-page:: 65
hl-color:: yellow
[:span]
ls-type:: annotation
hl-page:: 67
hl-color:: yellow
hls__Pattern recognition and machine learning_2006_Bishop
One role for the distributions discussed in this chapter is to model the probability distribution p(x) of a random variable x, given a finite set x1, . . . , xN of observations.
ls-type:: annotation
hl-page:: 87
hl-color:: yellow
sufficient statistic
ls-type:: annotation
hl-page:: 89
hl-color:: yellow
discrete random variables
ls-type:: annotation
hl-page:: 88
hl-color:: purple
parametric distribution
ls-type:: annotation
hl-page:: 88
hl-color:: purple
criterion
ls-type:: annotation
hl-page:: 88
hl-color:: purple
in a Bayesian treatment we introduce prior distributions over the parameters and then use Bayes’ theorem to compute the corresponding posterior distribution given the observed data.
ls-type:: annotation
hl-page:: 88
hl-color:: yellow
conjugate prior
ls-type:: annotation
hl-page:: 88
hl-color:: purple
One limitation of the parametric approach is that it assumes a specific functional form for the distribution, which may turn out to be inappropriate for a particular application.
ls-type:: annotation
hl-page:: 88
hl-color:: purple
calculus
ls-type:: annotation
hl-page:: 91
hl-color:: purple
In fact, we might wonder whether it is a general property of Bayesian learning that, as we observe more and more data, the uncertainty represented by the posterior distribution will steadily decrease.
ls-type:: annotation
hl-page:: 94
hl-color:: yellow
They can be used, for example, in real-time learning scenarios where a steady stream of data is arriving, and predictions must be made before all of the data is seen. Because they do not require the whole data set to be stored or loaded into memory, sequential methods are also useful for large data sets. Maximum likelihood methods can also be cast into a sequential framework.
ls-type:: annotation
hl-page:: 93
hl-color:: yellow
hls__Interpreting Trajectories from Multiple Views_2022_Chen
most of them decompose a trajectory into several segments and then compute the travel time by integrating the attributes from all segments
ls-type:: annotation
hl-page:: 1
hl-color:: blue
multi-view trajectory representation
ls-type:: annotation
hl-page:: 1
hl-color:: yellow
a segment encoder is developed to capture the spatio-temporal dependencies at a fine granularity
ls-type:: annotation
hl-page:: 1
hl-color:: yellow
n adaptive self-attention module is designed to boost performance
ls-type:: annotation
hl-page:: 1
hl-color:: yellow
o characterize the natural trajectory structure consisting of alternatively arranged links and intersections
ls-type:: annotation
hl-page:: 1
hl-color:: yellow
realize a tradeoff between the multi-view spatio-temporal features
ls-type:: annotation
hl-page:: 1
hl-color:: yellow
[:span]
ls-type:: annotation
hl-page:: 2
hl-color:: green
[:span]
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
traditional ETA algorithms mainly employ the divide-and-conquer strategy by representing a trajectory as a segment sequence and then summing up the local predictions
ls-type:: annotation
hl-page:: 1
hl-color:: blue
segment-view representation is artificially produced to capture the fined-grained local traffic conditions, which is however not comprehensive in characterizing the natural structure of the road network
ls-type:: annotation
hl-page:: 1
hl-color:: green
preserve static road characteristics, such as pavement type, road width and road functional level
ls-type:: annotation
hl-page:: 1
hl-color:: green
valued information such as the waiting time, the number of traffic lights, and the historical traffic volume
ls-type:: annotation
hl-page:: 1
hl-color:: green
the link- and intersection-views characterize the trajectory attributes from a coarse perspective; a link can be further decomposed into several segments, and hence the segment-view representation models the spatial dependencies at a fine granularity
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
On the one hand
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
However, without explicitly modeling the link-view characteristics, existing studies can hardly model the coherent consistency across segments within the same links.
ls-type:: annotation
hl-page:: 2
hl-color:: red
On the other hand
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
Hierarchical Self-Attention Network for Estimating the Time of Arrival
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
HierETA exploits the hierarchical relationship among the three views to portray the underlying road structure
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
proposed hierarchical self-attention network organizes the segment-, link-, and intersection-views efficiently according to their natural relationships.
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
adaptive self-attention network to jointly leverage the global and local patterns for spatio-temporal dependency modeling within the multi-view representation framework.
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
hierarchy-aware attention decoder
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
GMAN [ 50] employs a graph multi-attention structure to extract the spatial and temporal relationships
ls-type:: annotation
hl-page:: 2
hl-color:: green
graph representation learning generally suffers from the negative impact from irrelevant spatial neighboring regions, resulting in error propagation especially when the involved area grows larger
ls-type:: annotation
hl-page:: 2
hl-color:: green
graph modeling is limited to process only narrow neighboring regions and falls short on developing large-scale urban-wise systems
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
DeepTTE
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
DeepGTT
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
learns the representation of spatio-temporal information using a multi-relational network;
ls-type:: annotation
hl-page:: 3
hl-color:: blue
extracts the travel speed and representation of road network from historical trajectories based on tensor decomposition and graph embedding.
ls-type:: annotation
hl-page:: 3
hl-color:: blue
we design an adaptive self-attention network to explicitly capture the spatio-temporal dependencies of the trajectory using multi-view sequences
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
Attribute Feature Extractor
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
Hierarchical Self-Attention Network for Multi-View Trajectory Representation
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
Hierarchy-Aware Attention Decoder
ls-type:: annotation
hl-page:: 5
hl-color:: yellow
capture the spatiotemporal dependencies of segments in the same link
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
a local semantic pattern
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
a gating mechanism
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
Joint Link-Intersection Encoder.
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
the joint link-intersection encoder also includes a self-attention layer, a residual connection and a layer normalization
ls-type:: annotation
hl-page:: 5
hl-color:: yellow
as links and intersections appear alternatively
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
coarse-scale representation
ls-type:: annotation
hl-page:: 4
hl-color:: red
t fails to model the consistency shared within the same link
ls-type:: annotation
hl-page:: 4
hl-color:: red
employ two BiLSTMs to respectively encode the links and intersections
ls-type:: annotation
hl-page:: 5
hl-color:: yellow
local pattern
ls-type:: annotation
hl-page:: 5
hl-color:: red
segment-view context feature that captures the local traffic conditions
ls-type:: annotation
hl-page:: 5
hl-color:: yellow
joint link-intersection context feature that preserves the common road attributes
ls-type:: annotation
hl-page:: 5
hl-color:: yellow
separately processing each segment without considering the link-view correlation is problematic as it lacks the feedback from the link-view consistency.
ls-type:: annotation
hl-page:: 5
hl-color:: red
attention guidance that adopts the link-view consistency to further adjust the segment-view attention
ls-type:: annotation
hl-page:: 5
hl-color:: red
we can adaptively select the most relevant features from different representation granularities.
ls-type:: annotation
hl-page:: 5
hl-color:: yellow
travel time estimation is closely related to the critical components
ls-type:: annotation
hl-page:: 5
hl-color:: green
EXPERIMENTS
ls-type:: annotation
hl-page:: 5
hl-color:: green
probability density functions (PDFs) and cumulative distribution functions (CDFs)
ls-type:: annotation
hl-page:: 5
hl-color:: green
[:span]
ls-type:: annotation
hl-page:: 6
hl-color:: yellow
We repeat each experiment for five times except the statistics-based approach Route-ETA and report the mean and the standard deviation of different runs.
ls-type:: annotation
hl-page:: 6
hl-color:: green
mean absolute error (MAE), root mean squared error (RMSE), mean absolute percentage error (MAPE), and satisfaction rate (SR), similar to existing approaches [ 23 ]. Specifically, SR refers to the fraction of trips with error rates less than 10% and a higher SR indicates better performance and customer satisfaction
ls-type:: annotation
hl-page:: 6
hl-color:: green
[:span]
ls-type:: annotation
hl-page:: 7
hl-color:: yellow
ConstGAT considers the graph structures of the road network to exploit the joint relations of spatio-temporal information.
ls-type:: annotation
hl-page:: 7
hl-color:: blue
[:span]
ls-type:: annotation
hl-page:: 7
hl-color:: green
That is, interpreting the trajectory from multiple views effectively portrays the hierarchical structure of road network and eases the error propagation for estimating the travel time.
ls-type:: annotation
hl-page:: 7
hl-color:: green
window sizes
ls-type:: annotation
hl-page:: 8
hl-color:: green
[:span]
ls-type:: annotation
hl-page:: 8
hl-color:: yellow
he correlation between adjacent segments slightly decreases while the modeling uncertainty increases.
ls-type:: annotation
hl-page:: 8
hl-color:: green
[:span]
ls-type:: annotation
hl-page:: 8
hl-color:: green
The local attention in encoder is removed to verify the effectiveness for modeling the semantic traffic condition.
ls-type:: annotation
hl-page:: 8
hl-color:: green
verify the necessity of extracting the structural traffic pattern.
ls-type:: annotation
hl-page:: 8
hl-color:: green
removing the joint link-intersection encoder
ls-type:: annotation
hl-page:: 8
hl-color:: green
HierETA performs better than both variants that eliminating local and global attentions, which is contributed to the introduction of the global structural and local semantic patterns.
ls-type:: annotation
hl-page:: 8
hl-color:: yellow
同义词库的构造
ls-type:: annotation
hl-page:: 17
检索式的构造
ls-type:: annotation
hl-page:: 17
知识库的建立
ls-type:: annotation
hl-page:: 17
知识库的更新和完善
ls-type:: annotation
hl-page:: 18
、图片/文字切块-归纳-重组阅读法
ls-type:: annotation
hl-page:: 32
[:span]
ls-type:: annotation
hl-page:: 36
将这些文献中的图片批量地按顺序提取出来到一个文档中
ls-type:: annotation
hl-page:: 33
这些图片后期还会做归纳分类,打乱顺序,因此提取图片过程中还要做好索引,以便后期也能知道这些图片是来自什么文献的
ls-type:: annotation
hl-page:: 33
,通过浏览这些图片,可以快速了解如下信息:本文做的是什么体系?创新点或者贡献在什么地方 ?研究了哪些内容?采用了哪些研究方法?得到了什么结论?还有哪些值得进一步研究的地方
ls-type:: annotation
hl-page:: 33
如果我们来设计实验的话,大致应该如何设计?如果我们来撰写论文的话,应该如何编排图表
ls-type:: annotation
hl-page:: 33
将同一类型的图片都归纳整合在这个文档中,便于我们迅速对比和浏览同类图片,快速获得感兴趣的信息
ls-type:: annotation
hl-page:: 35
[[标记分类]] 不要想着直接抄袭其他人的方案,自己去探索,如果都不知道怎么做,那么从最简单开始,可以从 [[@Elftmann Highlighting]] 获得参考吗?
黄色:重点
红色:疑问
根据文章结构去阅读
引言
提出什么问题
前人的工作
自己工作如何解决上面提到的问题
[[Introduction]]
相关工作
别人的工作
你和他们的区别
结论
通过统计学方法预估区间
区间估计法
假设待估计值服从正态分布,计算这个值的标准差,然后给定某个置信度,查表得到 z 值。均值加减 z值乘标准差结果,得到左右区间。
区间预测中应用
假设预测误差服从均值为 0 的正态分布,估计预测误差的标准差
给定置信度,查表得到 Z 值
计算预测误差的上下限:z*标准差
将上下限加到预测值里面,得到一个预测区间
如何预测标准差
用总体标准差近似样本标准差
[[Bootstrap]] 通过采样 N 次的预测误差,取N次误差的分位数作为上下限,不需要假设误差服从正态分布。
例子,三次采样结果 [-50,0,50],5% 分位数 -45
随机森林
[[Monte Carlo]] Dropout
定义特定的损失函数来输出区间
直接拟合上下界 [[@High-Quality Prediction Intervals for Deep Learning: A Distribution-Free, Ensembled Approach]]
#card
应用
指定三个分位数(0.1,0.5,0.9),把这三个分位数损失加起来作为最终的损失函数。
[[MQRNN]] [[MQCNN]]
lightgbm和 xgboost 的 objective 也支持 quantile 选项
负对数似然损失 #card
[[DeepAR]] 指定预测值服从的概率分布,利用神经网络预测概率分布的参数,构造负对数似然作为损失函数,优化损失函数得到概率分布的参数。
预测时通过蒙特卡洛采样的方式生成预测值和区间预测
采样 100 次,均值就是点预测结果,95% 和 5% 分位数对应区间预测的结果
工具
GluonTS
Darts
MAPIE
先验知识以及假设
归纳偏置
归纳和演绎 induction deduction
从一些例子中寻找共性、泛化,形成一个比较通过的规则的过程
偏置代表对模型的偏好
用规则约束模型,从而起到模型选择
将无限可能的目标函数约束在一个有限的类别假设中
近似损失 + 估计损失(更宽松的假设会增大这个损失)
常见的例子
[[奥卡姆剃刀]] :-> 希望学习到的模型复杂度更低
[[KNN]] :-> 特征空间中相邻的样本倾向于属于同一类
SVM 好的分类器 应该 最大化类别边界距离
[[RNN]] :-> 每一个时刻的计算依赖历史计算结果
sequentiality
time invariance
时间变换不变性
双向 RNN
[[DNN]] :-> 信息应该逐级加工,层层抽象
[[CNN]] :-> 信息具有空间局部性,滑动卷积共享权重方式降低参数空间
locality
spatial invariance
空间变换不变性 translation invariant
[[GNN]] 连接不变性
[[Word2Vec]] :-> A word’s meaning is given by the words that frequently appear close-by.
结构相似性
例子:猫和狗在语料中没有同时出现,但是他们的上下文完全一致,所以最终 embedding 相似。
我有一只猫。
我有一只狗。
挖空卡片
使用 {{
和 }}
包围需要挖空的内容
{{
之前需要有一个空格,适合英文,中文看起来比较奇怪。
带公式或代码的填空
1 | replacecloze:: " '\sqrt{ a^{2}+b^{2} }' " |
Making multiline cards · debanjandhar12/logseq-anki-sync · Discussion #88
card
标签多行增量卡片,父节点打上 incremental
和 card
标签,实现复习时遮盖一行展示其他行。
#forward
(默认卡片方向), #reversed
, #bidirectional
标签;或者使用 direction property direction:: ->
, direction:: <-
, direction:: <->
#depth-n
指定展示 child 节点的数量,#depth-1
只展示一级子节点
不同步卡片 #no-anki-sync
批量转成卡片 You can use the #card-group
tag to turn all the children of it’s block to cards
指定卡组
支持全局和单独 block
deck: : Tutorial
Swift Arrow cards
: - >
or : < -
or : < - >
query-table:: false
query-properties:: [:title :tags]
``
``
#Paper
标记笔记中的所有 todo1 | {{< logseq/orgQUERY >}}{:title [:h2 "Doing"] |
category
属性为 Programming
的页面的 Block。1 | {{< logseq/orgQUERY >}}; 以下注释是我查找网上文章结合自己的理解,不一定对 |
+ 找到标记为 TODO
1 | {{< logseq/orgQUERY >}}{:title [:h2 "Doing"] |
常用解决方法
重采样 re-sampling
过采样 oversampling,增加数量少的类别样本
增加正样本使得正负样本数目接近
原始正类之间插值来生成额外的正类
欠采样 undersampling,剔除一些数量多的类别样本
去除负样本使得正负样本数目接近
将负样本划分成多个集合供不同的学习器使用
数据合成
样本增加高斯噪声 data smoothing
SMOTE
重加权 re-weighting
通过样本权重或者 loss 权重给数量多的类别降权,给数量少的类别加权。
[[F1 Reweight Loss]] 调节二分类模型 recall/precision 相对权重的损失函数
[[F1 Score]]
F_beta
大于 1,重 recall,小于 1 关注准确
增加辅助任务
迁移学习 tranzsfer learning
度量学习 metric learning
阈值移动 threshold-moving
二分类中将 0.1 当成是正样本
再缩放 rescalling
模型融合
分类机器学习中,某一标签占比太大(标签稀疏),如何学习? - 知乎 (zhihu.com)
难易样本不均衡还是正负样本不均衡
同步
笔记指定 type,通过 query 语法聚集不同的 type 的笔记,生成例如论文阅读清单之类的。
[[Book]]
[[Paper]]
[[People]]
派单策略
召回距离
派单距离
拼单上限
难点
出餐时间如何预估?
多任务学习
配送 ETA 分类
分单挑战
配送 ETA 和出行 ETA 对比
为什么配送 ETA 是从用户下单到送达,出行 ETA 是从起点到终点的时间?为什么出行不预估从发单到到达终点的时间?
TODO 配送相关主题阅读 #XXX
TODO [[Applying Deep Learning Based Probabilistic Forecasting to Food Preparation Time for On-Demand Delivery Service]] 美团 深度学习订单出餐时间概率预测 [[KDD/2022]]
TODO [[@Order Fulfillment Cycle Time Estimation for On-Demand Food Delivery]]
TODO 美团技术博客配送相关文章
美团外卖骑手背后的AI技术 - 美团技术团队 (meituan.com)
时间序列问题
事件预测,下一时刻大概会发生什么事情
时机预测,什么时候打电话合适
精细预估
配送时间
上下楼时间
出餐时间
美团 郝井华 [[即时配送中的人工智能技术]]
五分类例子
模型输出 z 后经过 sigmoid
五分类相当于在 fz 的空间上找到 4 个切分点,用 表示 x分别属于 5 个级的概率
1 | class OrdinalRegressionLoss(nn.Module): |
Ref
破译密码的复杂度主要在于密码的长度,包括我在内的大部分人很难记住上百个不同密码。这时候推荐使用密码软件:自动生成长密码,网页和 App 自动填充。当然,如果密码软件泄漏,完全没有办法。
我使用过的密码软件有:
LastPass
:比较简单,只使用过 chrome 插件功能。
1PassWord
:全平台,ui 美观,功能强大。除了能保存密码外,还能保存一些简单的笔记。~~目前主力使用,~~贵的东西除了贵就没有其他缺点了。
[[Bitwarden]] 基础功能免费 + 高级功能收费(2FA) 。官方提供 docker 镜像,可以私有化部署,该版本解锁全部会员功能。
KeePass:开源方案,提供多种第三方客户端。所有数据保存在单一的文件中,安全性高,但是会带来跨平台同步问题。
MacOS
MacPass
:node.js 开发, ui 简洁。
Auto-type
全局快捷键,不知道为什么在 qq 客户端上不能使用,看提示是 window 找不到,简单看了一下,感觉是软件功能比较弱。KeeWeb
:qt 开发,ui 古典。
Auto-type
: 打开需要输入密码的软件,光标移动到输入框,然后打开 KeeWeb,按下 cmd+T,就能完成自动填充。
打不开“KeeWeb-1.12.0.mac.dmg”,因为 Apple 无法检查其是否包含恶意软件。
sudo spctl --master-disable
KeePassXC
:据说功能强大
Chrome 通过插件 KeePassHttp-Connector
来配合客户端实现网页上的密码填充。
iOS 中推荐 FantasyPass
(12 元),支持 faceid、touchid 打开,支持网页和 app 的自动填充。
KeePass
KeePass 这类软件在实现上有一个缺点:一条密码记录只能对应一个 website?如果有多个网址,就必须创建多条记录。这样带来的烦恼,是如果改变这个帐号对应的密码,就需要一个个修改。
MacPass 中可以复制一个项目,然后选择引用用户名和密码。KeeWeb 中不知道如何解决
如何锻炼阅读文献的能力呢?如何快速获取一篇文章的要点呢?Reference #card
进入实验室的新生需要在每周一的组会上讲解上一周 CNS 杂志上跟生物医学相关的全部文献
由于 Nature 是北京时间周四凌晨更新,Science 是周五凌晨,而 Cell 是半月刊,因此对于新生而言,需要在三天左右的时间消化 10~25 篇(没有 Cell 的话 10 篇左右,有 Cell 的话再加 10~15 篇)最前沿的学术文章,并且做成 PPT 汇报。
有时候新生还有课程和实验,因此时间就显得更紧张,进实验室的第一年,周末基本上都用来看文献了。还好 Reference 并不需要讲的很细,但也得讲成一个自圆其说的小故事。
作为直博三年级的学生,Reference 本来跟我的关系已经不大了,但是为了给新生示范一下如何讲解文献,因此我在本周的组会上汇报了上周 CNS 上的生物医学相关的全部文献,一共 28 篇。#card
我自己看了 3 天(不能算高效,但在高效的路上),感觉看到缺氧,一方面是因为文章虽然都跟生物医学相关,但是涉及的领域实在千差万别,需要一定的基础知识才可以消化;另外还有部分文章真的脑洞大开,思路新奇,几乎超出了我目前的理解范畴,只能读个大概。
下面我从切身的体验出发,聊一下自己的一些浅薄的想法。
最后,也将我花了很多时间整理的上周的 CNS 生物医学相关的文献要点和 PPT 分享给大家。
如何快速消化一篇文献?拿到一篇文献后,不妨先问自己几个问题:#card #incremental
(1)这篇文章属于什么领域或方向?
(2)解决了什么问题?为什么这个问题这么重要?
(3)使用了什么方法和模型?为什么这个方法可以解决这个问题?
(4)核心结论是什么?下一步还可以怎么做?
#card 使用人为的坐标来精确定位文献在生物医学中的具体位置,久而久之,将这些散落的知识点联结起来,最后形成一张知识网络。
纵向来看,生物过程包括个体层面、组织器官层面、细胞层面、分子层面以及原子层面等。
横向切分,这个过程属于什么范畴,比如表观遗传学、免疫、神经生物学、发育生物学等。
现阶段的文献,分子层面的机制偏多。由中心法则延展开来,分子无非 DNA、RNA 和蛋白质,这些分子的排列组合起来参与一些特定的过程,比如 DNA 复制、DNA 转录、RNA 翻译、RNA 修饰、组蛋白修饰、非组蛋白修饰等等。当然还有染色体整体层面出发的,比如染色体高级结构调控等。
积累细分领域知识:每次读论文发现一个新的研究方向或主题,创建一个对应的文件夹#card
归类的过程也是慢慢消化和整理的过程。尽量让读过的文献逐渐融入自己的知识体系,而不是读过就读过了。
当文献是孤零零时,你很难记住成千上万个孤零零的知识点;但是一旦成为体系,就更容易记住了,此为内化。
(2)这篇解决了什么问题?为什么这个问题这么重要?#card
我老板经常在组会上问我们的一个问题是,这篇文章为什么能发在 CNS 上?如果这个问题能回答清楚,其实文章基本上也就消化了。
能发在 CNS 上的研究每一篇都有故事,我们需要挖掘这背后的故事:
有的是困扰学术界几十年的难题,今天终于获得解答,比如施一公他们关于剪接体结构的解析;
有的是颠覆人们认知的新发现,比如此前人们认为,脑中没有淋巴管,但 2018 年 8 月 9 日的 Nature 封面文章就报道,在大脑中清楚地观察到了脑膜淋巴管;
还有的是让几十年的争论尘埃落定,比如终于发现了引力波。
在文章的第一句,作者通常就会说明自己为什么要做这个研究,以及这个研究为什么这么重要;而且会在文章的第一段或者第一部分进行详细的说明,多花时间思考这个问题远胜于你花时间弄懂每一幅图说什么。
(3)这篇文章使用了什么方法和模型?为什么这个方法可以解决这个问题?#card
(4)核心结论是什么?下一步还可以怎么做? #card
文章的核心结果都在图里面,这个时候可以去看图了,这个图证明了什么,为什么能支持这个结论。如果你是这个研究方向的,那么最后很有必要看 Discussion 部分,作者会对文章的核心观点做一个回顾,并且会讨论下一步的计划,具有一定的启发性。
其实哪怕我现在博士四年级,我也依然会碰到自己此前从来没接触的研究主题,但相比一年级,这种事情发生的概率要低得多。万一碰到自己不熟悉的,尤其是方法学的开发,会非常晦涩难懂,而且尤其对于* Nature* 和 Science,其篇幅是有规定的,因此要求作者极度凝练。碰到这种情况,不妨把摘要和 Introduction 部分多读几遍,读不懂反复读,亲测非常有效。书读百遍其义自见,文献亦然,古人诚不我欺也。
在文献阅读过程中,留意科学史,注意科学问题的延续性。比如这几年非常火热的相分离(phase seperation),#card
你自己画一条时间线,哪一年谁最先发现这个现象,哪一年谁做出了关键突破。
自己尝试写一个简短的综述,熟悉经典的工作以及行业的大牛,今后读起来会觉得:哦,这篇文章的作者是“老熟人”,他之前做出过什么重要的工作……
自变量与因变量的特定百分位数之间的关系建模
数据从小到大排列,q 分位数为 m 则表示该组数据中 100q% 的数据小于 m。满足q%的样本在曲线下方
特点
分位数回归不会假设目标变量的分布
分位数回归趋向于抑制偏离观测值的影响
MAE 是一种中位数的分位数回归
公式定义 #card
条件概率
分位数回归用途: #card
区间预测(interval prediction),
异常值检测(outlier detection)
单点损失函数–weighted absolute deviations #card
整体优化目标
分位数回归可以通过随机森林实现 #card
训练中单颗树每个落入叶子结点的样本权重占比
随机森林每个落入叶子结点样本权重占比
随机森林的预测结果
随机森林本质上在approximate the conditional mean ,因此考虑用 #card
总结通过随机森林得到分位数回归的过程 #card 
[[@如何提高编程速度:Emacs高手教授轻松精通所有编辑器和IDE的秘诀]] 中提到的 VS Code 全局快捷键设置
1 | // Place your key bindings in this file to overwrite the defaults |
[[@如何提高编程速度:Emacs高手教授轻松精通所有编辑器和IDE的秘诀]] 中提到的 vim 快捷键设置
coalesce
repartition
Spark中repartition和coalesce 相同点 :-> 都是调整分区的方法
Spark中repartition和coalesce 区别 :-> repartition 默认有 shuffle 操作,coalesce 使用 hash paritioner 重新 shuffle 数据
什么情况使用 coalesce 调整分区 :-> filter 之后收缩分区
card-last-score:: 5
card-repeats:: 1
card-next-schedule:: 2022-10-22T02:05:11.083Z
card-last-interval:: 4
spark-submit --queue root.queue_name --executor-cores 2 --num-executors 400
num-executors:多少个 Executor 节点来执行
executor-memory
executor-cores:executor CPU 核心数
core 同一时间执行一个 task
同一个 executor 中的 core 共享 executor-memory
driver-memory
spark.yarn.executor.memoryOverhead executor 额外预留的内存
spark.default.parallelism
每个 stage 默认 task 数量 500-1000
设置该参数为num-executors * executor-cores
的2~3倍较为合适
spark.dynamicAllocation.minExecutors
以及 spark.dynamicAllocation.maxExecutors
spark.driver.maxResultSize
设置 Executor 端发回数据量
降低 spark.memory.fraction
删除包含特定字符串的行 sed '/abc/d;/efg/d' a.txt > a.log
删除前几行 sed -i '1,10d' filename
删除最后几行 sed -i '$d' fileName
在每行的头添加字符,比如"HEAD" sed 's/^/HEAD&/g' test.file
在每行的行尾添加字符,比如“TAIL” sed 's/$/&TAIL/g' test.file
sed -n
[n1[,n2]]function
function
mac sed -i "tmp" "命令" file.txt
需要指定一个备份字符串,原文件会保存成 file.txttmp
如果不需要备份,直接给个空字符串
其他分隔符
@
|
!
反引号
不同部分作用
注意力计算
打分函数 $${H=V softmax(\frac{K^TQ}{\sqrt{d_3}})}$$
过程
为什么 self-attention 先对 embedding 进行 dense 层映射,然后再进行 attention 计算?
dense 层 #card
W 为自注意力层提供一些可控制的参数,允许输入的向量适合 QKV 的功能。
qkv 的大小,实现降维。
多头机制作用 :-> 每一个头对应的 wq、wk、wv 矩阵都不同,对模型的本身特征抽取的多样性具有帮助。
为什么不能直接做 attention 计算?原始 embedding 空间点击建模 :-> 语义关系
点积建模语义的问题 :-> 默认假设语义相近的注意力更高, VVV 中自己对自己的注意力权重永远最高
进行变换后的点积含义
一个词在做 query、key、value 时,直觉 :-> 有不同的表示
为什么 self-attention 中的词向量要乘以 QKV 参数矩阵?
关于attention机制的一些细节的思考 - 知乎 (zhihu.com)
数据备份
atmosphere
大气层系统相关文件
emuMMC
虚拟系统内存中数据
Nintendo
虚拟系统 SD 卡中数据
游戏安装
Switch 打开 DBI,选择 Run MTP Server
Mac 下载 Android File Transfer,然后将数据拖到 MicroSD install 目录
mac 游戏目录运行 python -m http.server
成为主机,默认地址是 http://ip:8000
switch 打开 dbi 或者 awoo installer 等工具,输入上面的地址,等待连接成功,就可以通过网络安装游戏
Awoo installer
使用 mac 系统更换 SD 内存卡
磁盘工具 Disk Utility
制作镜像,备份旧 SD 卡全部内容文件 -> 新建映像 -> 基于 "xxx" 新建映像
,其中 xxx 就是你旧 SD 卡的名称参考
游戏格式
NSP
Nintendo Submission Package
eshop 中的数字版
压缩格式为 NSZ
XCI
NX Card Image
卡带 dump 文件镜像
压缩格式为 XCZ
报错
无法启动软件,请在HOME菜单中再试一次
failed to get update information daybreak mac
存档管理
相关资源
seq2seq使用teacher forcing有一个问题,就是模型训练和预测行为的不一致会导致模型的泛化性能下降
[[Transformer]] 训练阶段使用这种方式,旨在提升序列模型训练稳定性、加速模型收敛。
将一系列模型的输出结果作为新特征输入到其他模型,从而实现模型的层叠。
方法
训练集数据分成 k 份,每次使用 k-1 份数据训练 k 个模型
利用上面的模型预测没有训练的数据,预测结果做为一个新的特征A
用label+新的特征训练模型训练一个新的模型
测试集先过上面的 k 个模型得到预测结果,结果求平均做为特征A,在经过最后的模型得到结果
[[Ref]]
yihong0618 (@yihong06181) / Twitter 个人跑步数据可视化
yihong0618/gitblog: People Die, but Long Live GitHub 使用 [[Github Issues]] 写博客
项目灵感来源 People Die, but Long Live GitHub - laike9m’s blog Github 是我们这个时代的数字公墓 ^[[不老阁]]^
[[idea]] 自己认知中博客和笔记的中间地带能不能使用这个来实现?副标题就是:一个有问题的人
写作压力比使用其他方法小
有脚本把 issues 备份成 md 文件,又想起自己误删的经历……
相关参考:真的可行
感受:思考、实践、总结、迭代
文章
流程-SuperMemo增量学习及间隔复习 - 知乎 (zhihu.com)
使用 sm 安排学习任务
使用 PDF Expert 三次增量阅读标注后,以 HTML 格式导出高亮笔记制作挖空卡片
实践-SuperMemo - 总结篇(五) - 知乎 (zhihu.com)
绝大部分阅读材料都能转化成 pdf 文件,然后导入索引进行增量阅读。
其他几篇文章介绍处理不同类型材料的方法,暂时没有太大参考意义。
SuperMemo实践闭环(1)-学习流程及时间管理 - 知乎 (zhihu.com)
使用 [[Keyboard Maestro]] 脚本学习 SM 中的材料
SuperMemo实践闭环(2)-增量学习及提取制卡 - 知乎 (zhihu.com)
pdf 中的子注释不同步到 sm,通过时间戳进行关联
km 给备注增加包含时间戳的链接信息
SuperMemo实践闭环(3)-批量挖空制卡的操作 - 知乎 (zhihu.com)
使用 opencv 处理,实在是太折腾了。
sm 如果支持插件系统,可能没有 anki 什么事情了。
Obsidian 阅读及笔记工作流程(一) - 知乎 (zhihu.com)
Higurashi-kagome/wereader: 一个浏览器扩展:主要用于微信读书做笔记,对常使用 Markdown 做笔记的读者比较有帮助。 (github.com) 支持导出书籍目录
zk 卡片阅读
大纲
高效学习-粗读
高效学习-精读
Obsidian 创建 Inbox
目录,使用增量笔记插件进行队列管理
Obsidian 笔记整理及TOC索引(二) - 知乎 (zhihu.com)
整理笔记,创建对应类别的 MOC
composer 插件实现笔记的提取和合并功能
使用条件查询汇总分散在不同笔记中的相同主题内容
ZK 笔记操作
编写query查询,将查询语法写在笔记中
file:2021 content:下载 ROI -line:(/\^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z_]{6,6}$/)
file 指定文件名
content 指定匹配关键字
对查询结果进行引用、嵌入、添加标签
使用 block 引用手动汇总结果
提取引用成为 TOC 笔记
对已体系化ZK笔记归档 。
text expand 提取大纲,admonition 折叠返回长内容(形成一个块)
Obsidian 内容聚合及图谱功能(三) - 知乎 (zhihu.com)
内容:1.如何更好使用多级标签及关键字来引用块粒度级的内容。2.如何结合Obsidian的关系图谱来探索知识并进行思维发散。
Journey 插件寻找两篇笔记之间的联系(路径)
Juggl 可视化
Obsidian与SuperMemo联用(四) - 知乎 (zhihu.com)
SuperMemo 学习安排,增量处理
内容导入,导入全部笔记内容
obsidian-html
md 转 html
SimpleHTTPServer
托管图片用于网络访问
大纲导入:查询指定标签笔记集合(每个大纲下面都会有标签),导入 sm 中。(使用 KM 快速跳转至源学习材料)
1 | expander |
使用 Spaced Repetition
插件,支持问答、挖空、卡片遮盖……
+ 架构图太复杂了……
SM18闭环及Obsidian系列- 入门必读 - 知乎 (zhihu.com)
硬件(克制住自己更新的冲动……)
我的机器配置:Mac Mini 2018 i7+ 64G (8G)内存 MacOS + Win10 SSD硬盘+SWAP
推荐配置: M1x MacOS (16G板载内存) + IOS + Parallels Desktop + Win11 + Android
软件
DevonThink
Odsidian
SuperMemo
学习闭环演示-最终流程及回顾(终) - 知乎 (zhihu.com) 看起来是视频的大纲
武将统计
国标(60 将)
君临天下 (32 + 4 将)
应变篇
不臣篇 (10 + 10 将)
纵横捭阖(8 将)
三国杀十周年服务器国战扩展
实体卡牌
三国杀国战应变篇
三国杀国战群雄割据
117
完整不臣篇,无四君主,势备篇权包不齐
三国杀国战十年经典 162将
假设 为独立同分布的随机变量序列,并具有相同的期望 和方差为 ,则 服从中心极限定理, 且 为随机序列
& Z_n=\frac{Y_n-E\left(Y_n\right)}{\sqrt{D\left(Y_n\right)}}=\frac{Y_n-n \mu}{\sqrt{n} \sigma} \rightarrow N(0,1) \
&
\end{aligned}
令 代入上面
AOE:1费旋风斩打1,2费背叛,3费闪电风暴打3,4费暗影烈焰打3、暗言术毁,5费混乱新星打4、乱斗,6费暴风雪打2,7费呼啦打5,8费扭曲虚空
单解:0费背刺,1费惩击,2费痛灭,3费致命射击,4费呱、暗影狂乱,5费虹吸,6费白富美
直伤:0费月火术打1,1费灵魂之火打4,3费熔岩爆裂打5,4费火球打6,7费血吼打7,8费心中的恶魔打8,10费炎爆打10
斩杀:0费怒火中烧,2费风怒,3费咆哮,5费嗜血
苟活:2费奶8,3费冰环,8费弗丁,9费大王、红龙15血
站场:3费大范,4费暮光龙,6费狮子,8费弗丁
功能牌:1费鱼人杀手蟹,2费软泥,5费哈里森,3费成长,4费架墙,0费沉默,1费冰霜震击2费寒冰箭冻脸,5费无面
姐夫+佐拉5费,姐夫+林彻7费,姐夫+佐拉+铜须8费,姐夫+佐拉+林彻10费,姐夫+林彻+铜须10费
[[Ref]]
hexo 基于 nodejs 实现,有大量的依赖,每次整理
博客系统演变之路
hexo+next、even Typecho Cho
wordpress
jekll
tiddlywiki
hugo
需要修改
梳理逻辑
主题美化
文章迁移
统计
RSS
评论
部署
搜索
[[nunjucks]] 模板引擎,文件扩展名是 njk
Hugo vs Zola :: /dev/ttyS3 — 回首向来萧瑟处 也无荒野也无灯 最终结论是如果不是特别喜欢 zola,不推荐 zola,开发者不够包容,不肯推进部分用法。
Hugo 静态博客建站记 - 自写主题 | 赤赤的象牙塔 (zerovip.vercel.app) 如何写一个 hugo 主题
来源:https://bbs.nga.cn/read.php?&tid=29315359
任务1~18具体情况如下:
倾向性评分是一个概率值(介于0和1之间),表示#card
在给定一组观测到的协变量(covariates,如年龄、性别、病史等)的情况下,某个个体被分配到处理组(而非对照组)的条件概率。
当前输入特征下用户被分配到实验组的概率
对于倾向性得分相同的一群用户,treatment 和特征是独立的,treatment 和潜在结果也是独立。
多变量函数中,偏导数就是关于其中一个变量的导数而保持其它变量恒定不变。
任意一个函数表示成诺干个正交函数的线性组合。
时域 空间域
x 轴是时间
例子
信号
三角函数图
频域 变换域
x 轴是频率
y 轴是对应频率下的增幅
时域到频域变换 #card
欧拉公式
使用正弦曲线做为基,会考虑整个坐标轴情况
+ s 控制窗口位置
+ $\vec{d}_{n, s}=g(t-s) \cdot e^{i n t}$
对于方差和期望来说,知道方差可以求出期望,期望是方差的充分统计量,反之毅然。
统计量 s 是样本的函数值(比如均值、方差)
充分统计指包含分布所需的全部信息的统计量
[:span]
ls-type:: annotation
hl-page:: 59
hl-color:: yellow
[[贝叶斯公式]]
分母 px 与 w 无关
后验相关于似然乘先验
[[共轭]]: 如果先验和似然相乘得到的后验与先验有相同的函数形式,我们就说该先验是似然的共轭先验,也说后验分布和先验分布是共轭分布。
ls-type:: annotation
hl-page:: 61
hl-color:: yellow
如何判断?
是否共轭看的是后验是否和先验有相同的函数形式。
ls-type:: annotation
hl-page:: 61
hl-color:: yellow
不是先验和似然的函数形式是否相同,也不是似然和后验函数形式是否相同。
先验和后验都是对 建模,似然是基于 对 X 建模。
先验与似然的的研究对象不同,不能强求函数形式相同。
先验和后验是对同一对象的两个不同模型,可以要求有相同的函数形式。
特殊情况: 在某些情况下,存在先验、后验、似然三者函数形式均相同的情况。
ls-type:: annotation
hl-page:: 61
hl-color:: green
似然和先验共轭,后验分布和先验分布是共轭分布
例子:
我们说“伯努利分布的共轭先验是Beta 分布”
ls-type:: annotation
hl-page:: 62
hl-color:: green
我们一般不说“伯努利分布参数µ的后验分布和Beta共轭”
ls-type:: annotation
hl-page:: 62
hl-color:: green
我们倒是可以说“由Beta分布导致的伯努利分布参数µ的后验分布和Beta先验是共轭分布”
ls-type:: annotation
hl-page:: 62
hl-color:: green
共轭先验是一种特殊的先验
局限性
优点
ls-type:: annotation
hl-page:: 62
hl-color:: yellow
ls-type:: annotation
hl-page:: 62
hl-color:: yellow
使用场景
好处
无序判空
无需在循环结束后再补上最后一段区间的逻辑
1 | i, n = 0, len(nums) |
基本形式 #card
匹配法就是找出对应组的相似对象并将其事实结果作为反事实结果估计
该方法运用能够影响结果的协变量,从对照组中选出和干预组相似的样本进行匹配,并对两个组进行比较。
匹配法成立的条件是影响结果的所有协变量均 可观测
存在多个协变量时,也可以将它们整合成一个得分进行 :-> 匹配 [[倾向性评分匹配]]。
倾向得分匹配法成立必须满足两个前提条件。#card
第一个前提条件是,所有会影响结果的协变量均为可转化成数值的数据。
第二个前提条件是所有协变量都必须用来计算倾向得分
例子:对于干预组的一件打9折的连衣裙A,可以在控制组的没打折的连衣裙中找出具有相似款式,风格,材质等属性的连衣裙B,将B的销量作为A的 反事实结果 。
匹配可以形式化如下,其中 为单元 的预估结果, 为单元 的事实结果, 为单元 的匹配邻居。这里包含两个问题:1)如何定义相似?2)如何挑选邻居?#card
距离度量
原始空间:#card
变换空间:#card
倾向性分:#card
线性倾向性分:#card
基于预测分数:#card
基于随机映射:#card
混合方法:首先基于所有背景变量用倾向性分做一遍粗筛,然后对于关键背景变量用以下度量做一遍精筛。#card
邻居选择
最近邻匹配:#card
分层匹配:#card
完全匹配:#card
变量选择:#card
做笔记,做知识管理是为了什么? [[母题]]
light 做笔记,就是为更好地做经营决策和投资决策
shaonan 做笔记,除了用来写这本书,也为他的付费邮件组「产品沉思录」积累素材;
自己 做笔记是为了学习算法知识,解决现实中的问题。
原则
五条建议
记录 [[反常识卡]]
[[多元思维模型]] 不是用来证明机会有效,而是用来证伪机会不值得投资。
如何寻找反常识?
反常识的观点或事实
负面的观点
改变解读过去经验的视角
复杂东西简化的视角
意料之外但情理之中的视角
[[反直觉]]笔记
记录反直觉的信息可以帮助我们打破思维惯性,从另一个视角来看待惯常的事物,得到完全不同的启发。
如何捕捉反直觉的信息
主动逆向思考, [[少楠如何通过逆向思考设计笔记软件]]
用好奇心挖掘,[[项飙回答现代人生活处境艰辛]] 现代人不是 经济上的贫穷 ,而是 意义上的贫困 。
#idea 之前记笔记时,考虑过能重新想到的东西不需要记录,去记想不到的点。
反自己的常识
反大家的常识
不追求形式,慎用模板
目的决定形式
自用的笔记可以按自己喜欢的方式组织,公开的笔记站在读者的角度整理。
而如果缺少了这个目的,就会很容易在读书的时候把「写读书笔记」这种形式当做一个目的。在记录时,你就总会去想知道别人是如何做笔记的,有没有更好的方法和模板,然后陷入到对形式选择的无尽比较和纠结之中。
慎用他人模板
用自己的话来写
需要经历的过程:复制、转换、混合
如何在记录时把复制的东西变成自己的话语
用自己的案例替换
证伪
精炼知识点
使用思维导图做读书笔记缺点在于复述书本的脉络,记录作者的思想,没有和自己的只是进行结合。
通过精炼知识点,有选择记录和自己中长期目标相关的知识。
质量胜过数量
如何才能持续不断
为权利而斗争
法律人物:
马丁路德金
甘地
林肯
沈家本
故居 北京宣武门外
历代刑法考
刑法是威吓的工具
民不畏死,奈何以死惧之
极端残酷性实现罪行平衡
网络暴力
理念上的乌托邦是有意义的,但是现实中的乌托邦是不可能的。我们画不出那一个完美的圆,我们无法追求到绝对的美,但是你不能推导出,这个世界没有美,这个世界一切都没有意义,那人的存在是没有意义的,人类追求美的是没有意义的。
逐字稿,不紧张
湖南话 昨天、今天和明天
[[Plato]] 学习是一种回忆
泛道德倾向:
道德是自律,不是他律
道德完美主义
积极道德主义
是以道德作为惩罚正当化的一种依据,只要一种行为违背了道德,那我们就要千方百计地对他进行惩罚。
对违反道德的行为,进行惩罚
中国传统
消极道德主义
是把道德作为一种出罪的依据,作为一种正当化的依据。
如果在道德上是值得谴责的,那它不一定是犯罪,
但如果一种行为在道德生活是被鼓励的一种行为,把它就不应该受到惩罚。
法律强调程序正义
人们往往有朴素的正义之心、道德之心,但这种正义之心、道德之心又是有高度压迫性的。
罪行法定
因为司法是一定会存在错误的一种过程。司法的错误如何被人所接受,就是它是强调程序的。
网络进行道德审判
民众很多时候是希望撇开程序,去寻求他心目中的一些正义,而这种正义会导致一种非正义。
往往是善良的愿望把人们带入地狱。
[[侠客行]]
大宪章:公权和私权分开
法律高度技术化
人承认自己是有限的
人要接受自己的有限性,人承认自己是有限的,于是承认你的逻辑是有限的,承认你的理性是有限的,承认你的阅读是有限的,承认你整个人就是在偏见之中,你这一生就是在走出偏见。
古人说的行千里路,读万卷书。因为你行了千里路,就一定会从地方性偏见走出来,了解了各地各异的风俗人情,就不会觉得只有自己老家或者自己所处的地方就是最好的。
读万卷书就会走出时代偏见,因为你在读书的过程中你会跟古人,跟过去的时代,跟其他的时代进行交流,那就可能走出时代性的偏见。
一生是走出偏见
人最大的痛苦是 :-> 无法跨越知道和做到的鸿沟
你自己所教的,你做不到。你是在骗别人,你也在自我欺骗。
我思故我在:幻想
我始终告诫我自己,人能真正影响的人其实很少很少,很多人所谓的被你影响只是片刻的感动,最后还是投入到自己以前的生活。人片刻地感动,不可能持久地感动。
^你为自己想到的所感动^
我不能够弃演
人被你片刻地感动
许:但现在片刻的感动已经成为这个时代重要的一种方式。
罗:这很多时候是一种自我欺骗,你在欺骗自己,你也在欺骗别人,你也让别人陷入了一种自我欺骗。
技术主义背后的价值
做城邦中的[[牛虻]]
知识分子的一个重要的特点,可能还是像苏格拉底所说的,做城邦中的牛氓。
作为我们法律人,我们是双向牛氓。
一方面,我们是城邦的牛氓,我们要对权力进行警惕;
一方面,我们是民众身上的牛氓,我们要提醒他们,激情是有界限的,激情也是要在法治的界限之中。
民众对公平和正义的期待在视频中找到回响
[[Socrates]]的狂喜是真诚对待[[德尔斐神谕]]
[[认识你自己]]
凡事勿过度
妄立誓则祸近
我始终相信我们不可能追求到绝对善,但是我们也不能因为绝对善追求不到而退向相对主义。
大部分人想的不是金箍棒,也是定海神针。大部分人想的是怎么混进蟠桃会吃个桃子。
[[DSSM]]
user
离线建图 + [[Approximate Nearest Neighbor Search]]
[[@双塔模型最后一层为什么都进行L2 Norm? ;/]]
双塔训练方法 #card #depth-1
Pointwise:独立看待每个正样本、负样本,做简单的 二元分类 #card
[[Pairwise 训练]] 每次取一个正样本、一个负样本
[[Listwise 训练]] 每次取一个正样本、多个负样本
Ref
衡量^两个随机变量^各个维度偏离其均值的程度
协方差值含义
正值说明两个变量正相关
负值说明两个变量负相关
零值说明两个变量相互独立
方差是协方差的一种特殊情况
两个随机变量都是多维的
协方差矩阵:
ij 是第 i 个与第 j 个随机变量的协方差
如果变量是 d 维,那么协方差 $$\sum = d * d$$ 维
[[Ref]]
从小到大枚举区间的长度
确定 i,j,枚举中间的点,由于先枚举的长度,i和j之间更小的区间都已经被计算过。
可解释模型
特征重要性
Permutation Importance
[[@A Unified Approach to Interpreting Model Predictions]] 通过 SHAP 计算每一个样本中的特征影响力
XGBoost 特征重要性指标 get_score
方法
+ 特征作为划分属性时 loss 平均的降低量
+ 特征作为划分属性时对样本的覆盖度
单特征分析
Partial Dependence Plots 部分依赖图,通过改变部分变量的值而固定其余变量的方式研究部分变量与预测目标的关系。
开源工具包 pdpbox,同时改变多个样本的部分变量为相同值,然后求预测结果的平均值。
多特征分析
pdpbox 工具
树模型可视化
xgb.plot_tree
画出树的分裂过程观察项
树的路径以及对应叶子节点权值是否符合业务常识
badcase 以及树结构有没有特点
不同特征在树中分布情况
那些特征经常是父子节点关系?那些特征经常出现同一个路径上?
Embedding 可视化
基于反向传播可视化 CNN 网络
CAM
Grad-CAM
推荐系统
[[@打造工业级推荐系统(十):如何构建可解释的推荐系统]]
给定 item embedding 按相似度召回相似物品,观察 item 相关性
不同召回策略的结果做对比,观察相关性、新颖性、多样性。
[[第一性原理]] 生产和经营中遇到的一切障碍或者说规范,都必须刨根问底,找到终极原因,一直到最基本的数学或物理规则才能停下来,考察合理性。
PCH Pearl’s Causal Hierarchy
因果关系者掌握三种不同层级的认知能力:观察能力(seeing)、行动能力(doing)和想象能力(imagining)。
第一层对应观察到的世界,第二层对应的是一个可被观察的美好新世界,第三层对应无法被观察到的世界。
第一层级是观察能力,具体而言是指发现环境中的规律的能力。在认知革命发生之前,这种能力为许多动物和早期人类所共有。
第二层级是行动能力,涉及预测对环境进行刻意改变后的结果,并根据预测结果选择行为方案以催生出自己期待的结果。
干预比关联更高级,因为它不仅涉及被动观察,还涉及主动改变现状。
干预:参考过去的数据,不能解决当前的行为。比如之前的涨价是由于其他原因导致的。AB实验
第三层想象能力
[[因果推断方法]]
从结果估计原因 $$P(Y|do(X))$$
因果推断 ( Causal Inference ) 作为新兴的人工智能技术方向,旨在突破传统数据分析和机器学习方法的瓶颈,建模大规模数据集中的因果关系,为干预手段的设计提供指导,为构建下一代面向用户增长的全域分发系统提供理论基石。
正确区分因果关系和相关关系的方法论
核心课题
从众多观测到/未观测到的变量中找出致因 ( causes )
预估某个行为/因素的影响力/效益 ( causal effect )
核心是寻找反事实 ( counterfactual ) 镜像
随机对照实验的局限性
[[因果关系阶梯]]:关联、干预、反事实
因果建模方式
有随机控制实验 RCT Randomized Controlled Trial
根据控制变量去随机分组
耗时,非道德
观测研究 Observational Study
每个样本的 treatment 不是随机的
[[Potential Outcome Framework]] Rubin Causal Model
[[Uplift Model 评估]]
[[Uplift Curve]]
[[S-Learner]] one-model 的差分响应模型
[[T-Learner]] two-model 差分响应模型
[[X-Learner]] 基于 T-Learner的反事实推断模型
[[R-Learner]] 通过 Robinson’s transfomation 定义一个损失函数,然后通过最小化损失函数的方法达到对增量进行建模的目的。
TODO 统计之都 因果推断 系列
[[Using Causal Inference to Improve the Uber User Experience]]
Theoretical Impediments to Machine Learning With Seven Sparks from the Causal Revolution
[[因果推断在阿里文娱用户增长中的应用]]
主题阅读
收集资料
列出一个 list ,标注阅读进度。挑选有价值的论文阅读。
5-20 初步了解
50-100 很好理解前沿工作
如何阅读论文
多遍阅读策略
第一遍 :<-> 标题,摘要,图片
第二遍 :<-> 简介、结论、图片相关材料
第三遍 :<-> 进入论文主体部分,但是可以跳过数学,明白每个参数的含义。
第四遍 :<-> 阅读整篇文章,跳过没意义的部分(内容过时,没有火起来过)。
阅读时思考的问题
读论文的延续性
In your first pass, start with reading the following sections within the paper: title, abstract and figures.
The second pass entails you reading the following sections: introduction, conclusion, another pass through figures and scan through the rest of the content.
The third pass of the paper involves reading the whole sections within the paper but skipping any complicated maths or technique formulations that might be alien to you. During this pass, you can also skip any terms and terminologies that you do not understand or aren’t familiar.
Those conducting in-depth research into a domain can take a few more passes. These additional passes will mainly be focused on an understanding of the maths, techniques and unknown terminologies presented within the paper.
树模型
改造传统树模型的分裂规则,每次分裂最大化干预组与对照组之间的差异 ,使得因果效应近似的样本尽可能落在同一个节点,从而可以实现直接预测样本的干预效应。
Casual Tree
Casual Forest
因果元学习 [[Meta-Learner]]
Double/debiased Machine Learning Method
[[倾向性模型]] Propensity Model:预测干预变量
[[响应模型]]:预测目标变量,构造时不适用干预变量
[[Doubly Robust]] 同时使用干预变量与控制变量
[[概率密度函数]]
损失函数 MSE $${L(y, F(x))=\frac{1}{2}(y_i - f(x_i))^2}$$
通过调整 $${F(x_1), F(x_2), …, F(x_n)}$$ 最小化 $${J=\sum_i L(y_i, F(x_i))}$$
将视为 $${F(x_1), F(x_2), …, F(x_n)}$$ 数字,$${F(x_i)}$$ 当成是参数,并求导
残差等于负梯度 $${y_i-F(x_i)=-\frac{\partial J}{\partial F(x_i)}}$$
湖滨案
三个案件交织在一起
棋局对应后面的密码
从 [[Conan Chou]] 的“透明盒子计划”网站设计时的一些考虑 中获得方法:
html
格式。html
格式文件拷贝到 notes
目录下。最后,我的仓库是 ryenxx/ryenxx.github.io。
进阶
Google Search Console: 让你能被充满好奇心的人发现
Google Analytics: 统计有多少人浏览你的网站
期望
似然函数
极大似然估计
对 p 求对数似然,约束项是 ,再通过 [[Lagrange Multiplier]] 求解
对 L 求关于 的导数,并令其为 0 。得到
重复进行 N 次多项分布实验,得到分布
.
制定目标
短期 1~2、中期 3~5、长期 5+
制定 [[OKR]]
年度、季度
Objective 1:提高工程能力和技术影响力
KR1:完成 6 篇自己满意的高质量技术博客
KR2:博客的月平均访问量需要达到 100,000
KR3:深入研究 3 种分布式协调服务的实现原理
针对 OKR:拆分任务以及预估时间 [[Trello]]
每周有多少空闲时间可以使用
[[Scrum]]
在平时一旦想到对实现目标有帮助的任务就可以加入 TBD 待办事项;
一般选择两周作为一个 Sprint,Sprint 就是一个迭代周期,我们需要一次划分两周 54h 的任务;
周六或者周日是一个比较合理的启动时间;
每个 Sprint 启动时,按照优先级对 TBD 中的任务进行排序;
按照优先级依次对任务进行拆分并预估完成的时间;
将 54h 的任务加入 TODO 列表并启动这次 Sprint;
执行 Sprint 的过程中发现任务预估时间与期望值过大应该及时调整计划,保证高优任务;
执行任务时每天都应该更新 TODO 和 Doing 列表中的任务;
包括 TBD、TODO、Doing、Done 4 个泳道
完成多个 Sprint 进行迭代
执行任务 番茄工作法
#idea 看到这个又想起自己之前的一些东西,想做的事情一直有,但是很多时候你都没有坚持下来。Notion 里面某一周的周回顾还写到用 1 年的时间打造一个可靠的外部系统。先写下一套方案,然后去迭代。
论文基本结构
1.title
2.abstract
3.introduction
4.method
5.experiments
6.conclusion
三遍法
第一遍:标题(1)、摘要(2)、结论(6)。可以看一看方法和实验部分重要的图和表。这样可以花费十几分钟时间了解到论文是否适合你的研究方向。
第二遍:确定论文值得读之后,可以快速的把整个论文过一遍,不需要知道所有的细节,需要了解重要的图和表,知道每一个部分在干什么,圈出相关文献。觉得文章太难,可以读引用的文献。
第三遍:提出什么问题,用什么方法来解决这个问题。实验是怎么做的。合上文章,回忆每一个部分在讲什么。
如何找论文
明确阅读论文的目标(学习、寻找方向)
按主题整理论文(相同主题放在同一个笔记中,标记论文引用数、重点图片)
粘贴论文链接,通过脚本自动化下载论文以及提取元信息
文献管理与下载 python 脚本 https://github.com/Psycoy/EasyLiterature [[2023/10/30]]
学历和能力存在相关性,没有必然的因果性。学历是你一段时间统计的结果,大部分人很难逃过统计的命运(很难改变自己),所以看起来学历和能力存在因果性。
面对同一个问题,弗洛依德和阿德勒心理学分析的结果迥异,到底哪个分析结果更接近事物的本质?
自卑情节只是一种借口
青年:不不,这是一种正儿八经的因果关系!如果学历低,就会失去很多求职或发展的机会。不被社会看好也就无法成功。这不是什么借口,而是一种严峻的事实。
哲人:不对。
青年:为什么?哪里不对?
哲人:关于你所说的因果关系,阿德勒用“^外部因果律^”一词来进行说明。
意思就是:将原本没有任何因果关系的事情解释成似乎有重大因果关系一样。
例如,前几天就有人说:“自己之所以始终无法结婚,就是因为幼时父母离婚的缘故。”
从弗洛伊德的[[原因论]]来看,父母离婚对其造成了极大的精神创伤,与自己的婚姻观有着很大的因果关系。
但是,阿德勒从[[目的论]]的角度出发把这种论调称为“外部因果律”。
青年:但是,现实问题是拥有高学历的人更容易在社会上获得成功啊!先生您应该也有这种社会常识吧。
哲人:问题在于你如何去面对这种社会现实。如果抱着“我因为学历低所以无法成功”之类的想法,^那就不是“不能成功”而是“不想成功”了^。
青年:不想成功?这是什么道理啊?
哲人:简单地说就是害怕向前迈进或者是不想真正地努力。不愿意为了改变自我而牺牲目前所享受的乐趣——比如玩乐或休闲时间。也就是拿不出改变生活方式的“勇气”,即使有些不满或者不自由,也还是更愿意维持现状。
最小学习闭环系列:卡片笔记的格式与模板 | 学习骇客 (qq.com)
笔记格式
前三级文献信息:书名、章名、节名
四级写问题
五级写答案
五级写补充
六级原文
微信读书笔记完美契合上面的格式
纸质书不方便引用,可以在问题中标出原文的页码
例子
[[@用“卡片笔记写作法”读《卡片笔记写作法》]]
左乘,对矩阵A的每一行数值进行不同比例缩放
右乘,对矩阵 A 的每一列数值进行不同比例缩放
乘列向量:对列向量每个元素以不同比例分别缩放
乘行向量:对行向量每个元素以不同比例分别缩放
左右都乘:[[协方差]]矩阵
对角矩阵元素特点 #card
对角矩阵形状特点 #card
记录内容 #card
当日的情绪如何(分为 low、mid、good)
当日的事情,从早到晚进行 log 一些概要,同时还有一些简单的感触
记录情绪波动及原因:记录一天中自己的情绪发生了哪些变化,并尝试分析原因——比如,和什么事情有关、周围的环境如何、情绪是如何被触发的、引发了什么后果等
当日创造性的时间
例子
5 点多起床,翻看《神经的逻辑》 1 小时,做了两大段笔记,关于意识和潜意识系统,以及记忆的特点。
上午开始处理客服问题,但是拖拖拉拉持续了一整天。
午饭后本想开始设计 flomo 安卓版本的语音输入,但意识到这周不进入开发,优先级应降低,所以想了想框架就放下;然后设计优先级更高的编辑器——没有着急上手做,而是先思考了不同的可能,打了个草稿才开始。
设计完编辑器,在户外写了图书新内容的草稿,推敲了逻辑结构,查找了不少资料,但是刻意没有进入正式写作流程,以免当日过于疲劳。
处理客服问题,回家吃饭、休息。
晚上又看了 1 小时资料,后半截感觉有点力竭,所以选择暂停输入,开始听歌休息。
记录的要点
诚实面对内心,如实记录想法
为什么诚实 #card
记得有一天我情绪很低落,起因是有个营销方案我准备了许久,原本感觉胸有成竹,但在团队讨论时却爆出来一个很关键的缺陷,不得不重新来过。
表面上看,这是一个思考不周的问题,但为何会让我情绪低落?通过自我追问和诚实地回答,我发现了更深层的原因:因为我觉得,我付出了那么多时间和精力,你们非但不鼓励,还一讨论就指出这么大的漏洞,让我下不来台,我的面子往哪里放?
挖掘到这里,才触及问题的本源:自己情绪低落,是想要获得他人认可的预期被打破,继而产生了情绪上的反扑,想要找到别的理由去攻击他人。
如何记录 #card
第一,你可以试着把自己抽离出来,像观察最好的朋友那样观察自己。看到什么记什么,尽可能保持旁观者视角。
第二,只记录,不评判。情绪没有好坏,不要苛责自己。当你把情绪当作“问题”的时候,往往会限制自己的视野;而当你把它当作“合理的存在”,视野反而宽广很多。
不仅记录情绪,还要记录环境
使用 UnionFind uf(n);
1 | struct UnionFind { |
平稳性
存在某种周期、季节性及趋势的方差和均值不随时间变化
从统计学角度,平稳性要求对于一个时间序列的取值满足一个确定的分布
平稳性是时间序列分析的基础
如果一个时间序列是不平稳的,需要通过 差分 的方式将其转化为平稳时间序列。
严平稳 strictly stationary
时间序列中任意给定长度的两段子序列都满足相同的联合分布
弱平稳 weakly stationary
时间序列满足均值平稳性 stationary in mean 和二阶平稳性 secondary order stationary
时间序列 $$r_t$$ 满足下面两个条件,则它是弱平稳的
方差平稳性 stationary in variance
关于 对所有时刻 t,有 ,其中是常数。
的例子
平稳的随机过程 stationary stochastic process
非平稳性
[[ADF 检验]] :<- 判断时间序列是否满足平稳性要求
特殊时间序列
时间序列 , 满足均值 0 方差为 ([[正态分布]]),且对于任意的 k>0,[[自相关]]系数均为 0,则称该时间序列为一个离散的白噪声。
时间序列 ,满足 , 是一个均值 0 方差为 的白噪声,则序列 为一个随机游走。
思想
基于随机游走,对 Xt 回归,如果发现 p=1,说明该序列满足随机游走,就是非平稳的。
,利用弱平稳的性质
随机游走,非平稳
如果 p=1,则 Xt有一个单位根
from statsmodels.tsa.stattools import adfuller as ADF
ADF 函数计算结果
第一个参数 T检验,假设检验值。
第二个参数,P-value,假设检验结果。
第五个参数,不同程度拒绝原假设的统计值
如何判断是否平稳
ADF 假设检验值同时小于 1% 5% 10% 不同程度拒绝原假设的统计值,说明非常好地拒绝该假设
原假设存在单位根
统计值小于 1%,认为拒绝原假设,该序列是平稳的。
[[P-value]] 是否非常接近 0
Ref
差分是一种和前缀和相对的策略,可以当做是 求和 的逆运算
求差分数据的公式 #card
性质
ai 是 bi 的前缀和
计算前缀和#card
区间序列 [l,r] 加上一个数 k #card
例题
和树状数组区别 #card
树状数组:单点更新,区间查询
差分数组:区间更新,单点查询
广告竞价划分 #card
比较核心的目标是及时且准确地获取各种事件 (click,convert) 的 ground truth;“及时” 指的是 发生的事件需要尽可能快地喂给模型 ,“准确” 指的是 这些事件需要被正确打上 label。
数据流与转化归因 (conversion attribution)
归因可以理解为 label 的获取与拼接, 当前最常见的是 last touch 方式的归因,也有一些其他的归因方式如 multi-touch 归因等, 通常涉及到广告主的上报和实际的拼接两部分
[[CTR Bias]]
[[exposure bias]] 只有曝光的样本才能进入训练集,[[负样本]]选择问题
[[position bias]]
全渠道数据 [[全场景建模]]
一种是广告主将媒体 A 的数据归因后直接回传给媒体 B,
另一种则是媒体之间相互合作,如笔者做过的联邦学习在广告的落地应用就是属于这部分。
[[特征工程]] dnn 模型的特征选择
常用挖掘套路 #card
属性特征:用户 / 广告本身的一些属性,如用户的年龄、性别;广告的类别、样式等
统计特征:用户在特定时间范围 (如过去 7d、 3d、 12h、1h 等) 对当前广告的特定的维度 (如特定类别、特定位置、特定广告主等) 的广告进行了特定操作 (如点击、浏览等) 的次数;
序列特征:即用户在一段时间内的行为序列,如最近 30 个点击过的广告 / 商品;典型的应用可参考阿里的 DIN
[[特征筛选]]
最简单的做法是删除指定特征,然后重新训练模型并评估,但是这种做法在训练时长较长时开销是比较大的
在训练过程中便能得到每个特征的重要性
为每个 feature 增加一个 attention unit,如 DIN [[activation unit]] #card
embedding weight:#card
回到最开始的想法,即删除指定特征,然后重新训练模型并评估,能否在训练过程中便达到这一目的呢?#card
模型结构可解释性
VC Dimension:#card
attention:#card
attention 用最直白的话来说就是动态加权,而这也很符合直觉,如每个特征的重要性不一样,应该对重要性高的给予更高的权重;在 NN 模型中,attention 常用在两个地方: embedding 和 hidden unit;
embedding 的 attention 策略可参考这篇文章 SENet 双塔模型:在推荐领域召回粗排的应用及其它;
而针对 hidden unit 的 attention 则可参考这篇 paper,Learning Hidden Unit Contributions for Unsupervised Acoustic Model Adaptation [[LHUC]]
multitask: multitask 结构有两个常见的用处,#card
第一种认为多个 task 之间有关联,联合训练能增加数据量,同时提升效果;
第二种则是对于预估值的准确性有要求的场景,如果广告的 ctr、cvr 的预估,往往数据流中混合了多个场景的数据,且每个场景对应的数据的后验不同的,为了保值预估值的准确性,需要将后验值不同的数据分到不同的 head 中
模型训练
初始化对效果有影响,而这个问题可以从几个角度去理解,
从最优化的角度理解,#card
从 bp 的角度理解,#card
优化器 #card
训练过程本质上就是个优化问题,通过 bp 过程不断修正初始化的 parameter,从而达到损失函数最小的目标,更详细的描述可以参考 Parameter optimization in neural networks;中间涉及到了各种超参数的选择:如 learning rate、batch size、optimizer 等;
其中 optimizer 也有非常多的选择,其中 optimizer 的选择往往又是一个值得考量的地方,关于各类 optimizer 的区别可以参考这篇文章,一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
损失函数
损失函数基本都是通过 MLE 或 MAP 推导出来的,其思想都是假设训练样本都是服从某些分布生成的,而训练的目标是让这些样本的联合概率最大;#card
如 mse 的 assumption 是模型预估值与 ground truth 的误差服从正态分布,
cross entropy 的 assumption 是预估值服从伯努利分布;
而这两个其实也能被统一到 GLM 这个框架下。
目前在业界更常见的做法是把问题转为分类问题,对应的 loss 即为 cross entropy,而其实一些回归的 loss 也能通过 weighted logistics regression 转化为分类的问题,#card
基于最原始 cross entropy 衍生出来的 loss 主要有两种形式#card
reweight, 即对样本进行各种加权, 包括但不限于根据物理含义直接加权 (如观看时长)、通过 importance sampling 等方式推导出来的 loss,其最终形式也是 reweight 的模式
auxiliary/regularization, 即在原始的 task 上增加一些辅助任务或正则项,如 center loss 等
[[保序回归]]
上面在 loss 中对样本进行 reweight 的方式,会影响正负样本的分布,导致统计意义上预估值的就是有偏的,应对的策略#card
[[冷启动]]
利用 meta-network 为冷启动的 item 生成一个 id embedding
item 的 meta 信息通过小网络生成 embedding
增加一些 [[auxiliary task]] 来训练小网络
MAML 方法训练模型,让 embedding 更快收敛
[[系统一]]
[[系统二]]
反复做一件事,机会成本太高。
每星期阅读三篇
记录什么
文献的基本信息(期刊、年限、作者);
重要结论
重点公式
重点图片
个人收获
存在的问题及如何解决
使用 [[iTerm]] 作为终端
[[Oh My Zsh]] zsh 配制文件
[[autojump]]
add [ -f /opt/homebrew/etc/profile.d/autojump.sh ] && . /opt/homebrew/etc/profile.d/autojump.sh
to .zshrc
add autojump
to .zshrc
plugins=(...)
[[git-open]]
git clone https://github.com/paulirish/git-open.git $ZSH_CUSTOM/plugins/git-open
.zshrc
change plugins=(...)
to plugins=(... git-open)
zsh-syntax-highlighting 用绿色高亮输入正确的命令
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
zsh-autosuggestions 命令补全建议
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
[[Homebrew]] 管理应用下载
mathpix-snipping-tool
[[Mathpix]] 数学公式截图转 latex 格式
ffmpeg
视频处理
[[Dropbox]]
[[Microsoft Edge]]
[[坚果云]]
[[截图 Jietu]]
[[Squirrel]]
用户配置文件 ~/Library/Rime
installation.yaml
[[Logi]] Options
MX Master 2s 鼠标配置
滚动模式,逐段模式
[[Zotero]]
6 还没有 Apple Silicon 版本,预计 7 会出。
ZotFile - Advanced PDF management for Zotero
Renaming Format 修改格式为
{%t_}{%y_}{%a}
{%t_}{%y_}{%a}
l0o0/jasminum: A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 (github.com)
[[PDF expert]]
[[DEVONthink]]
[[VS Code]]
[[Sublime Text]]
[[Sublime Merge]]
阅读时整理、记录作者的思想和结论。做好标签和分类
维护核心文献列表
论文笔记框架
1 | # {Title}(文章标题) |
例子
#card 第一维度 记忆与扩展
记忆与扩展是推荐系统的两大永恒主题。推荐模型要能记住高频、常见模式以应对“红海”,也能够扩展发现低频、小众模式以开拓“蓝海”。
这个观点在3.1节讲Embedding的前世今生时已经提到过,4.2.3节将会讲到,经典的Wide & Deep模型就是记忆与扩展在模型设计中的体现。
#card 第二维:Embedding
Embedding技术将推荐算法由根据概念的精确匹配(生搬硬套)升级为基于向量的模糊查找(举一反三),极大增强了模型的扩展能力,是推荐系统中所有深度学习模型的基础。
将特征、函数转化为待优化变量
CTR 从精确匹配到模糊搜索
#card 第三维 高维、稀疏的类别特征
{{embed 稀疏的类别/ID类特征,稀疏地存储、传输、运算,提升运算效率
}}
数值特征离散化分桶
为什么不用“特征是用户过去1小时观看的视频数,数值是3”这个方案,而是采用“特征是用户过去1小时观看小于10个视频,数值是1”的方案?#card
增加模型鲁棒性
减少数据稀疏
将连续数值特征变换为离散特征,相当于将特征变换到更高维度的空间,更有利于模型对特征的进行区分(尤其对于线性模型)。
特征和目标不是线性关系
LR 预测时只需要累加不需要做乘法
模型存储小以及线上预测速度快
[[Parameter Server]] 解决存储问题和预测问题
#card 第四维 特征交叉
高阶交叉 DNN
混合交叉 [[Wide&Deep]] 记忆和扩展
#card 第五维 Field & Pooling 特征集合/用户行为序列建模
解决特征直接 concat 问题后维度过高问题,同一个 Filed 的 Feature Embedding Pooling 成 Field Embedding
Pooling 方法
mean max
[[NFM]] Bi-interaction
加权平均 Attention
时序特征 RNN
推荐系统的核心任务是猜测用户喜欢什么,而用户在App内部的各种行为(比如浏览、点击、点赞、评论、购买、观看、划过)组成的序列,隐藏着用户最真实的兴趣,是尚待我们挖掘的宝藏。
因此,基于用户行为序列的兴趣建模是推荐模型的重中之重。用户行为序列数据量大(短期行为几十、上百,长期行为成千上万),单个行为包含的信息有限而且随机性强,将这些行为序列压缩成一个或几个固定长度的用户兴趣向量绝非易事。
embedding 和 ont 如何对比?
基于词向量的固定表征:word2vec、fastText、glove
基于词向量的动态表征:elmo、GPT、bert。
[[DSSM]] 保证 user 和 item 在同一个向量空间,之后可以进行计算。
基于 embedding 的召回
[[i2i 召回]] 算法
tag2vec:取文章的部分标签向量代表文章的向量(对应多个 embedding 如何处理)
item2item 计算:faiss 计算每篇文章的相似文章
其他召回和这个套路类似,就是训练 embedding 向量的时候,略有差异。tag2vec 是训练中文词语的向量,而 item2vec 是训练文章 ID(aid)所对应的向量,media2vec 训练的是文章的作者 ID(mid)所对应的向量,loc2vec 是训练地域名称所对应的向量,title2vec 是用 LSTM 训练得到的文章标题向量,doc2vec 是用 bert 计算出的文章正文(或者摘要)的向量。entity2vec 是利用我们自己构建的知识图谱通过 transE 得到的
u2i 召回
分群召回
+ 方法
+ 簇召回,用户 tag 用聚类算法聚成若干个簇
其他
[[Youtube DNN]] 是开山之作
所有特征(无论离线连续,单值多值)全部转化为 embedding,
把各种 embedding 拼接在一起构成一个向量送入 dnn。
Airbnb 在稀疏样本构造上有所创新。
分群 embedding
用户和 item 混合训练
特征 embedding
embedding 运算
embedding 痛点
增量更新的语义不变性
很难同时包含多个特征
长尾数据难以训练
embedding 总结 #card
线程和进程
[[线程]] 一段线性执行的程序
[[进程]] 操作系统提供给每个应用程序的一个隔离环境(CPU 和内存)
分配 CPU 的调度机制,尽量均匀分配 CPU。
分配内存的虚拟内存机制
多进程为了多个应用程序提供隔离环境
在一个进程里使用多线程使用的是同一套上下文,多进程使用的是不同的上下文和内存空间
[[协程]] 线性逻辑
用户侧特征(profile、bias)
item侧特征(属性、bias)
context侧特征
笛卡尔积特征(id类、可泛化类特征)
序列特征
[[个性化召回]] 基于用户行为
非个性化的召回,解决新用户冷启
[[DSSM]] 2013, 使用神经网络分别将表示query和doc表示成向量,向量的距离则可以用来度量二者的匹配程度。
[[面向成交效率(个性化)的向量召回优化]] 特征、数据、模型三个角度考虑
[[@Embedding-based Product Retrieval in Taobao Search]] 通过在语义特征基础上增加个性化特征实现语义和成交效率的兼顾
[[@Mobius: Towards the next generation of query-ad matching in Baidu’s sponsored search]] 召回阶段考虑相关又考虑点击率目标
[[重定向召回]]
[[GCN 召回]]
同构图
异构图
[[双塔模型召回]]
使用树模型检索
细节问题
粗排阶段的目标是从约上万级别的候选中筛选出合规、相关且成交效率高的topN商品,这里N通常是上千量级。
baseline 模
静态分排序
LR
[[双塔粗排模型]]
优化方法
COLD 实现深度特征交叉 [[三塔粗排模型]]
通过模型蒸馏技术逼近粗排和精排的排序效果、
通过多任务联合综合考虑多目标的优化等
用 bias 去换 variance
[[@推荐系统中,粗排和精排的区别是什么,粗排又应该怎样评估模型好坏?]]
[[粗排模型评估方法]] auc 或 hitrate
[[粗排分数融合]] 线性融合or离散化分档
[[协同过滤]]:协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。
[[矩阵分解]]:使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征。
[[Logistic Regression]] 在使用 user 和 item 是否交互以及交互程度信息的基础上,使用 context 信息、user 和 item 相关信息,并将推荐看成分类问题
稀疏性
[[Lasso Regression]] L1
[[Ridge Regression]] L2
[[FM]] 自动建模特征间的二阶交叉
[[Tree Model]]
#card [[GBDT+LR]] 利用 GBDT 产生高维非线性特征
树模型很难学习高度稀疏数据的特征组合
树的深度决定是几阶交叉
GBDT 的特征转化方式实际上失去了大量特征的数值信息,不一定就会比 FFM 效果好。
[[MLR]] 通过多个局部 model 解决长尾问题
典型的深度CTR模型可以分成以下四个部分:输入、特征嵌入(Embedding)、特征交互(有时候也称为特征提取)和输出。
input->embedding
embedding:concatenate, product, weight sum, bi-interaction
embeding->output
通过 embedding 来对输入数据进行降维
[[POLY2]] 暴力组合交叉特征
[[FNN]] 解决 DNN 中输入的特征过多,利用 FM 预训练的隐向量做 embedding,然后接 MLP。没有端到端训练,降低深度学习模型复杂度和训练不稳定性。
[[Wide&Deep]] 模型两种能力,人工特征工程,联合训练
[[PNN]] 将特征交叉的结果输入到 DNN 中,在不同特征域之间进行特征交叉。左边 emb 层的线性部分,右边 emb 层的交叉部分 向量内积和外积。交叉方式多样化,但是对所有的特征进行无差别交叉。
[[NFM]] Deep 部分进行修改,引入特征交叉池化层。二阶交叉不去sum pooling,而是后接一个 MLP
[[Deep Crossing]] embedding + MLP 结构,摆脱人工特征工程,特征深度交叉。
[[ONN]]
[[Deep&Cross]] 二阶交叉到高阶交叉之间的特征交叉,bit-wise 特征交叉。
[[DeepFM]] FM+Embedding+MLP
[[xDeepFM]] vector-wise 交叉
[[Attention]] 机制作用于深度神经网络,将原来的 pooling 改成加权求和或加权平均
[[AFM]] 二阶交叉部分引入 [[Attention]] ,后来没有接 MLP
DICE 激活函数
GAUC
Adaptive 正则化方法
[[DIEN]] 关注序列信息,通过 AUGRU 机制模拟用户兴趣进化的过程。
[[DeepMCP]]
[[AutoInt]] 特征工程自动化
[[@MMOE或PLE 在推荐系统点击&成交联合训练的场景下为什么跟 ShareBottom 效果差不多?]]
[[为什么在推荐系统中引入注意力机制能够有效果上的提升?]]
[[搜推算法的序列建模需要做self-attention吗?]]
[[序列建模可以建模联合概率吗]]
[[多任务和多目标]]
[[多目标优化]]
特征选择和ID退场机制,剔除不必要的特征集合
[[交叉维度看精排模型]]
[[LTR]] 解决item排序问题
[[生成式重排]]
[[强化学习重排]]
[[重排动机:特殊需求重排]]
多样性
[[MMR]]
[[DPP]]
[[流量调控]]
[[重排建模方式]]
LTR
[[为什么需要做校准]]
针对异质内容排序,如在商品列表中插入广告、视频/图文内容、主题聚合等
[[Group AUC]]
topX 点击率
[[全链路优化]]
[[@全链路联动-面向最终目标的全链路一致性建模]]
[[CTR Bias]]
[[position bias]]
[[冷启动]]
[[新内容你是如何处理的?]]
[[用户冷启动]]
多阶段系统
[[你是如何理解当前流行的召回->粗排->精排的推荐架构?]]
[[排序模型优化]] 从数据(label)、特征和模型(网络结构)三个方面入手
查询建议 SUG
[[单列和双列]]
[[广告系统的产品视角]] 广告主视角
[[效果广告]]
[[深度转化广告]]
[[@CTR和推荐算法有什么本质区别?]]
推荐需要对负样本进行采样,搜索排序使用真实样本(有相关性限制在)
人的一生,要死去三次:
第一次,当你的心跳停止,呼吸消逝,你在生物学上被宣告了死亡;
第二次,当你下葬,人们穿着黑衣出席你的葬礼,他们宣告,你在这个社会上不复存在,你悄然离去;
第三次,是这个世界上最后一个记得你的人,把你忘记,于是,你就真正的死去,整个宇宙都不再和你有关。
[[张潇雨]]在人生总有一刻,我们会开始思考死亡 - 知乎总结到面对死亡的两种方法:
一种是将自己与一些更宏大的东西联系起来:**一个数学定理、一本文学著作、一件艺术作品或一种恒久的信仰。**马尔克斯与康德靠《百年孤独》与《纯粹理性批判》遗世独立,米开朗基罗把《创世纪》和《最后的审判》印刻在西斯廷大教堂里,供千万后朝拜——他们肉身虽灭,但精神不朽——反正建筑是永远戳在那儿的。还有一种就是,生活在当下的每个瞬间里,不烦扰过去、不担忧将来。
Joe Armstrong(R.I.P.) 去世前几个月一直在将博客文章迁移到 [[TiddlyWiki]],最后通过 Github Pages 部署发布。Joe 在 2018-12-26 Fun with the TiddlyWiki 提到 「I hope the blog will be readable in 100+ years time.」
类似的 Jeremy Ruston (@Jermolene) 在 Announcing the release of TiddlyWiki v5.1.23 写到「To corrupt an old adage, TiddlyWiki will die when the last person speaks its name. Right now there’s a chorus of voices lifting the project, and let’s hope that will long continue.」
对我们,可能很难实现张潇雨说的那种将自己和更宏大的东西联系在一起,但可以轻松借助互联网让文字或想法一直被检索发现。何尝不是另一种面对死亡的方法?
部分人将 Blog 音译成「不老阁」,它是我们这一代人的数字坟墓。
[[Ref]]
[[Spaced Repetition]]
[[Zettelkasten]]
[[Antinet Zettelkasten]]
实践参考
[[两阶段笔记]]
[[@seanmiona 卡片笔记法参考]]
[[@如何在 Roam Research 做学术研究:一个实例]]
输出
[[项飙]]所说,如何理解自己身边的事情。
Hum 方向与工具之争
找到方向和掌握工具思维,我从做 Power+ 这一年里学到的两件事
计算总体的均值和方差时,拿到的数据是对总体的采样,因此计算出的方差比总体方差小。
时间序列分解为周期项 + 趋势项 + 节假日项
分解方式
分类
加性
乘性
^S^eason
^T^rend
计算序列的[[移动平均]]
sktime 多项式回归
^R^esidual
[[Python/package]] statsmodels.tsa.seasonal
中 seasonal_decompose
季节性和周期性
季节性总是具有固定的已知频率
周期性的波动频率不是固定的
时间序列分解如何和时间序列预测结合?
gbdt 外推能力差,对于趋势性强的时间序列数据的拟合能力比较差,通过时间序列分解之后去除趋势性部分,剩下季节性+残差部分用 gbdt 进行拟合。
扩展开来趋势项可以用 lr 或 nn 拟合,剩余部分使用 gbdt 拟合
缺点
经典时间序列分解方法简单,精度低。电商的节假日无法分解
季节性分解做的比较简单,每一个周期内的值都是不变的
无法分解多个周期性嵌套的时间序列问题
时间序列分析的核心是挖掘该时间序列的自相关性
[[石川@写给你的金融时间序列分析]]
DONE [[随风@时间序列分析]] 知乎上写的很好教程:包括基础知识讲解(还是石川讲得更加详细)以及通过支付宝数据演示如何利用各种方法和模型。
DONE [[字节@漫谈时间序列预测]]
completed:: [[2023/02/27]]
[[Time Series Forecasting With Deep Learning: A Survey]] 牛津大学关于时间序列预测深度学习方法总结
[[Deep learning for time series classification: a review]] 时间序列分类
比赛相关
[[M5 Accuracy Competition]]
gbdt不适用于什么样的时间序列问题 - 知乎 (zhihu.com) #[[gbdt 时间序列]]
[[@The M5 Accuracy competition: Results, findings and conclusions]]
[[@Forecasting with trees]]
[[@Time-series Extreme Event Forecasting with Neural Networks at Uber]]
[[Time Series Transformer]]
TODO [[@From Known to Unknown: Knowledge-guided Transformer for Time-Series Sales Forecasting in Alibaba]]
TODO [[@Gated Transformer Networks for Multivariate Time Series Classification]]
TODO [[@Enhancing the Locality and Breaking the Memory Bottleneck of Transformer on Time Series Forecasting]]
TODO [[@FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting]]
[[@Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting]]
[[ConvTrans]] 【时间序列】Transformer for TimeSeries时序预测算法详解 - 知乎 (zhihu.com)
[[@A Transformer-based Framework for Multivariate Time Series Representation Learning]]
[[N-BEATS]]
[[DeepAR]] 用概率预测代替点估计,通过采用求平均方式得到最终预测
[[@Do We Really Need Deep Learning Models for Time Series Forecasting?]]
[[Recurrent Neural Networks for Multivariate Time Series with Missing Value]]
时间序列缺失值问题
时间序列的不等间隔问题
时间序列增强
判断 Missing at Random 还是 Missing not at Random
直接删除法
基于统计学的填充方法
均值填充,中值填充,常用值填充,上下填补法,前后加权均值法
忽略数据的时序信息
基于机器学习的填充方法
[[KNN]],[[RNN]],[[EM]],[[MF]]
[[E2GAN]] 时间序列插值算法框架,利用 GAN 来进行时间序列插值
很少考虑两个相邻数据间的时序信息
[[平稳性]] 是时间序列分析的基础,通过 [[ADF 检验]] 判断时间序列是否满足平稳性的要求。
[[时间序列预测/基本数学概念]] 介绍自协方差、自相关系数、偏自相关系数等概念。
[[时间序列预测/评价指标]]有 [[R2 score]]、MAE、MAPE、SMAPEWMAPE 等。
[[传统时间序列预测]]以 AR、MR、ARMA、ARIMA 等序列自回归方法为主。
[[深度学习时间序列预测]]
[[Time Series Transformer]]
[[@Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting]]
[[时间序列特征工程]] 三个方向: 时间戳衍生
, ((6302f9ee-1eb7-47ab-af57-17f933664bcb)), ((6302f9ee-52e1-48af-86b1-4e01ff3a4a64))
建模方式
历史窗口大小
预测点 gap 大小
预测窗口大小
任务分类
Forecasting step
one-step
multi-step
Inputting variables
autoregressive
covariate
Outputting
Single point
Probability
Forecasting target
univariate 单变量
multivariate
关于时间序列预测的一些总结 - 知乎 (zhihu.com)
特征工程使用滑动窗口,最小值,最大值,均值,方差
概念漂移
目标标量的统计特征随着时间的推移以不可预见的方式变化,每过一段时间序列的规律会变化。
不能用全部时间内的数据去训练
序列自相关性
如果预测结果和实际值存在滞后性,可能序列存在自相关性,可以通过差分运算消除自相关性
计算一个基准值,用基准值做为预测结果计算平均绝对误差或 r2 系数
时间序列和回归分析有什么本质区别? - 知乎 (zhihu.com)
时间序列分析的目标是:了解过去,预测未来
时间序列数据的特征是
自相关性
不可交换性(样本顺序不能交换)
时间序列利用数据之间的相关性进行预测,回归分析假设每个数据点都是独立的。
有什么好的模型可以做高精度的时间序列预测呢? - 知乎 (zhihu.com)
预测打车订单和预测风速的区别
形成机制
前者人的行为驱动,后者由自然因素驱动
人为因素驱动内在机理比较清楚
自然因素驱动内在机理难以刻画
预测人群行为相对来说更加简单
个人行为有明显的规律性(早晚)
个人行为有明显的周期性(每周)
不同人的行为近似独立(你打车和我打车没有关系)
打车订单可以看成大量的独立随机变量之和,波动性不大,呈现出明显的周期性
风速预测难点
时间粒度细
影响风速的因素多,且难以量化
风的周期通常以年为单位,对短期风速预测帮助不大
风通常分为大风年和小风年,没有趋势项。搞清楚了大小风年有利于评估全年风力资源,但对短期风速预测帮助不大。
[[ARIMA]] 描述平稳的时间序列自相关性的典型方法
当残差通过白噪声检验,表示建立一个合理的模型。
如果需要给出置信区间,需要对残差的平方进行白噪声检验。
如果存在异方差,需要通过 [[GARCH]] 进一步提取残差信息
STH 分解
时间序列分解为周期项 + 趋势项 + 节假日项
趋势项通过线性函数、对数函数和指数函数拟合
周期项通过傅里叶分解、周期核函数拟合
信号分解
将时间序列分解为高频和低频信号,对分离后的信号用模型拟合
分解方法
傅里叶分解
小波分解
经验模态分解 EMD
变分模态分解 VMD
LN 分解
自协方差
信号与其经过时间平移的信号之间的[[协方差]]
[[自相关]]系数 ACF
衡量信号其自身在不同时间点的相关度
找出重复模式或识别隐含在谐波频率中小时的基频
偏自相关系数 [[PACF]]
自相关衡量想要衡量 z(t) 和 z(t-k) 的相关关系,实际上 z(t) 还会受到 z(t-1) 到 z(t-k-1) 的影响。
PACF 单纯测量 z(t-k) 对 z(t) 的影响
偏相关
PACF 和 ACF 区别
ACF 一个期望,用整个时间序列的期望
PACF 两个期望,两个序列用各自序列的期望
离散情况下:结果乘以结果概率的总和
连续 $$E(x) = \int xf(x)dx$$
原则
将学习的内容整理进入自己的框架,放在其他单独的页面没有价值。
参考[[AI算法工程师手册]]整理到什么程度
之前遗留下来的
李宏毅强化学习笔记
[[一文看懂深度学习模型压缩和加速]] 整理到模型压缩和相关部分
[[白板机器学习]]
什么是机器学习?
Mitchell 「对于某类任务 T 和性能度量 P,一个计算机程序被认为可以从经验 E 中学习是指,通过经验 E 改进后,搭载任务 T 上由性能度量 P 衡量的性能有所提升。」
机器学习本质属于应用统计学,更多关注于如何用计算机统计估计复杂函数。
基础知识 + 模型 + 实践
任务分类
样本特征向量和标签之间存在未知函数关系
条件概率 $$p(y|x)$$ 服从某个未知分布
算法分类
监督学习
期望风险最小化
最大似然估计
无监督学习
最大似然估计
最小重构错误
强化学习
理论和定理
可能近似正确(Probably Approximately Correct,PAC)学习理论
没有免费午餐定理(No Free Lunch Theorem,NFL)
[[奥卡姆剃刀]]
丑小鸭定理(Ugly Duckling Theorem)
基础知识
数据处理
[[特征工程]] 是当前大多数机器学习任务的瓶颈。
[[为什么要做归一化]]
[[归一化方法]]
[[归一化和标准化]]
[[Internal Covariance Shift]]
[[Normalization 实战]]
[[Normalization操作的Re-Scaling不变性]]
不同变种
[[Batch Normalization/维度理解]]
[[Batch Normalization/多卡同步]]
[[Batch Normalization 为何有效]]
[[Group Normalization]]
[[Layer Normalization]]
[[Instance Normalization]]
[[He Initialization]]
[[Orthogonal Initialization]]
[[离散化]]
[[离散化方法]]
[[离散化和归一化有哪些优缺点]]
基础知识
[[Dropout]]
[[过拟合]]
[[Regularization]]
[[L1 正则]]
[[L2 正则]]
激活函数
[[softmax]] 多分类、数值稳定
[[sigmoid]]
评估指标
[[AUC]]
[[gauc]]
[[Base AUC]]
[[Tree Model]]
[[随机森林]]
[[VAE]]
深度神经网络 [[DNN]]
[[Optimization]]
卷积神经网络 [[CNN]]
[[CNN 卷积核]]
[[Pooling]]
图神经网络
编码器应用 [[BERT]]
解码器应用 [[GPT]]
[[CTR Bias]]
[[Adaboost]]
提升树
[[如何理解Boosting和Bagging?他们有什么异同?]]
[[boosting]]
[[bagging]]
[[CV]]
[[GAN]]
[[评估指标]]
训练
数据并行、模型并行
同步训练、异步训练
Parameter Server架构、Ring allreduce架构
优化
[[Tensorflow 模型量化]]
联邦学习
[[模型蒸馏]]
数据集相关 [[Data]]
[[机器学习参考]]
[[PRML]] 贝叶斯视角
[[The Elements of Statistical Learning]] 统计角度,ensemble 和 decision tree
Probabilistic Machine Learning: An Introduction
Machine Learning: A Probabilistic Perspective 2012 版本,新修订版本拆分成上面两本
{x,y}
f(x)
参数量
结构,都有自己的 [[inductive bias]]
objective
产品的 KPI 转换成模型的损失函数
P(model|data) = P(data|model) * P(model)/P(data) —> log(d|m) + log(m)
[[Optimization]]
达尔文式
启发式算法,仿达尔文进化论,通过适应度函数进行“物竞天择,适者生存”式优化
比较有代表性的:遗传算法GA,粒子群算法PSO,蚁群算法AA;
适合解决复杂,指数规模,高维度,大空间等特征问题,如物流路经问题;问题是比较收敛慢,工业界很少用。
拉马克式
拉马克进化论,获得性遗传,直接修改基因(w);
比较有代表性的分两类:
sgd variants(sgd/Nesterov/Adagrad/RMSprop/Adam/…)
newton variants(newton/lbfgs/…)
evaluation
一个好的模型需要覆盖的层面
算法层面:准确率,覆盖率,auc,logloss…
公司层面:revenue,ctr,cvr…
用户层面:用户体验,满意度,惊喜度…
模型调优思路
模型效果 ∝ 数据信息量 x 算法信息利用率
扩充“信息量”,用户画像和物品画像要做好,把图片/文本这类不好量化处理的数据利用起来;
改进f(x)提高“信息利用率”,挖到之前挖不到的规律;
碎心
路线选择
一层
除了观者,别的角色多走小怪,适当走?
没把握少打精英,最好选择火堆数量较多的路线,卡组强化或者火堆回