@曾经火热的Graph Embedding和GNN在推荐系统上还有前途吗?

链接: 曾经火热的Graph Embedding和GNN在推荐系统上还有前途吗? - 知乎

[[GNN的收益来源是什么?]] :-> 信息利用能力的增强

[[GNN对拓扑结构的利用,对于推荐系统的收益够不够大?]]

有的朋友可能会说,我们把用户和物品之间的行为也加入图中,不久可以把知识、行为和图结构一起编码了吗?#card

  • 看起来会让生成的Graph Embedding包含更充分的信息,推荐效果肯定会有提高。

  • 这个分析是有道理的,早期Pinterest也通过这一方式获得了收益,但这种超大规模的图训练也存在一些致命的问题。[[GNN在实际应用中的一些致命问题]]

[[GNN的未来在哪里?]]

关于技术更迭的思考

  • GNN曾经在学术界是非常火热的研究方向,但实话实说,在工业界却鲜有成功应用。这是业界和学界对于“价值”判断的不同导致的。#card

    • 站在工程师的角度,我们要有火眼金睛,敏锐的分清哪些是看上去很美的方案,哪些是一针见血的方案,它们之间是有本质不同的。

    • 最重要的判断依据还是对于收益来源的精准分析。这里面有理性的成分,也有技术直觉的成分。玄学一点来说,这种直觉才是算法工程师应该建立的护城河。

    • 就像“击败雅虎的不会是另一个门户网站,击败google的也不会是另一个搜索引擎”一样,淘汰一个技术的也不会是它的下一版,而是另一个维度的新方案。

    • 大模型毫无疑问在知识的广度和利用能力上,大大超出基于知识图谱的GNN,也就当之无愧的成为推荐系统新的更强大的信息输入源。


GNN对拓扑结构的利用,对于推荐系统的收益够不够大?

对于行为信息比较丰富的推荐系统来说,比如说抖音、小红书,其大量的用户行为之间的协同关系就可以充分表征内容的相似性了,#card

  • 它不再那么需要知识本体和属性间的连接来补充这种相似性。

  • 更何况,现在主流的推荐系统也已经通过直接添加特征的方式学习过知识图谱包含的知识了,由GNN提供的增量就更加微不足道了。

另一方面,对于一些纯知识性的推荐系统,比如说豆瓣、IMDB、知网等,#card

  • 这些网站中知识的链接是非常重要的,知识间二度、三度的关联也是有价值的。

  • 而且它缺乏足够多的用户互动信息来覆盖表达物品之间的相似性,那么GNN就是有价值的。


GNN的收益来源是什么?

推荐系统优化效果的收益来源 #card

  • 收益总是来源于样本、特征和模型三个方向的一个或多个。

  • 可以再精炼成两个方面,收益要么来源于信息的增加(样本、特征),要么来源于信息利用能力的增强(模型)

例子

  • 比如说,一个电影推荐系统,从来没有利用过电影中的演员信息,这时候把演员的信息加入到推荐系统中,很大概率能够带来效果的提升,因为这部分信息是新鲜的,系统从未学习过的知识,这就是 增量信息 带来的收益。
  • 我们的推荐模型本来是一个简单的MLP模型,把所有特征通过MLP进行交叉。但用户的行为是一个时间序列,是有前后关联性的,那么改成sequence model就能够更好的表达用户的行为及背后兴趣的变化,这部分的收益就是 信息利用能力 增强带来的。
    我们拿一个电影阿甘正传的knowledge graph来说,它的相关导演,演员,风格的信息肯定是重要的。但对于一个成熟推荐系统来说,肯定是已经通过其他形式学习过这些信息了,比如直接把这些side information进行Embedding化之后喂给模型。我们没有必要一定使用GNN来学习这些知识,所以GNN的收益不来自于增量信息。#card

image.png

那么GNN如果有收益的话,就一定来自于信息利用能力的增强。

  • 我们拿一个比较经典的GNN方案[[RippleNet]]来说,它一层层的从中心节点扩展学习到周围节点,有二跳、三跳关联关系的学习能力。本质上来说,它利用了knowledge graph点与点之间的拓扑结构,并把拓扑结构中蕴含的关系信息编码到Embedding中去,可以说GNN增强了对知识图谱中关系结构的利用能力,这才是GNN的主要收益来源。#card

image.png

  • 早期基于Random Walk的Graph Embedding生成方案更加纯粹的利用了节点间的拓扑结构。比如Node2vec分别基于BFS和DFS随机游走生成序列后,再进行Embedding编码。所以本质上,Node2vec没有引入任何新的知识信息,而是增强了对关系结构的利用能力。 #card

image.png


GNN在实际应用中的一些致命问题

首先,实事求是的讲,主流的深度学习训练框架对于图数据的训练并不友好。#card

  • 我们是可以通过一些工程手段讲图数据转换成序列数据进行处理,但这需要比较重度的投入。

  • 而且由于要维护整个知识图谱的拓扑结构并在其上采样,GNN的训练成本往往很高,进一步增加了工程投入。

其次,GNN训练得到的Graph Embedding的实时性比较差,它的训练也无法做到目前主流深度学习模型的实时更新。#card

  • 因此GNN不可能作为推荐主模型来使用,只能把生成的Graph Embedding用于召回和特征输入。这让GNN的重要性大打折扣。

  • 在深度学习推荐系统早期,大家的实时性都比较差,训练成本没有打下来的时候,GNN还有一定的优势,但如今主流的推荐模型都是实时更新的情况下,GNN的成本和实时性的问题进一步加大了产生绝对正收益的难度,让本来收益来源基础就比较薄弱的方案更加难以打平。


GNN的未来在哪里?

大模型的出现可以说是对GNN的降维打击。如果说曾经GNN对于知识图谱的学习还可谓是有独特优势,在大模型出现之后,GNN在该方向上的优势也荡然无存。大模型对于开放世界知识的全量学习,几乎可以吊打GNN对个别领域的知识学习。特别是多模态大模型几乎可以对文本、图片、音频、视频等任意信息进行同一空间内的Embedding化,更是让GNN的未来更加暗淡。#card

image.png


Literature Note 例子

example:根据多个 [[F-Note]] 写一个 [[L-Note]] #card

  • 这张图片讨论的是托马斯·卡莱尔在1840年的一次演讲中,如何明确了作者身份的定义。他将作者描述为一个受到启发的独立创作者,强调创作的自主性和天才。这一观点奠定了浪漫主义时代作者形象的基础,对之后150年作者身份的观念产生了深远影响。卡莱尔将作者视为由“原创性”、“真诚”或“天才”启发的自主个体。这种独立创作的形象在此后一个半世纪中变得深深植根于现代意识中。

image.png

用自己的话重写 fleeting notes 的内容 example #card

  • 这张图片中的内容讨论了文学领域对于创意型企业家作为作者合法性的问题。文学学者和文化历史学家表明,他们在21世纪的视角中,仍然固守于由卡莱尔在19世纪中期提出的浪漫主义作者的定义,没有改变。他们难以接受其他类型的作者形象。因此,创意型企业家在这些领域的看法中不被视为合法的作者角色。

image.png


通过日常生活中最典型的三个例子来理解生命力

第一个例子是健身之后的疲劳感,或者跑完马拉松之后一头倒下的那种感觉。人往往是通过疲劳感来感受到生命力的,健身、跑马拉松之后你会非常疲劳,但同时身体告诉你,你很有生命力。#card

  • 为什么健身的人会觉得自己有生命力呢?

    • 因为他的意识跟行动形成了一种有“间隔”的关系。大部分人去健身不是被迫的,是自愿选择的。他知道自己为什么去健身,在这个过程中他会挑战自己,挑战到什么程度由自己把握。他清楚挑战的目的是什么,为什么要挑战,最后达到的结果也跟他的设想差不多。
  • 一方面,运动确实是在燃烧生命,如果不燃烧就得不到生命力的感觉,比如躺平很快就会产生无意义感、空虚感,你必须要让它燃烧。在燃烧的过程中是有痛苦的,但是你的意识能够对此有一个清晰的叙述:我为什么干这个、我要怎么干、我会不会失控……这个过程可以自己调配,有一定的自主性,这种意识的存在是非常重要的。

为什么要谈生命力呢?#card

  • 在内卷的时代,大家经常讲行动力、执行能力这些词,但生命力和行动力的差别很大。

第二个例子,很多行动力非常高的年轻人,看上去非常忙,一天到晚要做很多事情,但他们往往会觉得这种忙是在消耗他的生命力,#card

  • 因为他没有办法对自己生命燃烧的过程产生一种意识上的间隔,他觉得他的意识完全被任务执行的过程所碾压,没办法从行动当中稍微抽身出来,去思考自己正在干什么、为什么干。

我想通过这个例子讨论,我们如何在一个不理想的状况下去寻找生命力。#card

  • 健身的例子虽然典型,但它不是非常有代表性,因为我们生活中的绝大部分时间不是在健身,而是在做很多工作。这些工作总是不那么令人愉快的,也不是百分百自己想做的。这个时候,我们的意识能不能跟行动产生间隔。但是我们能不能够告诉自己:我做这个事情确实是不太令人满意的,但是有怎样的原因。如果我们能对此做一个前因后果的叙述,就能够保证一定的生命力。

  • 现在我们看到的生命力的消耗,不仅是忙,而且在忙的过程中没办法让意识从行动当中抽身出来,对自己有一个叙述,大家都觉得被碾压了。

我希望通过分析来展示,意识无法抽身 的责任不是完全在于我们个人的。

  • 无论是工作还是学习,我们的任务都被设计成这样多头的、分散的、一个接一个碾压性的。特别是在学校,时间和空间的安排、每天学习任务的安排,都阻止着 间隔 的产生,人就很难有能力用意识再去反观自己的行动,形成自己的叙述。
  • 而且,间隔的产生不是完全自然的,需要一定的培养,需要很多别的经验来支撑,需要有别的参照系,但 学生 比较年轻,现在除了上学可能还要补课,学校里的事情就构成了他们的整个世界,很难让他们自己形成一个比较独立的反思,去思考我在这里学习究竟是怎么一回事。
  • 失去 间隔 ,他就会感到意识被碾压,再加上体力的消耗等等,他会就觉得生命力非常消耗。

项飙之前谈工作的观点

  • 很多年轻人之所以抗拒“重复的工作”,不是因为“重复”本身,而是因为 “意义的贫困” ,即 看不到工作产生的意义是什么 。加上大多数人不是在拼命工作就是在拼命消费,根本没有时间停下来思考意义,就会陷入更加恶性的循环。你看,当你问出“真是这样吗”,就会发现“好工作”也是重复的,重要的反而是去寻觅工作的意义。

最后一个例子,很多艰苦的、或者我们看上去无意义的劳动,在不同的情况下对人的影响是不一样的。但凡人们能够对那种无意义的劳动产生一种 有意义的叙述,他就不会一直感到被碾压。#card

  • 往往越是在受过教育的专业部门,比如律师事务所、金融机构,越难以产生间隔意识,因为在他们的整个教育过程中,唯一的目标就是把他培养成一个律师、一个金融分析家,专业就构成了他的整个的世界,他很难跳出日常的专业工作任务来看待这些工作。反而开小餐馆的人,或许他也觉得做的事情很无聊,但他能和邻里街坊产生联系,这就会给他一种另外的意义,他就不会觉得会被工作碾压。

总的来讲,生命力不等于 行动力 ,对生命力很重要的是意识和行动之间的 间隔


@快手推荐算法工程师的1年半: 业务驱动的算法创新

链接: 快手推荐算法工程师的1年半: 业务驱动的算法创新 - 知乎

我的工作方法:持续思考,不盲从

  • 第一,跨界学习,但有选择性。#card

    • 我不会把自己局限在推荐算法这一个领域,而是广泛涉猎各种AI技术和理论基础。我会关注最新的NLP或CV领域里有突破性的论文,从中汲取灵感,但不怎么喜欢看推荐系统的论文——说实话,这个领域平均质量比较差,大家都在玩小数据集,都在搞自己的baseline,每篇论文都声称自己超越了前人,很难让人信服。

    • 我更喜欢阅读经典书籍,比如《Probabilistic Machine Learning》《动手强化学习》,以及一些高质量的公开课,比如香港大学的信息论、UC Berkeley的CS285强化学习课程。这些系统性的理论知识比追逐最新论文更能给我带来深刻的理解和灵感。当然,需要写论文时我也会认真调研现有工作。

  • 第二,问题驱动,从业务痛点出发。#card

    • 每次解决问题,我不是先想"我要用什么酷炫的算法",而是认真思考"业务的真正痛点是什么"。快手的用户体量巨大,行为异常复杂,理解业务比套用算法重要得多。通过分析用户行为数据,常常能发现被忽视的模式和优化机会。
  • 第三,写作倒逼思考。#card

    • 有了初步想法后,我喜欢尝试把它整理成论文形式。这个"倒逼"机制特别有用——它逼着我系统思考问题,找理论依据,设计合理实验,最终不断完善算法。

    • 正是这种方法让我在一年半时间里完成了四篇算法研究,更重要的是在实际业务中创造了价值。

  • 第四,小步快跑,迭代验证。#card

    • 我在快手学到的另一个重要方法是"小步快跑"。不追求一步登天,而是先上最小可行版本验证思路,然后根据反馈不断迭代。这种方式让我能迅速试错,及时调整方向,大大提高了工作效率。

CQE算法:从"预测总是不准"到"建模整个分布"

  • 动机:为什么watch time预测总不够准?#card

    • 在快手,我最初负责多样性相关工作,这强烈依赖于各种PXTR(预测值)的准确性。日常工作中我发现一个有趣的现象:我们的模型在整体指标上看起来还不错,但对单个用户-视频对的时长预测却经常有很大偏差。有时候模型预测用户只会看几秒,结果他看完了整个视频;有时候预测会看很久,实际却几秒就划走了。

    • 思考后我意识到问题的本质:我们一直在用一个点估计(单一期望值)来预测本质上充满不确定性的行为。我们无法完全获取用户的信息,导致用户的行为本身就是随机的。同一个用户在同一个时间看同一个视频的时长是一种分布,这种不确定性用单一值根本无法准确捕捉。

  • 灵感:分位数回归的应用#card

    • 解决思路的灵感来得很偶然。一天早上,我在会议室里看《Probabilistic Machine Learning》这本书,读到Quantile Regression(分位数回归)章节时,突然有种被闪电击中的感觉——分位数回归不就是描述分布的好方法吗?它能同时预测多个分位点,从而刻画整个分布的形状!

    • 当天我就迫不及待地开始实现这个想法。基本思路是:不再预测单一的期望watch time,而是同时预测多个分位数(比如10%、25%、50%、75%、90%分位数),从而捕捉watch time的整个条件分布。这样,我们不仅知道用户可能观看多久(中位数),还能了解这个预测的不确定性范围(分位数间距)。

  • 意外的发现:分布特性与预测准确性的关系#card

    • 在论文的Rebuttal过程中,一位审稿人提出了一个尖锐问题:“有什么量化的数据支持分布建模的重要性吗?”。这个问题确实难倒了我。

    • 为了回应这个问题,我进行了一项额外实验:研究分布特性(如IQR,即分布宽度)与预测准确性之间的关系。结果出乎意料地清晰:

1
2
3
4
5
6
IQR范围    UAUC    MAE    样本比例
[0.0,0.1] 0.721 0.105 0.077
[0.1,0.2] 0.693 0.148 0.226
[0.2,0.4] 0.631 0.197 0.543
[0.4,0.5] 0.573 0.266 0.134
[0.5,1.0] 0.536 0.305 0.020
+ 这张表告诉我们:分布不确定性越小(IQR越小)的样本,预测准确性越高(UAUC更高,MAE更低)。这个发现不仅回答了审稿人的问题,还让我对用户行为本质有了更深的理解:用户行为的可预测性是不均匀的,有些行为模式(如重度用户)更稳定可预测,而另一些(如新用户或探索行为)则充满不确定性。

+ 有了这个watch time分布建模方法后,我们就可以根据业务需求设计不同的推断策略了,比如保守估计、动态分位数融合等。最终,CQE算法在线上带来了可观的留存(LT)、时长、播放量(VV)和多样性收益。

AlignPxtr算法:从复杂因果推断到简单对齐

  • 问题:学术界的方法为何如此复杂?

    • 推荐系统中存在另一个关键挑战:偏见(bias)问题。在快手,最典型的就是时长偏见(duration bias)——用户自然会在更长的视频上花更多时间,但这并不一定反映真实兴趣。#card
      • 当时学术界流行用因果推断来消除这类偏见。

      • 我阅读了大量论文,发现它们都构建了复杂的因果图,用反事实推理或后门调整等高深技术。

      • 这些方法理论上很优美,但实施起来较为复杂,让我不禁怀疑其在工业界的实用性。

  • 洞察:简化的力量

    • 有一天,我突然意识到一个关键点:不管这些方法多复杂,最后的结果,本质上它们不都是在对预测值做某种形式的"标准化"或"对齐"吗?核心就是将原始预测值除以或减去与偏见相关的后验统计量(均值或分位数)。#card
      • 我开始质疑:这些复杂方法的核心价值到底在哪?它们真能细化到用户ID级别吗?在实际业务环境下,会不会有更简单直接的方法效果一样好甚至更好?

      • 带着这些疑问,我尝试了最简单的方法:直接对齐预测值(PXTR)的均值。具体做法是,对于每个偏见因素(如视频时长),计算不同条件下的预测均值,然后从原始预测中减去这个条件均值的偏差。

      • 令我惊讶的是,这个简单方法在线上测试中带来了显著收益!这让我对学术界复杂方法的必要性产生了深刻质疑。

  • 理论突破:从均值对齐到分布对齐

    • 后来我系统学习了信息论知识,并做了一系列可视化分析,才恍然大悟:原来对齐PXTR的均值,本质上是在降低变换后的PXTR与偏见因素之间的互信息。而如果能对齐整个分布(所有分位数),理论上可以让这个互信息降为零,达到完全独立。#card
      • 这个洞察让我把前面的CQE与新的对齐思想结合起来,形成了AlignPxtr(Aligning Predicted Behavior Distributions)算法。它的核心是:通过条件分位数映射,将不同偏见条件下的行为分布对齐,从而消除偏见影响。

      • AlignPxtr的成功让我深刻认识到:在算法设计中,简单往往是一种力量。有些问题看似需要复杂的理论框架,但仔细思考后可能发现有更直接、更有效的简化方法。正如爱因斯坦说的:“Everything should be made as simple as possible, but not simpler.”(一切应该尽可能简单,但不能过于简单)。

  • 效果 #card
    image.png

SEC算法:从强化学习到行为克隆的思维跃迁

  • 问题背景:如何优化长期用户留存?#card

    • 我的第三个研究方向来源于对用户留存(retention)问题的思考。推荐系统的最终目标不仅是提高短期参与度,还要确保用户长期留存。传统的基于点击率、观看时长的优化可能带来短期收益,但不一定有利于长期留存。
  • 灵感源泉:卧室里的强化学习书籍#card

    • 当时我正躺在床上翻阅《动手强化学习》这本书,思考如何将RL应用到留存优化中。传统的强化学习方法需要设计合适的reward函数,并通过试错学习找到最优策略。但在实际业务中,这面临两个巨大挑战:一是如何设计与长期留存挂钩的reward函数;二是在线探索可能带来负面用户体验。

    • 正当我为这些难题发愁时,翻到了书中关于行为克隆(Behavior Cloning)的章节,突然灵光一闪:快手有海量用户数据,其中不乏高留存用户,何不直接克隆这些"专家"用户的行为模式?相比复杂地设计reward和冒险的在线探索,这种方法直接得多!想到大语言模型的Pretrain和SFT(监督微调)阶段本质上也是行为克隆,我更加确信这个思路的可行性。

  • 创新点:多层次专家与策略多样性

    • 进一步思考后,我发现单纯的二分法(专家/非专家)太过简化。用户活跃度有多个层次,从超高活跃到高活跃再到中等活跃,每个层次可能有不同的行为模式。#card

      • 同时,研究中我还注意到一个严重问题:简单的行为克隆容易导致策略崩塌(policy collapse),即模型只学到非常有限的行为模式,缺乏多样性。这在推荐系统中尤其危险,因为用户兴趣本身就是多样的。
    • 结合这些思考,我设计了SEC(Stratified Expert Cloning)算法,它包含三个关键创新:#card

      • 多层次专家分层:根据活跃度将专家分为多个层级,分别学习不同层级的行为模式

      • 熵正则化:借鉴LeCun的工作,引入熵正则化防止策略崩塌,促进多样性

      • 自适应专家选择:为每个用户动态选择最合适的专家策略

  • 惊人的效果:改变数十万用户的留存 #card
    image.png

    • SEC还可以用在用户兴趣拓展:

image.png

算法工程师的元认知:我的思考方式

  • 这一年半的工作经历,让我对算法创新的本质有了更深的思考:

  • 复杂与简单的权衡#card

    • 在算法设计中,我常陷入一个两难选择:是追求理论上完美但实现复杂的方案,还是选择实用简单但可能次优的方案?

    • 经过反复实践,我的结论是:理论洞察很重要,但最终方案应该尽可能简单。好的算法像冰山,水下是深厚的理论思考,水上却是简洁易懂的实现。我的三个算法都体现了这一点——它们背后有深入的理论分析,但最终实现却相对直观简洁。

    • AlignPxtr可能是最典型的例子——我直接用简单的对齐方法取代了复杂的因果推断框架,不仅实现更简洁,效果还可能更好。这正是我经常提醒自己的:不要被复杂性迷惑,真正的优雅往往是简洁中蕴含深度。

  • 理论与实践的循环提升#card

    • 我发现,理论思考和实践验证之间存在一种奇妙的正反馈循环。好的理论指导实践方向,而实践中的反馈又能纠正和完善理论。

    • 比如在SEC研究中,起初我只考虑了行为克隆的基本思路,但实践中发现策略崩塌问题,这促使我引入熵正则化;而熵正则化的效果又让我进一步思考多样性在推荐系统中的理论意义。这种"理论-实践-再理论"的循环迭代,让我的思考不断深入、算法不断完善。

    • 在反复实践中,我意识到:创新不是一蹴而就的灵光乍现,而是在这种循环中渐进式产生的。每次迭代都在我的思维中植入新的种子,最终生长为有价值的算法创新。

  • 结语:算法创新的本质#card

    • 经过一年半的实践,我对算法创新的本质有了更深理解:它不是为了创新而创新,而是为了解决实际问题;它不仅仅是数学和代码,还包含对业务的深刻理解;它的价值不在论文发表数量,而在于给用户和业务带来的实际改进。

    • 回想起写这三个算法的初衷,我都是从一个简单的业务问题出发:CQE源于"为什么watch time预测总不准"的困惑,AlignPxtr源于对复杂因果推断方法的质疑,SEC则是想避免复杂的强化学习探索。每次,都是从实际问题出发,通过深思熟虑和反复验证,最终发展成一个完整的算法框架。

    • 这告诉我:真正有价值的创新,往往源于对实际问题的深刻洞察,而不是为了创新而创新。


@推荐精排如何加特征?

链接 推荐精排如何加特征? - 知乎

关注问题#card

  • 第一、特征是重要的先验知识,但是有时我们自认为加入了一个非常重要的特征,但是模型效果却没有提升,这是特征无用呢?还是加的位置不对呢?

    • 第一个话题,就讨论如何将“先验重要”的特征加到合适的位置。
  • 第二、在多目标的场景下,如果某个目标比较稀疏,我们如何利用先验知识辅助它,使其能学得更好呢?

信心满满地设计了特征,感觉非常有业务sense,吭哧吭哧打通了上下游数据链路,模型预测一看,离线指标却稳如泰山。造成这种情况的原因有很多,其中一个可能就是,如果你的特征确实有用,但他没发挥作用的原因,很可能是特征的位置不对。#card

  • 第一,如果你先重要的特征加到DNN底部,层层向上传递,恐怕再重要的信息到达顶部时,也不剩下多少了。

  • 第二,DNN的底层往往是若干特征embedding的拼接,动辄五六千维,这时你新加入一个特征几十维的embedding,被“淹没”恐怕也不会太奇怪。那么,特征究竟要如何加才能发挥效用呢?这正是本文探讨的话题。

[[重要特征加得浅]]

  • [[Wide&Deep]]

    • wide侧就是一个LR,或者我们稍微扩展一下,就是一个一层的NN网络。#card
      • wide侧的特征离Loss近,避免了自DNN底部层层传递带来的信息损失,更有机会将我们的先验知识“一步到顶”。
  • 那么,哪些特征要进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

      • 论文最后坦言,“the auxiliary network is much simpler … The simple architecture makes the domain features directly influence the final prediction”,有兴趣或者相似场景的同学可以去试一下。

重要要特征当裁判

  • 对于一些强bias特征(eg:用户是否登录、来访天数),除了将它们加浅一些,离目标Loss更近,还有一种方法能够增强它们的作用,避免其信息在dnn中被损失掉,就是采用结构 :-> [[SENet]]或[[LHUC]]

  • SENET就相当于用户站在输入特征旁边,亲自下场辨认哪个特征有多重要,这其实也是一种变相的 self_attention 机制(如果SENET的输入是所有特征的话,可能就更接近self_attention的思想了)
    image.png

    • 强bias特征作为LHUC的输入,经过sigmiod激活函数后,输出是一个N维度向量。#card

      • N是所有fileld的个数N维向量就是各field的重要性,将其按位乘到各field的embedding上,起到增强或削弱的作用加权后的各field embedding再拼接起来。
    • 当然,如果SENET的输出维度N直接是input_layer的维度也可以,这就从vector_size变成 element_size

  • 喂入上层DNN这种结构,将一些先验认为重要的强bias的特征,放到裁判的位置,决定其他特征的重要性。#card

    • 比如,如果产品设计不允许未登录用户购买商品,那么显然“用户未登录”这个特征值,就“应该”将转化相关特征的权重置为0,因为它不能代表用户的真实意图。

    • 这样做,相比于将所有特征“一视同仁”、直接全部喂入DNN最底层,更能发挥重要特征的作用,将“先验知识”(比如这里的产品设计限制)深入贯彻。

一般都有哪些重要特征呢?

  • 表征用户本身bias的,#card

    • 比如用户的活跃程度、消费等级、性别、圈子等。
  • 表征上下文场景的bias的,#card

    • 比如用户几点来APP啊;

    • 用户当天有没有显著表露意图,比如淘宝上搜索了,加购了,购买了;

    • 商品位置信息等等。

  • 表征样本bias的,#card

    • 比如快手之前将快手APP、极速版上同一个场景的样本合并在一起训练,那么样本来自哪个APP也就是一个至关重要的特征了。

链路前节点信息帮后链路稀疏目标学习

  • 当前,多目标在推荐领域已经是屡见不鲜,以商品推荐为例,我们曝光透出的商品,不仅要让用户点击,用户点击代表着用户愿意花时间和APP一起玩,这直接代表着APP的生态;而点击之后还要尽可能地加购,当然最终目标是转化,转化直接关系公司营收。因此,我们从来不做选择,我们全都要!#card

    • 多目标之间往往存在前后依赖关系(比如先点击,才有可能转化),这样意味着,链路越靠后的环节,正样本就越稀疏,训练收敛也就越困难。因此,一个自然的想法就是多目标之间能否互助,或者一个稍微牺牲一点点去辅助另外一个而达到整体更优。
  • 信息从前往后迁移

    • 典型的案例有ESMM模型,pCTCVR=pCTR*pCVR。CTR任务的数据更多,预测精度更高,会给CTCVR的预测任务以提示。或者DBMIT模型。他们都是“拿链路前端环节的输出,作为链路后端环节的输入”,即“利用先验知识显式制订信息迁移规则”的典型手段,#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与语义特征拼接融合。

image.png

  • 模型同样是双塔结构,

    • User tower的向量表示 #card

      • user/query侧一方面使用query多粒度term进行embedding映射,包括 1-gram,2-gram,query terms(q_seg)以及补充的query terms(q_his)。

      • 此外,q_his的输入先经过和qseg的attention得到 qhis_seq q_{\text {his_seq }} ,q_seg同样也会通过Transformer得到深度的语义特征 qseq_seqq_{s e q \_s e q}

      • 最后各粒度特征通过加和,concat得到不同粒度的query表示向量矩阵 QmgsQ_{m g s} ,而后 QmgsQ_{m g s} 分别和实时,短期,长期的用户行为的特征表示做multi-head attention,最后得到。

    • 商品的表示比较简单,#card

      • 使用itemId embedding和title terms embedding拼接得到。
    • 不同于使用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(如品牌、颜色、型号等属性)匹配限制,避免模糊匹配带来的语义漂移等问题 ![image.png](/assets/image_1745139601570_0.png)


@Mobius: Towards the next generation of query-ad matching in Baidu's sponsored search

搜索广告场景

image.png

  • Mobius的模型架构同样是双塔结构,不同于常规的二分类任务,这里可以认为是3个任务,user&query tower的输出向量和ad tower的输出向量分别分成三份,分别对应计算向量匹配分,#card

    • 相应地分别预测点击、不点击以及是否为高点击的相关性badcase。
  • 三个任务的logist输出经过softmax层归一化得到u-q-ad的pair对各任务的概率。通过这种方式,Mobius实际上将样本标签分成了三个类:#card

    • 高点击但不相关、相关&低点击率、相关&高点击率,实现在相关性基础上的CTR建模。

模型使用历史点击日志作为基础数据集(<user/query,ad,clicked/unclicked> 对)。为了实现上述的三分类,还需要一个是否为badcase的label。这里使用相关性Teacher模型(预先训练好的)根据阈值来判断pair对是否相关,随后将样本送到CTR模型(Neural Click Model),进而找到低相关且高点击的样本作为badcase。得到bad标签后,进行CTR模型训练和参数更新,由此循环迭代,伪代码如下:#card
image.png


@Towards Personalized and Semantic Retrieval: An End-to-End Solution for E-commerce Search via Embedding Learning

除了基础的相关性特征(如query token和item title token),本文方案(DPSR)增加了多种个性化特征以提升模型对个性化信息的关注,

  • 用户侧包括:#card

    • User Profile:用户画像特征,如用户性别、年龄、消费能力、区域等,用于刻画用户的静态基础特征。
      User History Events:用户历史行为特征,如历史点击商品、搜索query、类目品牌偏好、点击率、成交率等。
  • 商品侧个性化特征包括:#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将分别进行召回并通过内积分数截断同样数量的商品进行统一排序。

image.png

文章训练数据的构造比较简单直觉:#card

  • 使用用户点击数据为正样本(10亿级别)。

  • 负样本同样没有使用曝光未点击的商品,因为未被点击的商品不一定不相关。

    • random negatives、in-batch negatives,二者合并作为负样本参与训练 Ni=Nrand Nbatch N_i=N_{\text {rand }} \cup N_{\text {batch }}

    • 文章指出随着rand负样本比例的增加,商品的个性化(或热度)逐渐变强,更容易点击/成交,相应地相关性也会一定程度下降。


@如何提升链路目标一致性?爱奇艺短视频推荐之粗排模型优化历程

如何提升链路目标一致性?爱奇艺短视频推荐之粗排模型优化历程_AI&大模型_爱奇艺技术产品团队_InfoQ精选文章

想法

  • 2021 年的文章,看起来还是轻松一点,有一些简单的思路其实可以尝试。

背景

  • 最初采用的粗排模型可以归为上述第二类选型模型,是一个基于各个纬度统计特征的 GBDT 模型。统计特征维度主要包括下面几个维度: #card

      1. 不同属性的用户群体对不同类型视频(分标签、创作者和视频本身等)的消费统计特征。
      1. 视频维度累积的消费统计特征,如视频的点击率、时长消费中位数和均值等;创作者 up 主的消费统计特征以及视频标签的消费统计特征等。
      1. 用户历史消费的视频内容统计特征,如用户历史消费的类型标签统计、消费的创作者内容统计等。
  • 在业务的精排模型优化升级为 wide&deep 模型后,我们对粗排模型和精排模型的预估结果做了详细的统计和分析,发现粗排模型预估为 top 的头部视频和精排模型预估的头部视频有很大的差异。归咎原因主要是以下两方面的原因:

    • id:: 6804cbee-9175-46d7-9774-d87b1946da57
  1. 特征集合的差异:#card

    • 粗排 GBDT 模型中主要是一些稠密类统计特征,而精排 wide&deep 模型中发挥重要作用的特征主要是用户长短期消费的视频 id、视频 tag、up 主 id 等以及视频本身的 id、tag 和 up 主 id 等稀疏类型特征。

    • id:: 6804cbee-5d4a-4da2-84d7-d7c416843252

  2. 模型结构的差异:#card

    • 树型结构模型和 DNN 模型的优化和拟合数据时的侧重点还是有很大的差异的。

    • 除了预估结果和精排 wide&deep 模型有比较大的差异性外,GBDT 模型在特征处理和挖掘方面还需要投入大量的人力。综合以上分析,为了尽量弥补粗排模型和精排模型的 Gap,缩小粗排模型和精排模型预估结果的差异性,并节省大量特征统计和挖掘的人力成本,我们对粗排模型进行了一系列的升级和优化。

[[双塔粗排模型]]

粗排双塔 DNN 模型结构图
image.png

+ 

+ 用户侧和 Item 侧分别构建三层全联接 DNN 模型,最后分别输出一个多维(512)的  **embedding 向量**  ,作为用户侧和视频侧的低维表征。
+ 在构建粗排模型特征集合时,为了控制粗排模型参数的复杂度,我们对粗排的特征集合做了大量的裁剪,用户侧和视频侧都只采用了少部分精排模型的特征子集。 #card
  + 其中,用户侧特征主要选取了下面几维特征:

    + 1. 用户基础画像特征、上下文特征如手机系统、型号、地域等。

    + 2. 用户的历史行为特征,如用户观看的视频 ID、up 主 ID,以及观看视频的关键词 tag 等,以及用户 session 内的行为特征等。

  + 视频侧特征只保留了三维:

    + 1. 视频 ID

    + 2. up 主 ID

    + 3. 视频标签

[[知识蒸馏]] 实现模型压缩

image.png

+ 在蒸馏训练的过程中,为了使粗排模型输出的 logits 和精排模型输出的 logits 分布尽量对齐,训练优化的目标从原来单一的粗排模型的 logloss 调整为 :-> 三部分 loss 的加和,包括 student loss(粗排模型 loss)、teacher loss(精排模型 loss)和蒸馏 loss 三部分组成。#card
+ 其中蒸馏 loss 我们线上采用的是粗排模型输出和精排模型输出的最小平方误差,为了调节蒸馏 loss 的影响,我们在该项 loss 前又加了一维超参 lamda,我们设置超参 lamda 随着训练步数迭代逐渐增大,增强蒸馏 loss 的影响,在训练后期使得粗排模型预估值尽量向精排模型对齐,lamda 随着训练 step 的变化趋势如图四所示。#card

image.png

Embedding 参数优化 #card

  • 将模型 embedding 参数的优化器替换为稀疏解优化神器 FTRL

  • 其他层的参数依然还用 AdaGrad

  • 练得到的粗排模型的 embedding 参数全为 0 的比率也高达 49.7%之多。我们在做模型导出时,裁剪掉了全为 0 的 embedding 参数,粗排模型大小减小了 46.8%,使得模型的传输速度也有近一倍的提升,同时线上加载模型的内存消耗也降低了 100%。

线上 Inference 优化

  • 首先在计算 user 侧 embedding 时进行了合并计算,对同一个用户+千级别候选视频 pair,在计算 user 侧 embedding 时,将 user 侧的特征独立拆分,只过 一次 user 侧 NN 的 inference。这个优化使得粗排模型打分计算服务 p99 的计算耗时减少了 19ms 左右。
  • 此外,基于视频推荐时特别长尾的分布,以及如前文所述,粗排模型视频侧的特征全部是静态特征(视频 id 确定,特征也是确定的),我们对高频视频的 embedding 进行了缓存。视频侧 embedding 优先从缓存里查询,未命中缓存时再进行 inference 计算。优化后的粗排打分服务架构如下图五所示:#card
    image.png

级联模型

  • 目的 #card

    • 为了一劳永逸地解决粗排模型目标和精排模型目标一致性的问题,我们对粗排模型进行了又一次的迭代优化。

    • 通过升级为级联模型,使得粗排模型能够自适应地对齐精排模型目标的变化,同时也节省了蒸馏训练的环节,大大地节省了训练资源消耗。

  • [[粗排目标是判断item是否在精排 topk]] 从实践的角度,级联模型对模型结构以及模型输入的特征集没有做任何修改,只是调整了粗排模型训练样本的生成方式,升级后的粗排模型从学习线上真实曝光点击/播放样本,调整为直接学习精排模型的预估结果,将精排模型预估 topn 的结果作为粗排模型学习的正样本。级联模型的样本生成方式具体如图六所示。#card
    image.png

    • 所以这一次升级粗排模型到级联模型只是简单地调整了模型的训练样本,却取得了很显著的收益,除了去掉了蒸馏学习的环节,大大地缩减了粗排模型训练的资源和时间消耗,实际上线也取得了很显著的收益,视频推荐场景的曝光点击率和人均有效观看视频数都提升了 3%左右。同时各项互动指标也有显著提升,其中人均评论量有 12%的显著提升。

Dynamic NTK

分析:固定缩放的缺陷分析 #card

  • 在NTK中 S=LLS=\frac{L^{\prime}}{L} ,在推理时,这里的 SS 是固定的( LL^{\prime} 是固定的扩展上下文大小,LL 是预训练时候的最大上下文长度)。但是,这可能导致推理的序列长度 <L<L 时会损失模型性能。

image.png

动态 NTK 的公式定义 :-> 动态缩放因子:S=max(1,l/L)S=\max \left(1, l^{\prime} / L\right) ,其中 ll^{\prime} 是当前输入的实际长度。,这就允许模型在达到训练的上下文限制时较为缓慢地退化性能,避免了骤降。

  • 逻辑:#card
    • lLl^{\prime} \leq L 时,S=1S=1 ,频率基保持原样,位置编码与预训练一致。

    • l>Ll^{\prime}>L 时,S=l/L>1S=l^{\prime} / L>1 ,按实际需要的长度逐步增加频率基的缩放,避免突然调整。


FashionBert

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
image.png

跨模态匹配微调:跨模态微调任务与经典的DSSM架构一致,只是doc端的输入升级为图文特征。query、title、image可以共享同一个BERT模型,以Segment Id区分。训练数据同样为搜索点击日志构造的<query, item>pair对。#card
image.png


NTK-by-parts

关于RoPE中不同维度的波长,有如下结论:存在某些维度 i ,其波长 λi\lambda_i 大于在预训练期间看到的最大上下文长度 L 。也就是说:在训练期间,存在某一个维度,旋转一圈后超过了 token最大上下文长度 L 。具体每个维度的波形可以参考图1-3,即Sin方法的绘图,其中 d=20,pos[0,100]d=20, p o s \in[0,100] 。#card

  • 如果某些维度的波长大于上下文长度 L(λi>L)L\left(\lambda_i>L\right) ,这说明该维度无法执行全旋转。在这种情况下,由于维度在预训练期间至少不会完全旋转一次,如果我们选择第一个token作为基准,那么在预训练期间每隔一个token到它的距离是唯一的,NTK可以用来确定它的绝对位置信息。

  • 相反,如果某个维度波长小于L (λi<L)\left(\lambda_i<L\right) ,那该维度就执行了至少一次全旋转,我们就无法在这个维度描述绝对距离,只能描述相对位置信息。

#card 因此,作者认为,不要对『只编码相对位置信息的维度』 (λi<L)\left(\lambda_i<L\right) 进行内插破坏,因为它们对于模型区分附近token的相对顺序至关重要。同时,应该始终对仅编码绝对位置信息的维度 (λi>L)\left(\lambda_i>L\right) 进行内插,因为较大的距离将超出之前模型能够编码的距离。综上,可以制定一种考虑以上所有因素的显式且有针对性的插值方法,即:

  • 如果波长远小于L,此时编码了相对位置的维度,因此不进行内插;

  • 如果波长大于L,此时编码了绝对位置的维度,应该进行内插以防止超出绝对位置的最大可编码范围;

  • 波长介于上述之间的维度,采用NTK-aware方法。

NTK-by-parts公式 #card
image.png


Neural Tangent Kernel

现状:PI会在扩展倍数特别大时显著降低位置编码区分不同位置的能力,这种现象称之为高频信息的损失。

  • [[RoPE]] 中周期和频率关系 #card
    image.png

  • PI 频率降低、角频率降低、旋转角度降低原因 #card
    image.png

NKT(Neural Tangent Kernel)的思想 :-> 高频外推+低频内插,即将 θi=b2i/d\theta_i=b^{-2 i / d} 改为 θi=(bSd/(d2))2i/d\theta_i=\left(b \cdot S^{d /(d-2)}\right)^{-2 i / d} ,也就是改变了基底(这里 b=10000\mathrm{b}=10000S=L/L)\left.S=L^{\prime} / L\right)

  • 位置编码的本质是求位置n的β进制数 #card
    image.png

  • NKT推导2——统一高频外推和低频内插 #card
    image.png

代码修改 #card

1
2
3
4
5
6
7
8
9
10
11
12
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
import torch
import transformers

old_init = transformers.models.llama.modeling_llama.LlamaRotaryEmbedding.__init__
def ntk_scaled_init(self, dim, max_position_embeddings=2048, base=10000, device=None):
#The method is just these three lines
max_position_embeddings = 16384
a = 8 #Alpha value
base = base * a ** (dim / (dim-2)) #Base change formula # NTK-Aware
old_init(self, dim, max_position_embeddings, base, device)
transformers.models.llama.modeling_llama.LlamaRotaryEmbedding.__init__ = ntk_scaled_init

Position Interpolation

使用RoPE,以长度为L训练完成模型后,当输入超过L会发生性能剧烈下降,一些论文提出可以通过给模型喂一些长度大于L的输入来微调模型,进而逐步将原始窗口长度扩大,但其代价和成效不佳(实验结果如下图4-1)。#card
image.png

思路:将超出L部分编码值压缩到L内。#card

  • 上图4-2中,外推bound的计算是用了aber变换

image.png

论文针对外推(Extrapolation)和内插( interpolation),也给出了一些实验,见图4-3: #card
image.png

图4-3的实验代码如下: #card

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import torch
import matplotlib.pyplot as plt

# build basis function
d = 4096 // 32
theta = 10000
# Frequency computation
freqs = 1.0 / (theta ** (torch.arange(0, d, 2).float() / d))
# construct basis function
L = 2048
x = torch.arange(0, L)
# basis functions
xfreq = torch.outer(x, freqs)
print(xfreq.shape)
y = torch.randn(x.shape[0])
# do linear regression
X = torch.cat([xfreq.sin(), xfreq.cos()], dim=1)

eps = 1e-5 # small regularization term
# 实现线性回归使得X*coeffs很好的逼近y,最终求解coeffs
coeffs = torch.linalg.solve(X.t() @ X + torch.eye(X.shape[1]) * eps, X.t() @ y)

x2 = torch.arange(0, 2*L)
xfreq2 = torch.outer(x2, freqs)
X2 = torch.cat([xfreq2.sin(), xfreq2.cos()], dim=1)
y2 = X2 @ coeffs

x3 = torch.arange(25, 75, 0.125)
xfreq3 = torch.outer(x3, freqs)
X3 = torch.cat([xfreq3.sin(), xfreq3.cos()], dim=1)
y3 = X3 @ coeffs

plt.figure(figsize=(16, 5))

plt.subplot(1, 3, 1)
plt.plot(x2[:L], y2[:L], "r")
plt.scatter(x, y)
plt.ylabel("attention score $a(s)$")
plt.xlabel("Positional difference $s$")

plt.subplot(1, 3, 2)
plt.plot(x2, y2, "r")
plt.scatter(x, y)
plt.axvline(L, color="k", linestyle="--", linewidth=0.5)
plt.title("Effect of Extrapolation")
plt.xlabel("Positional difference $s$")

plt.subplot(1, 3, 3)
plt.plot(x3, y3, "r")
for i in range(25, 75):
plt.axvline(i, color="k", linestyle="--", linewidth=0.5)
plt.title("Effect of Interpolation")
plt.xlabel("Positional difference $s$")
plt.savefig('PI.png',dpi=300, bbox_inches='tight')
# plt.show()

SimCSE

SimCSE仅通过简单的dropout mask操作来构造正样本对,并使用in-batch负样本,即在无监督语义匹配上取得不错的效果。在有监督模式下通过引入有标注数据也进一步提升了基线效果 #card
image.png


YARN

波长的引入

  • #card 在某个维度i下,波长被定义为:λi=2πθi=2πb2i/d=2πb2i/d\lambda_i=\frac{2 \pi}{\theta_i}=\frac{2 \pi}{b^{-2 i / d}}=2 \pi b^{2 i / d} ,因此,有如下结论:

    • 波长可描述为:在维度处嵌入的旋转位置执行全旋转 2π2 \pi 所需的token长度。

    • 维度越高波长越长。

  • 波长描述了维度i处执行全旋转2π所需的token长度 #card
    image.png

  • YaRN 和 PI和NTK这种类型的插值方案区别 #card

    • 像PI和NTK这种类型的插值方案不关心波长的维数,可以将其称为“盲”插值方法(blind interpolation),因为它们面对所有RoPE隐藏维度没有做任何针对性的处理。

    • YaRN,可将其归类为“有针对性的”插值方法,即对RoPE的不同维度做出不同处理。

[[NTK-by-parts]](局部NTK)

YARN

  • YARN 在实际使用过程中,为了实现该公式,只需要将m位置和 nn 位置的旋转位置嵌入各自缩放为原来的 1/t1 / \sqrt{t} 即可。 #card
    image.png

i2i作为推荐召回的核心,在数学假设上有什么问题?

对称性假设 #card

  • 物品A 和物品 B 相似度相同,sim(A,B)=sim(B,A)

  • 实际中可能存在 A 到 B(手机到手机壳),但反向关系 B 到 A 未必成立。

  • 召回低相关性物品

静态相似性忽略时间变化 #card

  • 根据历史数据计算的物品相似度是静态的,长时间保持稳定。

  • 物品的热度、用户兴趣会随着时间变化(季节商品、新闻热点)

  • 过时推荐

数据稀疏性与头部效应 #card

  • 需要物品有足够多交数据,才能计算相似性。

    • 长尾估计不准确

    • 头部偏差,热门物品因交互频繁,可能与多个长尾物品错误关联。

  • 热门推荐,牺牲了个性化


u2x2i

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
image.png

设计思路 #card
image.png

三塔模型的推理 #card
image.png

image.png


个性化召回

q2i2i:#card

  • 获取当前query下曝光、点击、成交的item,进一步通过i2i的方法(协同过滤、swing等)扩召回更多候选商品。

  • 同时通过类目限制(要求trigger item和cand item的类目一致)或其他离线相关性度量方法保证召回商品和搜索query的相关性,也可以直接通过query和召回商品的相关性度量保证相关性。

u2i2i:#card

  • 通过user历史曝光、点击item,召回更多的候选商品,并通过相关性策略进行不相关商品过滤。

u2s2i:#card

  • 召回user偏好的seller下和query相关的商品,作为query的候选商品。

个性化召回相对于文本召回优缺点 #card

  • 优势在于不需要精准的term命中即可召回相关的商品,且商品天然具有高点击/成交属性。

  • 缺点在于如果相关性把握不好,会引入一些影响搜索体感的badcase。


倒排索引

倒排索引中的索引指的是什么 #card

  • term 到 item_id 列表的映射

用户输入搜索query后,系统如何从库中找到命中query词的商品?暴力的方法是先对query进行分词得到每个query的term,而后遍历每个商品信息的每个term词,如果query term在商品信息中全部命中,则召回该商品。这种暴力方法有显而易见的效率问题:#card

  • 每次搜索都要有QNL次term匹配计算(Q: query 平均term数,N:商品数,L:商品信息平均term数)。

简单举例来说:假设有三个文档,“Winter is coming.”, “Ours is the fury.” 和 “The choice is yours.”, 经过简单的文本预处理(大小写转换、删除特殊字符、分词等),可以建立起如图所示的“倒排索引”。#card

  • 倒排索引是文档term到包含该term文档id的字典,基于字典数据结构的hash机制,可以快速找到包含指定term的文档id集合。

  • 可用搜索引擎如基于Lucene库的Elasticsearch

image.png


内容特征

该类特征有两种比较常见的处理方式,

  • 一是直接离散化作为模型的输入,#card

    • 如对于文本的词或字进行ID编码即可将其转化为离散特征,并进一步变换为模型可输入数据类型;
  • 另一种方式则是先对内容进行隐语义表示,并将隐语义表示作为模型输入。#card

    • 如对于文本,常见的隐语义表示可以通过word-embeding、经过微调的bert等Encoder进行语义向量特征提取;

    • 对于图像亦可以使用常见的图像encoder模型微调后预测得到其向量表示。


召回

[[倒排索引]] 解决暴力匹配的效率问题
+

u2x2i

u2i,向量召回

  • 输入user特征和item特征,然后对齐user和item的向量表征

  • 通过user的历史序列提取user的向量表征,然后和item的向量对齐

  • deepmatch

  • mind

    • 多兴趣

      • youtubednn
  • 用户行为序列

    • sasrec
  • 知识图谱

  • DSSM

探索性召回

item

  • 热门

    • 整体热门

    • 区域热门

  • 时效

  • 策略规则类

认知召回

正排召回

向量召回

扩展召回

高销量召回

重查召回

兜底召回

单字召回

[[@搜推算法面试常见问题第七期:搜索召回]]


召回多路融合

由于下游排序算力有限,系统无法对所有候选商品进行算分,需要有合适的多路召回融合策略。比较常见的融合思路如:

  • 多路召回的候选固定 比例 ,各路根据各自的排序分(如item效率分、q-i匹配分等)截断保留相应数量的候选,返回固定数量的商品送给下游排序。
  • 各路召回先合并,使用统一的 单一分数 整体截断(如item粒度的效率分),进而保留固定数量商品,送入排序模块。
  • 而对于一些 空结果或少结果 的query,有时是因为库中候选本身就不足,这时可以考虑扩召回的商品沉底追加在原队列最后,可以不影响原来的体感的情况下补充一定数量的商品。

向量召回相关性控制

由于搜索一般有比较明确的query意图,因此通常情况下搜索召回的第一目标是相关性。而很多时候通过DSSM架构虽然可以得到语义泛化的特征表达,但也免不了因语义漂移带来的相关性badcase。#card

  • 一方面可以在模型侧增加更多的语义特性(如query/item信息拓展、类目信息)或构造更难的样本等;

  • 另一方面可以从策略出发,对向量召回做相应限制,常用的如:

    • 限定类目下召回(商品类目在query类目预测集合中)、限定核心term匹配(品牌、型号等关键属性或根据term weighting)、限定向量匹配分阈值等,最终在业务目标和用户体感之间得到平衡。

向量召回覆盖范围

对于策略覆盖范围,同样有两点:#card

  • 1、由于策略很多时候不尽完美,向量匹配模型并不能对所有的query表现的都很好(如样本不均衡问题带来的模型偏置),通常需要进行case分析,总结表现不好的case类型,能优化即优化,优化成本较高的可以选择放弃该类型case的策略覆盖。

  • 2、不是所有的query对召回都有相同的需求,如候选结果已经很丰富的query可能需要增加更偏向个性化程度高的商品、而对于本身候选不足或者空结果的query更迫切的是需要补充更多的相关商品候选。从这个维度也可以考虑一些策略上的调整。


向量召回迭代离线评估指标

向量召回策略变量较多,通过线上效果调整参数成本较高,需要合适的离线评测指标进行策略好坏度量,以加快迭代效率。比较常用的如#card

  • Recall@K来度量模型的排序能力;

  • 如AUC/GAUC指标来度量策略的点击/成交效率;

  • 对于标注有query-item相关程度的样本,还可以使用F1或AUC等指标回归模型的相关性区分能力。

  • 不同的离线迭代目标同样需要设计好评测样本,以提升指标的置信度。


地级市买房:投资风险要大于一线城市和省会城市

我是射手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

  • 地级市的购房需求,主要是以改善性需求为主,追求的是大盘,低密度,低楼层,高绿化,最好有个江景或者水景,环境优美的别墅是首选。

  • 因为低级市城市较小,绝对的城中心如果环境比较嘈杂,小区不够高档最好不要选择。没有实力购置别墅,可以选择环境优美的高端住宅,最好是品牌大盘,一眼能够让人赏心悦目。


垂搜 vs 通搜

垂直送搜索特点

  • • 垂搜的⽂档普遍是结构化的,容易根据⽂档属性标签做 检索筛选。#card

    • • 电商:可以限定品牌、卖家、价格、颜⾊。

    • • 学术:可以限定关键词、作者、期刊、年份。

    • • 本地⽣活:可以限定类⽬、商圈、距离。

  • • 垂搜⽤户的意图明确。#card

    • • ⼤众点评⽤户搜索“寿司”,⽬的是找寿司餐厅。

    • • 淘宝⽤户搜索“拳击”,⽬的是找拳击相关的商品。


推荐系统优化流程

image.png

  • 流程 #incremental #card
    • 明确业务目标

    • 将业务目标转化为机器学习可优化目标

    • 样本收集

    • 特征工程

    • 模型选择和训练

    • 离线评测验证

    • 在线AB验证

    • 通过离线验证和在线AB的结果反馈到2,形成一个增强回路慢慢起飞


搜广推算法的意义

用户角度:#card
+

  • 克服信息过载,推荐系统在信息过载的情况下,用户如何高效获得感兴趣信息的问题

公司角度:#card

  • 推荐系统解决产品能够最大限度地吸引用户、留存用户、增加用户粘性、提高用户转化率的问题,从而达到公司商业目标连续增长的目的。

数值特征

特征缩放

  • Log-based#card

    • 针对幂律分布的特征(少量热门视频播放次数高)
  • [[Normalization]] 和 [[Regularization]]#card

    • 标准化将样本属性值缩放到指定的范围

      • 针对属性
    • 正则化将样本的某个范数缩放到单位1

      • 正对样本
  • Robust Scaling#card

    • 解决其他特征变换方法把特征值压缩到一个非常狭窄的空间,失去特征区分度

    • xscaled =xmedian(x)IQRx_{\text {scaled }}=\frac{x-\operatorname{median}(x)}{\operatorname{IQR}}

    • IQR 四分位距,确定第三四分位和第一四分位的差值

特征分桶

  • 为什么?

    • {{embed 数值特征离散化分桶
      }}

    • 引入非线性

    • 增强可解释性

    • 对异常值不敏感,防止过拟合

    • 分桶后可以对不同的桶做进一步的统计和组合

  • 方法

    • 无监督分桶#card

      • 固定宽度(等宽)

      • 分位数(等距)

      • 对数转换并取整

    • 有监督#card

      • 卡方

      • 决策树 [[GBDT+LR]]


数据清洗

缺失量较大直接删除特征

少量缺失值处理常用方法 #card

  • 自适应层

    • 缺失值用 w1

    • 如果不是缺失值用 w2*x

  • 均值插补

  • 同类均值插补

  • 建模预测,使用模型对缺失值进行预测

  • 高维映射

  • 多重插补

  • 压缩感知及矩阵补全

对于数值异常,可以使用箱线图观察分析,#card

  • 如个别样本特征出现极大值或极小值,可以采用最简单的均值、中位数等填充,

  • 或者在数据量级不大的情况下,直接删除存在异常特征的样本。


文本召回

基于文本的召回可以提供简单的基线,但由于召回要求term精准命中,常常会出现 召回能力不足 的问题,因此通常要配合以扩召回策略
常见的扩召回(基于文本)通常从两个维度出发:

  • query侧的扩召回 :-> 最常见的是改写,该部分在query理解章节已经做了简单介绍,这里不再赘述。
  • 物料侧的扩召回通常是 #card
    • 扩充召回字段,如增加商品详细描述、商品品类、属性等基础文本字段,

    • 或通过相似商品的基础文本信息作为本商品的扩充索引字段。


时间特征

时间特征通常情况下是比较重要的特征,该类特征可以构造为#card

  • 数值类型,如页面停留时长、距离上次曝光/点击时间等;

  • 亦可以为离散特征形式,如年份、月份、星期、小时点、节假日等


深度学习不需要特征工程?

方面,绝大多的模型都不能保证能够完美挖掘出基础特征所蕴含的所有信息,#card

  • 即模型存在精度问题,在数据量不足,特殊场景等情况下更是如此。手动的人工特征设计可以借助人的专业经验减轻模型学习负担,使模型收敛更快更好,更轻松的取得更好的结果。

另一方面,无脑将想到的特征灌给模型,无疑会增加模型的大小,其中可能会有很大一部分参数并没有很大的贡献,#card

  • 对线上inference速度要求较高或是资源有限的场景的影响尤为重要。

特征设计

特征工程的第一步是要找到对模型预测有用的特征,最常用的方式是基于经验分维度梳理,#card

  • 如电商领域第一层可以按场景元素分成User特征、Item特征、Seller特征、Query特征、上下文特征等,

  • 第二层可以按特征类型分成如类别特征、统计特征、语义特征、画像特征、时间特征、空间特征等。

  • 此外,基于已有特征还可以进一步构造组合特征,对于一些重要的特征可以优化为实时特征。

image.png

选择特征的过程也要考虑特征是否可以 取到 ,以及该特征在线上是否能够 及时获取


特征设计原则四象限

x 轴覆盖度,y 轴刻画能力#card

  • 1 完美特征(一般量少)

  • 2 ID Combination 记忆

  • 3 弱特征

  • 4 泛化低纬度特征


特征选择

过滤法#card

  • 直接通过统计方法计算单特征和目标label的相关性,并选择topk,或通过卡阈值过滤掉一定数量的特征。

  • 常见的特征相关性可以使用皮尔逊相关系数、卡方检验等方式度量。

迭代法通过迭代的方式进行特征选择,#card

  • 如预先使用所有的特征训练LR模型,接着丢弃5%~10%的弱特征(对应权重低的特征),如此反复直到评价指标下降明显,剩下的特征则保留。

模型选择方法也比较直觉,#card

  • 使用L1正则训练LR模型,如剔除权重为0的特征;或者训练LR模型,使用单特征输入计算单特征AUC衡量特征重要性;亦或者使用树模型进行自动特征工程,同样也是特征选择的一种,如经典的GBDT、GBDT+LR。

类似 automl 的特征字典

可以考虑维度 #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


粗排工程优化

1)商品覆盖时效性,#card

  • 因为很多时候商品候选规模在上亿级别,而粗排商品向量对特征变化敏感,回刷频率较高,甚至天级别的全库回刷。

  • 除了工程链路上的优化提效,策略上还可以考虑只对增量和特征有变化商品进行特征向量预测;

  • 另外还可以缩小策略覆盖范围,或只对特定圈定商品生效该粗排策略等。

2)query-user向量塔和item向量塔模型一致性问题,#card

  • 由于双塔模型很多情况下需要频繁训练进行参数更新,在部署过程中可能会遇到query-user向量是版本A模型,而item侧向量是版本B模型的情况。

  • 针对这个问题,一方面可以从工程侧进行模型同步控制进行解决。而在工程架构不能很好支持的情况下,也可以选择在夜晚进行模型更新,降低模型不一致带来的负面影响;

  • 再次一点,可以选择减小模型更新频率,如日更改为周更。而减小更新频率也会损失一定的模型效果,一方面由于低频率更新需要考虑减少使用ID类型特征,以免过度依赖模型的记忆性,另一方面也是因为模型会损失增量更新带来的泛化能力。


粗排模型评估方法

粗排模型的评估可以参考精排使用AUC作为模型打分能力的判断标准,而由于样本选择偏差等问题,使得AUC有时也不能完全指导粗排模型优化。

另一种可以参考的评估指标是粗排topN和对应精排topN的HitRate,对应HitRate越高,则粗排的排序能力可以看作越接近精排


精排

技术点#card

  • 1、精排模型,主要介绍其演进脉络及各类型模型特点;

  • 2、精排阶段的几个关键点的讨论,包括精排训练数据选择、特征工程、模型评估、分数融合、大模型的lifelong learning、deBais、实时化、工程链路等。


粗排样本选择

粗排训练样本选择最简单的可以复用精排模型的样本,#card

  • 一方面复用链路节省资源,

  • 另一方面方便与精排特征对齐,维护简单以及便于联合优化;

然而如上提到的,粗排和精排样本的打分空间分布并不一致,直接使用精排样本训练粗排模型,将会使得粗排模型对于大量少曝光的样本打分存在偏差。#card

  • 常见的缓解方法可以尝试增加随机样本做负样本(或者同类目等限制下随机负采样增加样本难度);

另一种思路则是使粗排尽可能推荐精排偏好的商品,具体实现可以将精排排序topN的样本作为正样本,其他为负样本等方法,#card

  • 此外精排模型蒸馏也可以理解为该思路的一种实现方式。

  • 样本选择空间偏差问题解的决方法不止如此,且无标准答案,很多时候还是需要不断实验改进,才能找到适合自己场景的样本选择方法。


结构化召回

商品结构化信息包括类目、属性等,属性有多个维度如品牌、型号、尺寸、适用性别年龄等。除了直接使用文本索引召回,同样可以直接通过结构化id索引召回。#card

  • 结构化召回通常需要query和item端的同步优化,query侧需要识别出其目标的类目或属性ID,商品侧同样建立相应的ID索引,该方法除了应用到基础召回,通常还用在搜索导航功能,如根据层级类目导购、根据属性进行细选等。

统计特征

统计类特征通常为对用户行为、商品表现等维度的统计值,一般情况可根据情况作为 离散特征或数值型特 征进行变换处理。


老汤模型如何增加新的特征

举个例子,工程实现上,对于LR模型,其权重参数往往以稀疏存储的kv方式进行持久化,新特征权重可以以kv插入的方式动态增加,而不是事先确定好特征的数量。#card

  • 因此,新的特征(如新item_id、price值)对应的权重数量不断增加,模型大小也同样不断增加(大的时候会达到T级别)。

重排动机:更精准打分

实现这个目标有几种常见的思路:#card

  • 1、减少排序候选,使用计算复杂度更高的模型,如使用长序列建模,复杂网络结构的排序建模等;

  • 2、增加链路实效性,如模型实时(online learning)[1]、特征实时等;

  • 3、多目标ensemble,手拍权重,或自动学习多个目标(CTR/CVR等)权重,如[2]使用贝叶斯优化方法进行在线超参数学习。此外还有个性化权重学习,如以点击或成交为目标,使得不同用户或搜索词ensemble权重不一。


面向成交效率(个性化)的向量召回优化

在向量模型中引入个性化,比较直觉的思路是#card

  • 在模型中引入个性化特征(如性别、地域、购买力、活跃度、商品销售热度等),

  • 或者从训练数据构造上入手(如将数据构造成高成交效率&高相关、相关、不相关三类),

  • 亦或者通过网络结构或策略上的设计(如引入多任务机制等)


面向相关性的向量召回优化

文本向量表征的模型(函数)不同的结构

  • DSSM 全连接网络表征 #card
    • 输入的query和doc首先用词哈希的方法被表示成triple-gram的词袋向量(multi-hot向量,向量大小为词典大小,词出现的位置为1,没出现的位置为0)。

    • 而后接入多层全连接网络,全连接输出query和doc的语义表征向量,并使用cosine相似度来度量二者的匹配分。

    • 最后通过最小化Loss(Pairwise loss、Triple loss、InfoNCE等)使得query和doc的正样本对距离近,负样本对距离相对远

image.png

  • 基于卷积网络

    • CDSSM [2]使用滑动窗口来提取模型输入的n-gram信息,如滑动窗口为3的时候,对每个词都会提取出一个triple-gram表示向量(multi-hot向量),并将所有词的向量拼接得到整个句子的特征输入。#card
      • 而后再经过多层常规的卷积和池化操作,分别得到query和doc的语义表示向量,进而优化正负样本对的距离远近。

image.png

+ 在word embedding技术流行之后,基于卷积的DSSM往往会先将各个词映射成embedding 矩阵,进而对embedding矩阵做多核的卷积池化操作,进一步提升了文本表征的效果 #card

image.png

  • 基于循环神经网络

    • LSTM-DSSM[4]。其结构与经典的DSSM一致,不同在于使用LSTM为encoder提取输入的文本特征。 #card
      image.png
  • 基于BERT

    • Sentence-BERT #card
      image.png

特征

  • 特征增强#card

    • 特征或者数据的增强可以在数据有限的情况下,通过一些简单的变换操作起到变相扩充样本的作用,进而提升文本特征输入的丰富度。同样,即使有足够的数据,特征/数据增强很多时候也能进一步提升模型的鲁棒性。

    • [[NLP 数据增强方法]]

  • 特征融合可以分为两条思路:

    • 特征内部:#card

      • 通过字、词、短语多粒度特征分别建模,而后进行融合来增加特征的丰富度;也可通过字、词、短语分层表示的方式融合多粒度的特征,如ELMO[8]是典型的考虑上下文特征的字、词、短语层级表示结构。
    • 补充特征:#card

      • 除了基础文本特征外,电商场景下有十分的方式补充特征,如融入电商知识(query和商品类目、属性关系等信息);通过行为数据挖掘相同语义的query,对当前query进行信息补充,以缓解短文本信息不足的问题等等。
  • 多模态特征

数据

  • 参考 ### 训练数据

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

  • 减少 embedding 词表大小和通过MurmurHash 这样的抗冲突哈希函数消除词表维护需求

Example of non static vocab hashing paradigm #card
image.png


ChangeLog

本页面灵感来自 ChangeLog of Me | cf020031308.github.io

[[2025/04]]

[[2024/12]]

[[2024/01]]

[[2023/12]]

[[2023/11]]

[[2023/10]]

[[2023/08]]

[[2023/07]]

[[2023/03]]

[[2023/02]]

[[2022/12]]

  • [[@翦商:殷周之变与华夏新生]] 历史小说,讲得是夏商周的历史。上古史的参考文献很少,作者亮点在于结合这几十年的考古成果(二里头、殷墟、周原等等)进行创造。翦商出自诗经「后稷之孙,实维太王,居岐之阳,实始翦商。」,意思是周灭商。为什么周要消灭商?商代遗址挖掘发现和甲骨文破译,商人生活中使用大量的人牲进行祭祀(比如房屋用人奠基,墓葬用人陪葬……),而且随着时间推移,祭祀规模越来越大,手段越来越残酷。作者推测周族可能长时间从事给商人捕捉祭祀用的人牲工作,随着周文王被拘和伯邑考被杀,周商矛盾激化,周武王开始伐商。周公旦在武王驾崩后,辅佐成王,创建礼乐制度。后世流传的文献没有直接记录商朝活人祭祀,可能是周公毁掉相关的档案,改写历史。

[[2022/11]]

[[2022/10]]

[[2022/09]]

[[2022/08]]

[[2022/07]]

[[2022/01]]

[[2021/12]]

  • Note

    • [[巨人术]] 两费技能好难受

    • [[OKR]]

    • [[笔记软件]]

    • [[iPad]] 买来看论文(虽然没有这个习惯……),思考如何在日常生活中使用。

  • Paper

    • [[An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale]] Transformer 在 CV 领域应用
  • [[@我的二本学生]] 这本书是作者和学生交流十多年后完成的,整体上按时间顺序给你讲一个又一个人的故事。除了故事之外,也没有给出更多具体的结论。

    • 影响学生的发展大概有下面这三个方面:

        1. 原生家庭,个体很难超越阶级,少部分学生能得到家庭的支持。
        1. 时代命运,从 06 年的学生到 15 年的学生,心态的差异很大一部分是房价带来的。另外,房价也改变很多学生家长的命运。
        1. 个人努力,毕业前有没有自己的目标以及毕业后能不能和自己和解?可惜没有分析学生就读的专业是不是市场所需要的?
    • 最后,读完本书其实不应该感到悲观,书中所写和社会上所说,都是这个群体如何。事实上统计学不对个体负责,还是有机会的

[[2021/11]]

  • [[服务器]]:购入一台腾讯云 2核4G8M 轻量应用服务器。使用宝塔面板管理,实在是太方便了。已经部署 [[Bitwarden]] 密码管理服务以及 [[WordPress]] 博客……

  • Note

    • [[任务术]] 狂野已无「恶魔之钟」,整理一下之前记录的笔记。

    • [[宇宙偶数术]] 10 月上传说卡组,T1 强度,内战靠贪!

    • 先从 [[铁甲战士 开始练习

    • [[生命平衡轮]]

    • [[YJango@学习观]] 很早就收藏的视频,但是一直没有时间看。大概是从机器学习、认知科学角度解释学习,值得仔细看看。

  • Book

    • [[沸腾新十年]]
  • Paper

    • [[BERT]]

    • [[Masked Autoencoders Are Scalable Vision Learners]]

  • People

    • [[chyixian]] 文科博士在读,少数派中分享过几篇和阅读相关的文章

    • [[润Rhuen]] 豆瓣网友,最近在申请博士,每月分享月记。

[[2021/10]]:忙着述职,基本上没有整理什么

  • Game

    • [[佣兵战纪]] 又肝又氪,冲了 200 多连一个火焰队或自然队都没有开出来,pve 快速推图都做不到……弃坑

    • [[杀戮尖塔]] 卡牌 Rogue 游戏,比佣兵战纪不知道好玩多少倍!

  • Book

    • [[创新者]]

[[2021/09]]

  • Note

    • [[宝宝术]] 想不到暴雪这些零费随从都能进构筑,胡的时候还挺强的。

    • [[鬼灵贼]] 练习这种卡组,然后被砍了是不是很伤?

    • [[心火牧]] 一拳超人

    • [[并查集]]

    • [[Life Audit]]

    • [[Beancount]]

    • [[万智牌]]

  • Book

    • [[平面国]]

    • [[哲学的故事]]

[[2021/08]]

  • Note

    • [[password]]

    • [[图论]] 可能只会写一手最短路…

    • [[Things 3]] 印象里面主流的 todo App 就这个没有尝试过,现在正需要一个简单清单软件。重新思考[[任务管理]]。

    • [[炉石传说]] 这游戏也挺氪的

      • [[任务术]] 马术,7 年老玩家第一次上传说!
  • Paper

    • [[Privileged Features Distillation at Taobao Recommendations]]:阿里巴巴优势特征蒸馏

    • [[@Distilling the Knowledge in a Neural Network]]

  • Book

    • [[蛤蟆先生去看心理医生]]
  • Another

    • [[刘汉臣之死]]:听完[[故事 FM]] 阎鹤祥的专集后,特地补一下这段说书。

[[2021/07]]

  • Paper

    • [[Beyond Efficient Transformer for Long Sequence Time-Series Forecasting]]
  • Book

    • [[@苏格拉底之死]]

    • [[哲学家们都干了些什么]]:有关形而上学、科学与人生的意义的讨论。

  • Note

    • [[VS Code]]

    • [[git]]

    • [[中概互联ETF]]

[[2021/03]]

  • Note

    • 20210307 [[数字坟墓]]

    • 20210308 [[OKR]]

    • 20210310 [[OKR 实践]]

    • 20210321 [[Zettelkasten 编码]]

[[2021/01]]

[[2020/05]]

  • [[@呼吸]] 这是一本由 Byte.Coffee 主播 MilkShake 🐑推荐的一本科幻小说集(前几天看其他东西的时候学会科幻小说的英文 sci-fi)。之前看到过,小说的价值在于作者用一个故事告诉你一个道理。最喜欢的是《商人和炼金术士之门》这篇:在传统的穿越小说无法改变未来和过去的基础上,论证穿越能更深刻理解生活。书中其他探讨的几个问题也很有价值,值得一读。

delayed feedback

在广告场景下,cvr 模型是这个问题的典型例子,因为转化是有延迟的,即在点击发生后过一段时间用户可能才会发生转化,且往往转化漏斗越深,延迟的时间越长

  • 这时候有两种选择,#card
    • 一种是等待事件的 label 完全回流再进行训练,比如说事件的真实 label 能在一天内完全回流,做天级训练即可,但是这不符合上面提到的 “及时” 的原则;

    • 另一种则是实时把数据送入模型做 online training,但是这不符合上面提到的 “准确” 的原则,因为有些 label 可能还没回流。而实际上,实时性和准确性也是一个 trade-off 的关系。

Delayed FeedBack In Computational Advertising | 吴良超的学习笔记 (wulc.me) 如何解决 label 回传不及时,样本无偏#card

  • 基本都是解决在 online-training 模式下如何解决 label 回传不及时的问题,如利用 importance sampling 等方法对样本做加权,或者让样本多次进模型,然后从统计意义推导出新的概率表达,从而保证样本是无偏的。

品牌广告

品牌广告往往是一个广告系统发展初期的广告模式,基本流程是广告主先付钱,平台保证曝光,如 cpt,gd 就是典型的品牌广告,前者没什么好说的,固定的广告位在特定位置强出就好了;后者则一般会涉及到库存预估和库存分配两个问题#card

  • 库存预估:gd 承诺的是未来的曝光量,因此需要保证当前售卖的库存不能超过未来的曝光量;一般可以通过时序预估模型来进行预估

  • 库存分配:将库存和 gd 计划作为 supply side 和 demand side 构造二部图,然后通过分配算法进行分配,常见的分配算法有 HWM 和 SHALE

上面的做法只是在解决 gd 广告的保量问题,但是随着优化的精细化,除了保量,还需要考虑一些其他问题,如#card

  • gd 广告和效果广告往往存在竞争关系 (因为曝光的机会是共享且数量是基本固定的), 需要联合效果广告建模使得利益最大化
    gd 广告除了保量,往往客户也会提出效果的要求,否则平台可以把低质流量直接给到 gd 计划;因此,从建模上这成了一个多约束的优化问题

如果额外考虑以上这两点,#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

    • 当前使用更多的是成本类产品,即认为广告主出价是 truthful bidding 的,可以将广告主的出价作为成本,投放过程中尽量让实际成本贴近广告主填的出价。
  • 由于当前的广告系统都是基于 ecpm 排序和扣费的,因此构成 ecpm 的几个元素 (bid, ctr, cvr) 的值必须要准确,才能保证成本不会过高 (广告主亏) 或过低 (媒体亏)

    • 首先需要重点关注的是 ctr、cvr 预估的准确性,而这个问题的难点在于能拿到的训练数据的 label 是 0 和 1 (代表是否点击 / 转化),但是实际中需要预估的是一个 rate,而这导致了没有一个绝对准确的 ground truth,退化成只能通过训练来逼近训练样本中的正负样本的比例,这也是为什么改变了训练样本的分布需要在 loss function 或预估值上做纠偏。另外,从概率论出发,大数定律告诉我们:当样本数量越多,则其算术平均值就有越高的概率接近期望值,但问题是很多计划的的 click、convert 数量非常少,所以训练也没法很好的学习出各个计划的期望 cvr。#card
      +

      • 因此,面对这么一个没有绝对 ground truth,同时大数定律也不完全适用的而带来的预估偏差的问题,需要有额外的策略来应对,最常见的就是上面提到的保序回归,这个也是基于后验数据的统计对预估值做 calibration,因此也需要考虑纠偏粒度上的后验数据是否过少的问题。
    • 另一个关键因素就是出价了,如果预估完全准确的情况下,按照广告主给定的出价来投放是最优的,但这显然是不太可能,因此#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

      • 第二中方法基本上就是基于 meta learning 的思想,让模型能够更好的 learn to learn,即使对于样本量很少的 item 也能较快学习到,代表方法就是 MAML,可以参考下面两篇 paper,另外,关于 MAML 更通俗的介绍可参考知乎上这篇文章
        Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks
        MeLU- Meta-Learned User Preference Estimator for Cold-Start Recommendation
        上面的方法基本都是让冷启动 item 的 id embedding 能更快收敛,还有另一种方法是将冷启动的 item 的一些更泛化的特征直接加入到模型中,如图像、文本等描述性特征,通过一些 pretrained model (如 VGG、Bert 等) 将其转为 embedding 的模型加入模型中,也是一种常见的套路。
  • 策略上往往也需要对冷启动的计划有额外的举措;

    • 如在冷启动阶段,可以给计划 “绿色通道”, 即一定 explore 的 quota,如同上面提到的起量问题一样 (起量其实也可以算是一个冷启动问题),而这也涉及到老生常谈的 E&E 问题了,#card
      • 一个跟 deep learning 的玄学程度不相上下的领域,这部分内容介绍可参考  [[exploration and exploitation]]

      • 同样地,这些 explore quota 也应该根据每个计划的预期表现给予个性化的分配;即需要识别计划未来的表现,毕竟往往个性化分别比起均分都是最优的。此外,这些 quota 必然会对成熟期的计划造成一定的积压,所以也需要考虑冷启动和成熟期的 trade-off。

  • 除了额外的扶持,冷启动的出价方法也需要额外考虑,#card

    • 因为此时计划的后验数据基本是空的,那怎么才能获取出价调控需要的这些数据呢?这里也有一些思路,比如可不可以利用相似计划的后验数据?或者信任预估,直接对预估值取 sum?或者产品层面就不对冷启动计划做苛刻的成本要求?
  • 同时,在实际产品中,往往也需要联合产品教育广告主,冷启动期间就是会存在不稳定性,更容易出现超成本等问题,#card

    • 而如果客户对平台粘性不高或者整个市场有其他更有竞争力的竞品,这些超成本所带来的损失往往也是需要有平台来承担。

持续跑量

  • 持续跑量可以认为是计划渡过冷启动后,亦即计划进入了成熟期需要面临的问题,因为广告主在投放追求的往往是两个东西:成本和跑量,在成本能控住的前提下,跑量一般是越多越好的,但现状是在不少的媒体上,计划在进入成熟期不久就会掉量,而且往往是掉了之后就再也起不来了,也就是说计划的生命周期较短。

    • 造成这个问题原因有很多,包括但不限于#card
      • 广告主频繁地修改出价、定向、预算等有可能改变计划的稳态
        模型预估的不准确、出价调控不够稳定,可能导致计划突然爆量或掉量
        如果竞价环境比价激烈,那么对于有限的展示机会和不断增加的计划数,部分老计划掉量也是不可避免的
        自然衰减,如计划圈定的人群基本都曝光了,或者创意的自然衰减
        这个问题会往往会导致广告主为了跑量而不断复制新建计划,进一步加剧起量、冷启动等问题,也直接导致竞争环境变得更激烈,系统的机器负载更大,因此,保证计划的持续跑量是所有广告系统都需要解决的重要问题。
  • 抛开第三个比较难改变的因素,针对其他几个原因,有一些思路也许值得借鉴#card

    • 广告主要减少频繁修改计划的定向、出价等操作,这些需要平台教育广告主,至于频率多大算频繁,定向又应该放开到何种程度,需要平台同时实验等手段测试出来,最好能给广告主提供一个参考值
      要尽量减少系统波动等因素对计划的影响,即要减少各中工程和算法的事故的影响,如尽量保证各种 infra 服务的高可用性,AB 实验要更加谨慎,因为这些操作都是有可能影响计划的稳态
      对于要掉量的计划生效额外策略;这里面又可分为两个问题,如识别掉量计划以及对计划做何种策略,这个问题跟冷启动的扶持也很相似

橘子汽水配柠檬水在即刻上的总结

链接: https://m.okjike.com/originalPosts/6732c87fa8855e724b728c9b

这篇主要讲教育系统是如何捕获我们的生命力的?但是我感觉对于职场人、打工人也很有启发,因为系统对人的影响是相似的。

1.什么是生命力? #card

  • 项飙认为生命力不等于行动力,对生命力最重要的是意识和行动力之间的间隔。

  • 比如说你在健身和跑步的时候,身体和心理是可以分开来的。

  • 这类任务让你在做无意义的活动时,可以产生一种“有意义的叙述。”

  • 你可以一边跑步,一边让你的脑子从身体中解放出来,做一种“前因后果”的叙述:我为什么要跑步,我可以跑到什么程度,我达到了我设想的目标吗。

  • 但是现在我们生活和工作中的很多任务,是把人这种停下来进行“有意义叙述”的时间剥夺了。

  • 你的脑子没有停下来,而是一直在执行任务,简而言之就是人被工作碾压了。

  • 人被安排在一个又一个任务里,没有“间隔”,脑子被工作任务过多的占有了。

  • 因此,人也就没有能力从行动中抽身出来,反观自己的行动,从而形成叙述。

2.生命力的捕获和劳动力的捕获有什么不同?

  • 比较有意思的是,这个访谈里对比了两个概念。

  • 第一个概念叫劳动力的捕获,劳动力的捕获会产生 异化异化 会让人产生 批判意识

    • 比如说,一个工厂里的工人,他被异化以后,他可能觉得工作没劲,没意思。当他意识到生产出来的东西是压迫自己的时候,最后就可能引发 **批判和解放 ** 。
  • 第二个概念是生命力的捕获,这种捕获最典型的特征就是 工作 ,不仅占据了你的体力,而且还影响你的意识、注意力、精力等。

    • 简单来说就是你在下班,以后还需要 去思考工作上的事情 。你无法完全从你的任务中抽离出来。甚至还有回家办公,或者说下班以后依旧需要工作的。
    • 这种捕获比起劳动力上的捕获更加的 消耗 人。
      3.通过横向反思和行动空间重建生命力?
  • 横向反思大概的意思,其实也是要抽离出来看待自己的任务。#card

    • 意思就是你在面对一个任务的时候,不要一直想着接下来该怎么办?领导怎么想?我该怎么做?

    • 而是时不时的停下来,想想我在做什么?我为什么要做这个事情?我的状态是什么样的?

  • 行动空间概念可以理解为,你要时刻意识到自己有做其他事情的可能性。#card

    • 你周末可以做些其他的事情,比如和朋友出去玩,去主动地做一些其他的事情,让自己有更多的沉浸式体验。

1.top school Ph.D Student的能量和心力

research 心法总则 #card
image.png

Chonghe Wang(MIT) [[冲气以为和]] #card
image.png

Andrej Karpathy(Stanford) #card

image.png

Helen姐(Princeton Math Ph.D) #card

  • 因为Helen没有实名上网,所以暂时不放真名,但Helen姐(现在在小红书分享)对我的影响是非常深刻的,她的思想非常先进,关于学习和个人发展的认识也非常深刻。这些分享是她早年间在微博分享的(现在可能已经不可见),我整理和收藏了多年。她对于女性科研工作者也有很强烈的鼓舞。

  • 这些分享揭示了Ph.D的本质,和自学成才的本质,不要被虚荣心蒙蔽,不要为了和别人攀比而学习,不要为了学会什么fancy的名词获得什么title而沾沾自喜,避免无效学习,摆脱线性思维,靠自驱力和motivation,不要在意无关人士的评价。这些观点我相信会对很多人都有启发。

image.png

image.png


2.如何对科研的不同阶段建立正确的认知

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年完成/回答。

image.png

image.png

Jun Cen(HKUST) #card

  • Cen博士把科研分为了四个阶段,入门摸索阶段-学会科研阶段-精通熟练阶段-合作带人阶段。

  • 相比上面的思路新加了一个合作带人阶段,其实不用等到教职,从Senior Ph.D开始就会接触到这个阶段,学术合作也是很好地拓展自己交际圈和影响力的方式,在带Junior的过程中,训练自己当老师的技能和领导力。

image.png

Sida Peng #card

  • Peng老师在Github分享了非常详细的经验。这些经验高屋建瓴地分享了完成一个reseach project的流程,很有借鉴意义。提出了三种想idea的方式:1.idea-driven 2.goal-driven 3.旧领域+新锤子(新工具,如diffusion, gaussian splatting, mamba等)

image.png

image.png


3.非常具体(hands on)的AI科研目标&经验

Junwei Liang(CMU)

  • 梁老师是我的恩师,从梁老师这里学到了很多东西,作为AI PhD,如何设定目标,以及如何去达到目标。制作Awesome List也是获得影响力的方式,我的Awesome-Mamba-List受梁老师的insights启发。

  • 工业界 or 学术界目标 #card
    image.png

  • 如何去达到目标 #card
    image.png

Guodun Lee(ZJU)

  • [[@普通硕士生的NLP之旅]]

  • @Gordon Lee 是我的好朋友兼人生导师,教会了我非常多的东西,我的第一篇一作工作,虽然现在看来不完美,但也得到了他的很多帮助。Gordon大量总结了自己读研的经验教训,硕士毕业有2A2B工作,虽然他是这个系列唯一一个MS,但我认为他是有PhD水平的。#card

    • 这些经验囊括了AI MS或PhD初级阶段需要的各种技能:阅读论文,做笔记,文献管理,如何社交,如何做开源项目获得影响力,科研失败教训,如何Rebuttal。尤其是社交&做开源项目方面,我受到了他很多影响,并践行到我自己的人生体系里面,这让我交到了很多做学术的朋友们。

Runsheng Xu(UCLA) #card
image.png

image.png

image.png


@普通硕士生的NLP之旅

日常科研经验分享 方向和论文 #card
image.png

日常科研经验分享:读论文和做笔记 #card
image.png

如何提高炼丹能力 #card
image.png

为什么要社交 #card
image.png

开源项目 #card
image.png

我从失败中学到什么 #card
image.png

image.png

image.png


Successful PhD Journey

科研的本质是 项目管理 ,身兼:算法,开发,产品,运营(宣传),Manager(项目排期,进度管理)

我开新Project的流程 #card
image.png

Junior阶段如何找到大佬带你?#card
+

态度诚恳,踏实肯干,从帮别人打下手开始,学习别人的工作流程,工作技能,向有结果的人学习

  • long vision:首次合作愉快才会有长期合作机会(重视reputation,不看重一时得失)

如何面对科研中的挫败和无反馈感?#card
+

绝大多数时候失败,极少数时候成功

git管理:看看git commit次数,每天走之前commit一次,给自己正反馈

  • Notion记录项目开发和实验日志,带时间戳,“可视化”自己的进展和进步

xiaoguang han 如何想 idea #card
image.png


如何建立科研正反馈

1.git管理:看看git commit次数,每天走之前commit一次,给自己正反馈。 #card
image.png

2.Notion记录项目开发和实验日志,带时间戳,“可视化”自己的进展和进步 #card
+

image.png


Isotonic Calibration Layer in DNN

常规校准方法

  • Platt scaling

  • isotonic regression

isotonic regression layer
image.png

  • ycali =Σi=0i=kRelu(ei+wi)vi+b,vi={ step,  if i<kystepi=ky_{\text {cali }}=\Sigma_{i=0}^{i=k} \operatorname{Relu}\left(e_i+w_i\right) \cdot v_i+b, v_i=\left\{\begin{array}{ll}\text { step, } & \text { if } i<k \\ y-s t e p \cdot & \mathrm{i}=\mathrm{k}\end{array}\right.k=argmaxj(yk=\arg \max _j(y- step j>0)\cdot j>0). #card
    • 分段拟合,对预测值分桶,每个桶一个可训练的权重 wi

    • relu 保证非负

    • ei 由校准特征得到的 embedding


Potential Outcome Framework 简化问题的三个假设

Stable Unit Treatment Value Assumption [[稳定单元干预值假设]]#card

  • 不同个体的潜在结果之间不会有交互影响

  • 干预水平对所有个体一致

  • 单元之间相互独立,一个单元受到的干预不会影响另外一个单元的潜在结果。举一个不满足的反例,某苹果手机降价后销量大涨,相关的手机壳等配件销量也随之上涨,苹果手机和手机壳等就不是独立的,类似地可以用GNN建模该关联。

  • 干预形式是唯一的,对于同一种干预不存在能产生不同潜在结果的其他版本。举一个不满足的反例,如果将降价视为干预,打5折和打9折对销量的影响显然差异巨大,而应该将不同的折扣建模为多值干预。

[[No unmeasured confounders]] 没有未测量的混杂因子#card

  • 可忽略性/非混淆假设(Ignorability / Unconfoundedness Assumption

  • W ⁣ ⁣ ⁣Y(W=0),Y(W=1)XW \perp \!\!\! \perp Y(W=0), Y(W=1) \mid X

  • 给定X,则分配机制与Y无关

  • 如果两个个体的x一样,则无论W是什么,其潜在结果一样

  • 如果两个个体的×一样,则无论潜在结果是什么,它们的分配机制都一样

  • 背景变量包含了所有的混杂因子。如果背景变量仅包含了部分混杂因子,那就无法去除干净伪相关的影响,预测的因果效应就存在高低估问题。不过想要做到这点挺难的,有时候我们都不知道有哪些混杂因子,更别提把它们都包括进来。
    相同背景变量的单元无论受到何种干预其潜在结果也相同,并且无论潜在结果如何其受到的干预机制相同。

Positivity [[正值假设]]#card

  • 干预是确定的,对于任何背景变量的单元,每一种干预的概率大于0。

  • P(W=wX=X)>0wP(W=w \mid X=X)>0 \quad \forall w and xx

  • common support / overlap


ALiBi

思路:ALiBi(Attention with Linear Biases)#card

  • 不向word embedding中添加positional embedding,而是"根据token之间的距离给 attention score 加上一个预设好的偏置矩阵",即直接引入相对位置。

举例:两个token之间存在一个相对位置差1,就加上一个 -1 的偏置,如果token之间的距离越远则这个负数就越大,代表它们之间的相关性更低。#card
image.png

代码 #card
image.png


Residual DCN

image.png

  • 两层 [[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 有助于学习更复杂的特征俩惯性,并保持稳定的训练。


RoPE

设计思路:在NLP中,通常会通过向量q和k的内积来计算注意力系数(ATTN),如果能够对q、k向量注入位置信息,然后用更新的q、k向量做内积就能丝滑地引入 位置信息 了。
图3-1:RoPE的两种解释(左:直观解释,右:原始推导)#card
image.png

图3-2:RoPE的操作示意图#card
image.png


@LLM实践--理解Language Model是如何到PPO的 理论篇

链接:LLM实践–理解Language Model是如何到PPO的 理论篇 - 知乎

在下面的文章里,我们约定,在语言模型的场景下:XDX \sim \mathcal{D} 表示一条文本X采样自数据集D #card

  • 假设我们数据集D只有下面4条文本。

    • X1=X_1= 中国的首都是哪里?北京。

    • X2=X_2= 中国的首都是哪里?中国的首都是北京。

    • X3=X_3= 中国的首都是哪里?中国的首都不是广州和武汉,是北京。

    • X4=X_4= 中国的首都是哪里?中国的首都不是广州,是北京。

  • 约定 xtx_t 表示一条文本中的第 t 个token,x<tx_{<t} 表示所有 t 之前的token。

奖励模型作用 :-> 给定一条文本X,奖励模型可以给这个文本打分 rXr_X ,表示这条文本在人类定义的偏好下的好坏。

  • 奖励模型训练使用这个loss函数: Lreward =logσ(rXchosen rXrejected )\mathcal{L}_{\text {reward }}=-\log \sigma\left(r_{X_{\text {chosen }}}-r_{X_{\text {rejected }}}\right) #card
    • 其中 rXchosen r_{X_{\text {chosen }}}rXrejected r_{X_{\text {rejected }}} 分别表示好,坏文本的奖励分数。一般取每个文本最后一个token的 logits,乘一个shape=[embedding_dim,1]的矩阵,映射成一个1维分数。

    • 从奖励模型的loss上看,模型建模的是相对分数,而不是绝对分数,实际也是如此。

    • 不同domian的分数区间是不同的,很难找到一个统一的阈值划分好坏,所以用的时候一般要伴随使用norm(或者baseline)。

[[@PPO与GRPO中的KL散度近似计算]] 要点

  • 一个是KL散度的方向:假设需要训练的模型是分布 A ,作为基准的分布是分布 B ,从训练分布中采样的 KL(AB)K L(A \| B) 称为正向KL,从基准分布中采样的 KL(BA)K L(B \| A) 称为反向 KL 。 #card

    • 正向 KL 有模式坍塌,反向 KL 会更全面的覆盖基准分布,但是部分概率拟合偏差较大。

    • 在Post-train之前的阶段我会优先使用反向KL,比如预训练,持续训练,蒸馏,因为此时模型学习的目标是尽可能全面的覆盖自然世界知识。

    • 在Post- train我一般优先尝试正向KL,这个时候模式坍塌是不可避免的,也是可接受的。

  • 一个是KL散度的估计方式

    • 为什么有时候使用 [[K2 估计器]] 和 [[K3 估计器]] 替代 [[K1 估计器]] #card
      • 蒙特卡洛估计是无偏的,当采样趋近于无穷的时候估计的就是KL散度本身,但是在采样数量少时方差太大。

      • 离散KL散度本来是非负的,但使用蒙特卡洛估计时值可能为负。所以一个简单的考虑是让估计值非负来减小方差,绝对值估计或 [[K2 估计器]] 。

加权语言模型

  • 观察我们的数据集D,既然我们有一个能给文本打分的reward模型,不妨假设模型会这样给每个条数据打质量分:#card

    • X1X_1 虽然正确,但是太简短了,rX1=1r_{X_1}=1

    • X2X_2 的回答主谓宾完整,质量好于第一条,质量分 rX2=1.5r_{X_2}=1.5

    • X3X_3 虽然也是正确的,但是"不是广州和武汉"明显是冗余的,质量分 rX3=0.5r_{X_3}=0.5

    • X4X_4 正确的且比 X3X_3 废话少一点 rX4=0.7r_{X_4}=0.7

  • 既然训练语料有了质量分,那么一个自然的想法就是让质量更高的文本在训练时的loss重要性高一些,反之则低一点。那么我们可以优化一下语言模型loss,改写成下面的形式:#card

    • Llm=rXlogP(X)=rXt=1TlogP(xtx<t)\mathcal{L}_{l m}=r_X \log P(X)=r_X \sum_{t=1}^T \log P\left(x_t \mid x_{<t}\right)

    • 只要保证r不小于0,新loss函数优化得到的模型就依旧是语言模型。

    • 加权loss等价于对数据进行上、下采样。r=0.5等于在batch中下采样一倍,2等价于上采样一倍。所以只要数据集没有问题,加权loss训练的模型也不会崩。(这是理论上的情况,在实际中rejection sampling连加权都没有,也能给模型训崩,这个我们放在实验篇讨论)

Policy-base 强化学习

  • 基于策略的强化学习优化目标和加权语言模型 loss 对比 #card
    • 形式上一致

      • 强化学习 J(πθ)=Eτπθ[R(τ)logPθ(τ)]J\left(\pi_\theta\right)=E_{\tau \sim \pi_\theta}\left[R(\tau) \log P_\theta(\tau)\right]

      • 语言模型 L=EXD[rXlogP(X)]\mathcal{L}=E_{X \sim \mathcal{D}}\left[r_X \log P(X)\right]

    • 区别是一个数据数据采样自模型,一个采样自数据集

过程监督

  • 如何奖励模型能对每一个 token 打分,加权语言模型 loss 改写成 #card

    • L=t=1TrtlogP(xtx<t)\mathcal{L}=\sum_{t=1}^T r_t \log P\left(x_t \mid x_{<t}\right)
    • rXr_X 移动到求和符号里面变成针对每个token的细粒度分数 rtr_t
  • 一旦计算token级别的权重,这个loss优化出来模型就已经不是统计意义上的语言模型了,因为这是对每个token做不同的上、下采样。#card

    • 通俗理解:把一句话说两遍这句话还是自然语言,但是把一句话话中的某个字说丙扁这就不不是正常的语言了。另外,就算是文本级别的权重,如果取负值,那么优化的目标将不再是最大化对数似然,自然模型也不是语言模型。

    • 一旦loss是非语言模型loss,训练就有可能崩溃,因为此时模型的优化目标并不是“模型依概率采样出一句话”,优化目标和我们的采样行为出现了gap。

    • 此时就需要在基础loss上引入KL散度约束。此刻起优化目标彻底脱离“最大化数据的对数似然”,变为“最大化奖励的期望”。

    • 在这之后我会称呼我们正在训练的这个用来说话的模型为策略模型。

  • L=t=1TrtlogP(xtx<t)\mathcal{L}=\sum_{t=1}^T r_t \log P\left(x_t \mid x_{<t}\right)
    学习目标的意义是 :-> 当采样一个token的分数 rt 为正,就会增加这个token的概率,分值越高增加的程度就越高。反之如果 rt 为负,则减小这个token的概率。

    • 这个目标包含的马尔可夫假设 #card
      • 即当token序列为 x<tx_{<t} ,采样这个动作 P(xtx<t)P\left(x_t \mid x_{<t}\right) 只影响 xtx_{\leq t} 的奖励,只要 xtx_{\leq t} 的奖励 rtr_t 高,P(xtx<t)P\left(x_t \mid x_{<t}\right) 就好。

      • 马尔可夫假设是个很强的假设,很少有这么理想的情况

  • X3=X_3= 中国的首都是哪里?中国的首都不是广州和武汉,是北京。
    中一个“不”字不仅让“中国的首都不”的奖励降低,还让后面“是广州和武汉”这么多token帮着往回拐。所以采样的token不仅应该对自己负责,还应该对后续token的奖励负责。将 loss 改成 #card

    • G(xt)=i=tTriG\left(x_t\right)=\sum_{i=t}^T r_iL=t=1TG(xt)logP(xtx<t)\mathcal{L}=\sum_{t=1}^T G\left(x_t\right) \log P\left(x_t \mid x_{<t}\right)
  • G(xt)=i=tTriG\left(x_t\right)=\sum_{i=t}^T r_iL=t=1TG(xt)logP(xtx<t)\mathcal{L}=\sum_{t=1}^T G\left(x_t\right) \log P\left(x_t \mid x_{<t}\right)
    loss 的含义 #card

    • 当采样一个token xtx_t 后,这个token之后所有token的总奖励分数 G(xt)G\left(x_t\right) 为正,就会增加这个token的概率,分值越高增加的程度就越高。反之则降低这个token的概率。

    • 在强化相关的算法中,我们会看到很多 i=tT\sum_{i=t}^T 而不是更常见的 i=1T\sum_{i=1}^T ,基本都是源于这种"向后负责"的思想。

  • 再进一步,一个token对后续每个token负的责也不都是一样的,直觉上应该是距离当前位置越远,token对其负责越少。所以我们改造一下奖励的累计方法:#card

    • G(xt)=i=tTγitriG\left(x_t\right)=\sum_{i=t}^T \gamma^{i-t} r_i

    • γ\gamma 是一个0-1之间的超参,越大表示对后续token负责越多,趋近于 0 表示不对后续负责, 1 表示对后续负全部责任。这个改造后的累计函数就是我们之后实际使用的累计函数,在强化中也称为回报(return)。

Baseline

#card 观察图中给出的例子,由于这句话整体是正确的,所以虽然有一些废话token分数不高,但也都是正的。相当于所有token的概率都在增加,只不过不好的token增加的慢一点。这样只有等到其他更好的token概率足够高了,才能消灭掉不好的token。显然这样的学习效率很低,甚至可以说是错误的,这些错误token的概率就不应该增加。所以我们可以给这些分数做一个中心化,全部减去一个值,让分数有正有负,更明显的区分出好坏,公式可以表示为:
+ L=t=1T[G(xt)b]logP(xtx<t)\mathcal{L}=\sum_{t=1}^T\left[G\left(x_t\right)-b\right] \log P\left(x_t \mid x_{<t}\right)

+ 减去的这个值,我们就称它为baseline。之所以叫baseline,是因为这是一句话的“基准”,它表示了一句话的平均好坏,如果这个句子是模型采样生成的,则也表示这个模型现有的平均能力。
  • 在很多地方,我们会看到说减去baseline的作用是降低方差。哪里来的方差,为什么要降低方差?#card
    • 在强化的训练过程中,训练使用的文本是采样出来的。假设我每次都采样两条进行训练,某一次采样出了 X2X_2X3, X2X_3, ~ X_2 完全正确,每个token都是1.5分。

      • 那么训练时"中国的首都->是"的概率以 1.5 倍的强度提升,"中国的首都->不"以 0.5 倍的强度提升,经过softmax归一化以后,相当于在降低"不"的概率,模型整体的学习方向还是正确的。
    • 但是如果我只采样一条数据训练,且不幸采到了 X3X_3 ,那么"不"的概率将提升,模型的学习方向是错误的。这并不是说采样采的不对,也不是奖励模型打分错了。

    • 而是当采样次数不够多时,分数无法准确的反应奖励模型真正希望模型去改进的方向(不是"不是广州和武汉"是错的,而是奖励模型更想要不废话的答案)。

    • 这个奖励模型希望我们改进的方向是期望,而采样与这个期望的距离就是我们所说的方差。在micro-batch梯度下降这种优化方式下,过大的方差会导致模型无法收敛。

既然减去baseline作用这么大,下面我们就看看这个baseline应该怎么确定。一个朴素的想法是,用每个token的平均分作为baseline。
image.png

+ 比如图中这些token的平均分是0.76,那么减去之后每个token的分数变成:#card
  + 这样该正的正,该负的负,更符合我们的期望了。

+ 但是这么做有个问题,如果仅使用每条数据自己的均值,就意味着一个句子中的token必定有正有负。#card
  + 这会导致好句子中有部分token的概率会下降,坏句子还是有一部分token概率会上升。

  + 为了更加准确的估算这个baseline,我们应该将视野扩大,不仅关注一个token在一条数据中的相对好坏,更要从整个数据集的角度看一个token是好是坏。

在统计学中,整体的角度就是指期望。我们可以尝试计算文本中每个token的期望回报 E[G(xt)]E\left[G\left(x_t\right)\right] 。用数据集D举例说明一下这个期望分数是怎么算出来的:
image.png

+ 上表是我们数据集中的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函数写成:L=t=1T[G(xt)E[G(xt)]]logP(xtx<t)\mathcal{L}=\sum_{t=1}^T\left[G\left(x_t\right)-E\left[G\left(x_t\right)\right]\right] \log P\left(x_t \mid x_{<t}\right)

    • 理解一下这个loss函数: #card

      • G(xt)G\left(x_t\right) 表示的是采样了 xtx_t 后的句子有多好。

      • E[G(xt)]E\left[G\left(x_t\right)\right] 表示还没有采样 xtx_t 时前缀有多好。

      • 如果采样 xtx_t 后句子比采样之前更好(差值为正),就说明这个采样是好的,则增加概率,反之则减小概率。

    • 这个loss是理想的目标,但是在实际RLHF训练的过程中,我们无法计算 E[G(x)]E[G(x)] ,因为#card

      • RLHF时answer都是实时生成的。

      • 只有SFT,RS,DPO这种固定训练集的算法能计算出整个数据集的期望。

      • 没有办法计算就只能想办法近似。

  • L=t=1T[G(xt)B(xt)]logP(xtx<t)\mathcal{L}=\sum_{t=1}^T\left[G\left(x_t\right)-B\left(x_t\right)\right] \log P\left(x_t \mid x_{<t}\right),用函数 B(x)B(x) 来近似计算 E[G(x)]E[G(x)]

    • 近似函数可以怎么设计 #card

      • 用贪婪采样的句子奖励来近似模型的"平均能力":B(x)=rXMAXE[G(X)]B(x)=r_{X_{M A X}} \sim E[G(X)] ,这就是ReMAX。

      • 可以对一个prompt采样多个answer (X1,X2,XG)\left(X_1, X_2, \ldots X_G\right) ,然后用平均奖励来近似: B(x)=i=1GrXiGE[G(X)]B(x)=\frac{\sum_{i=1}^G r_{X_i}}{G} \sim E[G(X)] ,这就是GRPO。

      • 如果在计算平均奖励时,"扣掉"正要训练的这条数据,计算除此之外其他文本的奖励均值,就是RLOO。

    • 这种基于采样的近似方法有个特点,因为采样就会导致新的baseline answer Xbaseline X_{\text {baseline }} 和我们要训练的数据长度不一致,因此没有办法按位对齐回报和baseline。#card

      • 所以这一类算法的 G(xt)G\left(x_t\right) 可以带脚标 t ,表示每个token的回报不同,但是 B(x)B(x) 都是不带脚标 t 的,算整个 answer的reward。
  • 有这么多种baseline的选择,那种好呢?一般评判baseline可以用两个指标:#card

    • 期望和方差。好的baseline应该不改变原始优化目标梯度的期望,并且能够减小方差。
  • 是否能够不改变梯度期望比较好证明:#card

    • EθL=Eθt=1T[G(xt)B(xt)]logP(xtx<t)=t=1T[EθG(xt)logP(xtx<t)EθB(xt)logP(xtx<t)]\begin{aligned} E \nabla_\theta \mathcal{L} & =E \nabla_\theta \sum_{t=1}^T\left[G\left(x_t\right)-B\left(x_t\right)\right] \log P\left(x_t \mid x_{<t}\right) \\ & =\sum_{t=1}^T\left[E \nabla_\theta G\left(x_t\right) \log P\left(x_t \mid x_{<t}\right)-E \nabla_\theta B\left(x_t\right) \log P\left(x_t \mid x_{<t}\right)\right]\end{aligned}

    • 只需要证明后面一项 EθB(xt)logP(xtx<t)=0E \nabla_\theta B\left(x_t\right) \log P\left(x_t \mid x_{<t}\right)=0 ,就能说明没有改变期望。用一下上文提到的对数求导技巧:

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)

+再代入到V的公式中:+ + 再代入到 V 的公式中: +

\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)

+表示时序差分2步的近似,以此类推TDTt1):+ + 表示时序差分 2 步的近似,以此类推TD(T-t+1): +

\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的基本元素及其与渐进阅读的联系

链接: 一文搞懂SuperMemo的基本元素及其与渐进阅读的联系 - 知乎

Concept

  • woz本人的概念组 #card
    • 他的概念组里既有像『生物学(Biology)』这样的学科大分类,也有像『着凉而感冒(catch a cold from cold)』这样聚焦的具体主题

image.png

  • category:predecessor of concepts in older SuperMemos. No longer used in SuperMemo 17. A category used to mean a named branch of the knowledge tree to which elements belonging to a given class of knowledge were added. For example, you might have keep categories such as: General Knowledge , Family , Internet , Job , etc. Now you can accomplish the same with concepts #card
    • 类别:旧版SuperMemo中概念的前身。在SuperMemo 17中已不再使用。类别曾经是指知识树的一个命名分支,属于某一类知识的元素被添加到该分支中。例如,你可能会保留一些类别,如。常识、家庭、互联网、工作,等等。现在你可以用概念完成同样的工作

@为什么最近几年,没人在推荐系统里去玩 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}

+可以采用蒙特卡洛估计的KL,允许KL估计值为负:+ + 可以采用蒙特卡洛估计的KL,允许KL估计值为负: +

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)}

+但是当最终loss使用加性KL时:+ + 但是当最终loss使用加性KL时: +

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的探索失败了。


hexo-deployer-cos-cdn

刷新 COS CDN 缓存报错


ppxu 讲解例子

Nature 的封面是关于一种印度洋中部的查戈斯群岛上的一种名为“红脚鲣鸟”的海鸟,这种鸟在在矮灌木及小乔木上结群营巢。#card
image.png

image.png

Science 封面提到了两个核心概念:中微子和耀变体。#card
image.png

image.png

image.png

  • 为了探测中微子,科学家们在南极洲建立了“冰立方中微子观测站”。一些直径约为 35cm 的,圆形的数字光模块被放置到冰面以下 2.5 千米的地方。超过 5000 个数字光模块形成了一个巨大的一平方公里的探测器。这些数字光模块可以检测到高能中微子与冰相互作用中释放的极其微弱的光。最终科学家们利用“冰立方”检测到了来自耀变体的中微子。


猴子和打字机

另一个在流行文化中占了很大分量的思想实验是 “无限猴子定理”,也叫做“猴子和打字机” 实验。定理的内容是 :-> 如果无数多的猴子在无数多的打字机上随机的打字,并持续无限久的时间,那么在某个时候,它们必然会打出莎士比亚的全部著作。

  • 猴子和打字机的设想在 20 世纪初被法国数学家 Emile Borel 推广,但其基本思想—— 无数多的人员和无数多的时间能产生任何 / 所有东西 ——可以追溯至亚里士多德。
    简单来说,“猴子和打字机”定理是用来描述 无限的本质 的最好方法之一。#card

  • 人的大脑很难想象无限的空间和无限的时间,无限猴子定理可以帮助理解这些概念可以达到的宽度。

  • 猴子能碰巧写出《哈姆雷特》这看上去似乎是违反直觉,但实际上在数学上是可以证明的。

  • 这个定理本身在现实生活中是不可能重现的,但这并没有阻止某些人的尝试:2003 年,一家英国动物园的科学家们 “试验” 了无限猴子定理,他们把一台电脑和一个键盘放进灵长类园区。

    • 可惜的是,猴子们并没有打出什么十四行诗。

    • 根据研究者,它们只打出了 5 页几乎完全是字母 “s” 的纸。

Das 曰:二十年前第一次看到这个思想试验,是在一个日本人写的小册子里。名字忘了,是《五角丛书》中的一本。十年前翻箱倒柜找这本小册子,未果。谁如果保存着二十年前那本五角丛书的话,不妨转让给 das,你五毛钱买的,我出一枚袁大头,或者一个紫砂壶也行。#card

  • 不需要无限多个猴子,不需要无限长的时间,房间里放一台打字机,然后关一只猴子进去,猴子碰巧也会跳到打字机上,碰巧也会打出几个字母,有人计算过,假以 2000 亿年,从概率上讲,猴子会打出一首莎士比亚的十四行诗。

  • 这道理很简单:猴子随意踩踏打字机,总会打出一些字母,这些字母随意组合,只要字母足够多,总会有一些单词,只要单词足够多,总会有一些句子,只要句子足够多,总会有一些有意义的句子,有意义的句子足够多,总会有一首诗,诗足够多,总会有一首十四行诗,十四行诗足够多,总会有一首和莎士比亚的作品一摸一样。

  • 这道理简单明了,就是一些概率和排列组合的简单计算。

  • 但是我有一点想不通,猴子比大自然聪明多了,人体比十四行诗复杂多了,猴子胡蒙瞎碰,打一首十四行诗都要 2000 亿年,大自然胡蒙瞎碰,打造个人体却只用了 50 亿年。究竟是我疯了,还是达尔文疯了?

  • 现在还不清楚,反正两个人总有一个疯了。


@我的笔记管理法 | Randy's Blog

链接: (lutaonan.com)

想法

  • 框架都差不多,就是你没有去整理自己的方法论,最值得参考的一点,笔记中所有的收藏链接都需要写上你的注释 [[PARA/实践]]

[[稍后读]] #card

  • [[习惯养成]] 每周整理 Readwise/简悦中保存的文章和高亮,打上标签和写清楚为什么要收集。

  • 我会根据这篇文章的内容打一些 tag, 这样等到将来我需要写关于某个主题的文章时,可以在 Readwise Reader 里通过标签直接找到关于这个主题的文章。

  • 我还会在这篇文章加上注释 —— 为什么我想读这篇文章?我想从这篇文章里得到什么?我会强迫自己添加一篇稍后读的文章的时候思考这个问题,并且用十几个字简单地描述。这样当我在之后读这篇文章的时候,我可以带着我的问题去阅读,这样会更有效率。

[[PARA]]

  • Areas 指的是你感兴趣的领域,比如理财、编程、职业规划、商业等等。#card
    image.png

  • Resources 指的是在未来可能会有用途的东西,我的理解是那些你可能会用到的,将来可以立刻作为参考的东西。比如最近我会看到很多关于 Prompt Engineering 的东西,虽然这不是我的领域,但我觉得将来会有用,所以我的 Logseq 里会有#card
    image.png

Questions 分类 [[Dozen]] #card

  • 读到这个故事的时候我非常受启发,我觉得的确是要把做的笔记也归纳到自己在思考的问题那里。这样日积月累,我的问题下面的笔记就会越来越多,多个笔记串起来会对我的问题更有帮助。

  • 我还建立了 Questions 这个分类,我把一直在困扰我的一些问题都建起了相应的页面,当我在记笔记时,如果觉得这个笔记和我的某个问题有关,就会链接过去。

image.png


FM

自动特征交叉,解决特征稀疏

FM 与其他模型对比

  • 可以模拟二阶多项式核的 [[SVM]]、MF、SVD++

    • [[SVM]] 训练和预测需要计算核矩阵,核矩阵的复杂度是 N 方

    • MF 扩展性没有 FM 好,只有 u 和 i 两类特征

与 [[SVM]] 对比

  • 二阶多项式内核 SVM 二元交叉特征 wij 相互独立

    • fm 参数 nk,svm 参数 nn,更适合大规模稀疏特征,泛化能力更强
  • 核方法需要计算核矩阵

  • 样本 :-> 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 轮迭代的学习率不同)

  • 不同特征有不同的学习速度、收敛速度快

[[Ref]]


@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
image.png

需要直接在全曝光空间去纠偏,而不是只在点击空间(例如IPW)或者间接在全曝光空间(DR)上纠偏。

  • 在全曝光空间训练模型的好处就是 #card

    • (1)数据稀疏问题得到缓解

    • (2)训练空间和推断空间直接对齐了

  • 在全曝光空间训练CVR模型存在最大的瓶颈问题就是:#card

    • (1)全曝光空间里,对于转化任务而言,存在大量的假负样本。在全曝光空间里,由于不存在“未点击->转化”这样的正样本,这些样本会混在“未点击->未转化”样本中充当假负样本。这些假负样本可能仅仅是因为曝光位置、曝光风格原因,没有被用户察觉到或者点击到。但是如果这些样本被用户点击了,是可以转化的。如果在全曝光空间训练,CVR模型过度拟合这些真假难辨的转化负样本,CVR的预测结果则会偏低。

    • (2)另外,在全曝光样本空间直接训练CVR模型,选择偏差问题仍然存在。所以需要在全曝光空间进行纠偏而不单单在点击空间进行纠偏(如IPW和DR)。这是因为,如果我们认同IPW的思想,即在点击样本空间,点击倾向性会对点击空间样本造成选择偏差。那么在未点击空间,同样也会有不点击倾向性导致选择偏差。

由于受到用户在做转化决策的过程的启发,我们提出了事实样本空间(factual space)和反事实样本空间(counterfactual space)的概念。这里的事实空间和反事实空间如下图所示
image.png

  • 从概率角度去分析,如果一个用户 uiu_i 购买(转化)一个物品/服务 vjv_j 的概率是 pi,jp_{i, j} ,那么不转化的概率就是 1pi,j1-p_{i, j} 。假设用户最终决定购买,即转化标签 ri,j=1r_{i, j}=1 ,那么我们能得到一个事实的正样本 <ri,j=1,oi,j=1,xi,j><r_{i, j}=1, o_{i, j}=1, x_{i, j}> 。然而这个时候,#card
    • <ri,j=0,oi,j=1,xi,j><r_{i, j}=0, o_{i, j}=1, x_{i, j}> 这个负样本则就不会在事实空间里被观察到了。上面已经分析过了,这个负样本实际上本应该是有 1pi,j1-p_{i, j} 的概率出现的。

    • 在我们的反事实机制里,这样的负样本,<ri,j=0,oi,j=1,xi,j><r_{i, j}=0, o_{i, j}=1, x_{i, j}> ,则会存在于反事实空间中。

    • 我们DCMT模型除了利用事实空间的点击空间 O\mathcal{O} 样本来预测事实的CVR,还会利用反事实的点击空间 N\mathcal{N}^* 样本(事实的未点击样本状态取反而得)来预测反事实CVR。

    • 同时通过以上的分析,我们发现,事实的CVR预测值和反事实的 CVR预测值之和应该与 1 的误差要最小。

[[DCMT 模型]]

[[DCMT CVR Loss]]

[[DCMT 无偏估计证明]]

由于逆倾向加权,如果点击率预测值很小或很大,我们的DCMT对应factual loss或counterfactual loss的权重变得很大很大。因此我们也和传统的IPW方法一样采用了Self-Normalization策略。对应的逆倾向权重改成了#card

  • factual loss部分:1cˉi,j(i,j)O1o^i,j\frac{\frac{1}{\bar{c}_{i, j}}}{\sum_{(i, j) \in \mathcal{O}} \frac{1}{\hat{o}_{i, j}}}

  • counterfactual loss部分:11σ^i,j(i,j)N11o^i,j\frac{\frac{1}{1-\hat{\sigma}_{i, j}}}{\sum_{(i, j) \in \mathcal{N}^*} \frac{1}{1-\hat{o}_{i, j}}}

[[在线实验CVR分布对比]]

[[主要超参对DCMT的影响]]

[[用DR实现CVR建模]]

  • 优点 #card
    • 这样做的好处是 o^i,j\hat{o}_{i, j}e^i,j\hat{e}_{i, j} 只要有一个预测准确,那么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)

+接下来我们比较MTLIPW模型的转化率误差与groundtruth之间的差异:+ + 接下来我们比较MTL-IPW模型的转化率误差与ground-truth之间的差异: +

\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

image.png

  • 除了主要的文本特征,还增加了user和doc的位置、社交关系的side info增强 query和doc 的匹配能力。
  • 模型的训练目标#card
    • 为双塔输出向量的距离,使正样本对距离尽可能小(相似度分数尽可能大),负样本对距离尽可能大(相似度分数尽可能小)。

    • [[Triplet Loss]]

基线模型的样本构造也比较简单,使用query-doc的点击pair对作为正样本对,负样本有两种选择:#card

  • 随机负采样:对每一个query随机从doc池中采样相应比例的负样本。

  • 曝光未点击的样本:对于每一个query,随机从session内曝光未点击的样本作为负样本。

  • 文中实验显示前者的效果明显强于后者,原因在于后者使得训练样本和后续预测样本有明显的分布不一致,即存在严重的样本选择偏差问题。

向量召回问题

  • 候选集离线训练和线上服务的压力

  • matching 问题

[[新召回往往会存在后链路低估的问题,如何克服这个问题带来增量?]] #card

  • 将召回生成的embedding作为ranking阶段的特征,可以直接将embedding作为特征或者计算query和doc的embedding各种相似度,通过大量实验证明,consine similarity有较好的结果。

  • 为了解决向量召回准确率较低的问题,将向量召回的结果直接进行人工标注,然后再基于标注的结果进行训练。这种方法比较暴力并且效率比较低。

Ref


@位置编码之路:SIN->RoPE->ALiBi->PI->NKT->YARN

链接: 位置编码之路:SIN->RoPE->ALiBi->PI->NKT->YARN - 知乎

想法

SIN [[Positional Encoding]]

  • 图1-1:正弦位置编码形式的由来 #card
    image.png

  • 图1-2:正弦位置编码中θ的由来 #card
    image.png

  • 图1-3:正弦位置编码的特点+推导 #card
    image.png

  • 缺点 :-> sin位置编码表示相对位置关系时仍然比较间接。

[[ALiBi]](基于线性偏差的注意力机制)

[[RoPE]](旋转位置编码)

  • 2021年,RoPE(Rotary Position Embedding)诞生,它借助了复数的思想,出发点是通过绝对位置编码的方式实现相对位置编码。

[[Position Interpolation]]

[[Neural Tangent Kernel]]

[[YARN]]

六种位置编码方法总结

image.png
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTc0NTE1OTk0NzQ0N18wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6MjI3LjAzMzYwMTg2NTM5MDUyLCJ0b3AiOjM4My4xODY3MDEyODI3NjA3NCwid2lkdGgiOjM3MC4zNTQyMTQ1MDIxODY0NCwiaGVpZ2h0IjoxNTQuNjY2MjMxMDk5MjAzMywiYW5nbGUiOjAsImNJZCI6MX0seyJsZWZ0Ijo3NDYuMzExNDA1NjMxNTY5MiwidG9wIjoxMTYuNDYzODQyNTczNTY2NjIsIndpZHRoIjo0NTEuNjM0MjE5ODgxMTU5NzcsImhlaWdodCI6MTc1LjA0NzA0MTM0MDEzMjk1LCJhbmdsZSI6MCwiY0lkIjoyfSx7ImxlZnQiOjc0NC4wNjI3OTAwNDQyMTE0LCJ0b3AiOjYzNC41MTgyOTE1ODkxMDgsIndpZHRoIjo0NTYuMTMxNDUxMDU1ODc1MzUsImhlaWdodCI6MTY1LjA2Nzk1NzY2Mzk2NzI2LCJhbmdsZSI6MCwiY0lkIjozfSx7ImxlZnQiOjEzMDYuOTQ0NjM2ODI0MjMsInRvcCI6MzUyLjM1NjY0NjQxMzkxNTMsIndpZHRoIjo0NTYuODY5MDU4NTc5MjU5NywiaGVpZ2h0IjoxNjkuNjg0MDc2NTQ4MDM0MjMsImFuZ2xlIjowLCJjSWQiOjR9LHsibGVmdCI6MTMyMy4wNTk4NTQ1NjA0ODUsInRvcCI6NjM0Ljc1NzI5Mzg3NTcwMTksIndpZHRoIjo0NzEuMjk4NDQwMzExMzg4MywiaGVpZ2h0IjoxNjQuNTg5OTUzMDkwNzc5NTUsImFuZ2xlIjowLCJjSWQiOjV9LHsibGVmdCI6MTMwOS4zMDYxMDE4NzY2MDY2LCJ0b3AiOjk2MS41MDg5MTI1MzAxNjg1LCJ3aWR0aCI6NDY1LjQ3NzUwNDgxODY4ODY2LCJoZWlnaHQiOjE3Ny40MDQ3NzcwNTEyNzI3MywiYW5nbGUiOjAsImNJZCI6Nn1dfX0=


DCMT CVR Loss

image.png

  • 第一块是factual loss :-> (i,j)Oe(ri,j,r^i,j)o^i,j\sum_{(i, j) \in \mathcal{O}} \frac{e\left(r_{i, j}, \hat{r}_{i, j}\right)}{\hat{o}_{i, j}} 是事实CVR预测值与事实点击空间样本 O\mathcal{O} 之间的误差。这边的误差函数是log loss。

  • 第二块是counterfactual loss :-> (i,j)Ne(ri,j,r^i,j)1o^i,j\sum_{(i, j) \in \mathcal{N}^*} \frac{e\left(r_{i, j}^*, \hat{r}_{i, j}^*\right)}{1-\hat{o}_{i, j}} ,是反事实CVR预测值与反事实点击空间 N\mathcal{N}^*(事实未点击空间的镜像空间)样本之间的误差。

  • 第三块是counterfactual regularizer :-> 1(r^i,j+r^i,j)\left|1-\left(\hat{r}_{i, j}+\hat{r}_{i, j}^*\right)\right| ,即上面所述的软性约束 r^i,j+r^i,j1\hat{r}_{i, j}+\hat{r}_{i, j}^* \approx 1

  • 如图所示,我们的DCMT的CVR任务部分,形成了一个有效的纠偏链路。
    image.png
    occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTc0NDM4NDk4MjAyMV8wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6MzM4LjMzMTY4ODA2NTMwNzksInRvcCI6MzYuMjk5Mjc1NTE0NTI4Miwid2lkdGgiOjI0Mi4zNjQ0MDcxNjA1NDI4NywiaGVpZ2h0IjoyNS4xMjY2OTY2NzI3ODc4NCwiYW5nbGUiOjAsImNJZCI6MX0seyJsZWZ0IjoyNzcuMTU1Mzk5MTEyODUwMywidG9wIjo1MDguNzg5NzAxMzE3NzEzOCwid2lkdGgiOjIxNi4xNjg1MzEyODAyNTEsImhlaWdodCI6MzAuOTc1NzQ5NDM0NTE3ODYyLCJhbmdsZSI6MCwiY0lkIjoxfV19fQ==
    +

  • 优点:

    • 在全曝光空间做逆倾向加权,可以利用全曝光样本空间数据来训练我们的CVR任务,使得训练空间和推断空间对齐。也可以缓解选择偏差(或者NMAR问题)。#card

      • 通过 EDCMT\mathcal{E}^{D C M T} 公式可知,我们直接在事实点击空间 O\mathcal{O} 进行逆倾向纠偏(这里的逆点击倾向权重是 1/o^i,j1 / \hat{o}_{i, j}
      • 我们直接在反事实的点击空间 N\mathcal{N}^*(即事实的未点击空间的镜像)也进行了逆倾向纠偏(这里的反事实空间的逆点击倾向权重就是事实空间的逆不点击倾向权重 1/(1o^i,j)1 /\left(1-\hat{o}_{i, j}\right) )。
    • (2)而软性约束的最大作用是可以缓解假负样本的问题。例如在事实未点击空间 N\mathcal{N} 有一个样本

      • 如果这个样本是个假负样本,那么 1(r^i,j+r^i,j)\left|1-\left(\hat{r}_{i, j}+\hat{r}_{i, j}^*\right)\right| 值比较大,则说明对于这个样本而言,事实CVR预测值 r^i,j\hat{r}_{i, j} 和反事实CVR预测值 r^i,j\hat{r}_{i, j}^* 之间存在矛盾(不符合先验知识)。

      • 这是因为,这个假负样本本应该进入到事实点击转化空间的,然而却进入了事实未点击空间,所以事实CVR预测值 r^i,j\hat{r}_{i, j} 预测值会被拉低。

      • 而它对应的反事实CVR预测值 r^i,j\hat{r}_{i, j}^* 也不会太高,因为这个样本进入反事实点击转化空间的概率也不应该很高。所以 1(r^i,j+r^i,j)\left|1-\left(\hat{r}_{i, j}+\hat{r}_{i, j}^*\right)\right| 值会比较大。

      • DCMT通过最小化 1(r^i,j+r^i,j)\left|1-\left(\hat{r}_{i, j}+\hat{r}_{i, j}^*\right)\right| 这个软性约束会去纠正假负样本对应的 r^i,j\hat{r}_{i, j} ,使得它更大,从而接近真实值。


DCMT 模型

image.png

  • 整体的目标公式是 :-> L(θ)=ECTR+wcvrEDCMT+wctcvrECTCVR+λ2θF2L(\theta)=\mathcal{E}^{\mathrm{CTR}}+w^{c v r} \mathcal{E}^{\mathrm{DCMT}}+w^{c t c v r} \mathcal{E}^{\mathrm{CTCVR}}+\lambda_2\|\theta\|_F^2
  • 特征划分成wide和deep两部分,分别得到对应的wide embedding和deep embedding

主任务CVR task
image.png

  • #card 事实转化率 + 反事实转化率公式:r^i,j,r^i,j=σ(lf),σ(lcf)\left\langle\hat{r}_{i, j}, \hat{r}_{i, j}^*\right\rangle=\left\langle\sigma\left(l_f\right), \sigma\left(l_{c f}\right)\right\rangle

=<\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的预测值。


ESM2

通过显式建模点击->转化之间的细粒度行为,进一步解决数据稀疏问题。这篇文章相比于ESMM其实没有特别多的改进,不过却是引出了微行为这一研究方向。示意图 #card

  • 加入心愿单归并为决定行为(Deterministic Action,DAction)

  • 将其余行为归并为其他行为(Other Action,OAction)

image.png

模型图 #card

  • 加入心愿单归并为决定行为(Deterministic Action,DAction)

  • 将其余行为归并为其他行为(Other Action,OAction)

image.png


Pairwise 训练

示意图 #card
image.png

[[Triplet hinge loss]] 公式 #card
image.png

[[Triplet logistic loss]] 公式 #card
image.png


双塔模型样本选择

正样本

  • 少部分物品占据大部分点击,导致正样本 大多是热门物品

    • 解决方案 :-> 过采样冷门物品,或降采样热门物品
      • 过采样(up-sampling) :-> 一个样本出现多次
      • 降采样(down-sampling) :-> 一些样本被抛弃
        为什么需要对负样本进行采样 ? #card
  • 未召回样本数量太多,需要进行采样。

  • item 特征包括:id 和 meta 特征

    • 维护全量样本的列表进行负采样内存成本高,无法接受

[[负样本]] 选择方法

  • 如何选择困难负样本 #card
    image.png

  • 简单负样本: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.

image.png

+ 混合采样

  + Mixed Negative Sampling for Learning Two-tower Neural Networks in Recommendations

  + Cross-Batch Negative Sampling for Training Two-Tower Recommenders

业务向 hard mining 方法

  • [[@Real-time Personalization using Embeddings for Search Ranking at Airbnb]]
    • 增加 “与正样本同城的房间” 作为负样本,增强了 正负样本在地域上的相似性;
    • 增加 “被房主拒绝” 作为负样本,增强了正负样本 在“匹配用户兴趣爱好”上的相似性
  • [[@Embedding-based Retrieval in Facebook Search]]
    • online#card

      • 在线一般是batch内其他用户的正例当作负例池随机采,

      • 本文提到选相似度打分最高的作为hard样本,

      • 同时强调了最多不能超过两个hard样本。

    • offline

      • 在线batch内池子太小了不一定能选出来很好的hard样本,离线则可以从全量候选里选。#card
        • 具体做法是对每个query的top-k结果利用hard selection strategy找到hard样本加入训练,然后重复整个过程。

        • 这里提到要从101-500中采,太靠前的也许根本不是hard负例,压根就是个正例。

        • 以及两个很好的经验,

          • 第一个是样本easy:hard=100:1,

          • 第二个是先训练easy再训练hard效果<先hard后easy

为什么曝光但是没有点击不能做为召回的负样本 #card
image.png

image.png


粗排

前期融合和后期融合 #card

  • 前期融合:先对所有特征做 concatenation, 再输入神经网络。

    • 线上推理代价大:如果有 𝑛 篇候选笔记,整 个大模型要做 𝑛 次推理。
  • 后期融合:把用户、物品特征分别输入不同的神经 网络,不对用户、物品特征做融合。

    • 线上计算量小:

      • 用户塔只需要做一次线上推理,计算用户表征 𝐚。

      • 物品表征 𝐛 事先储存在向量数据库中,物品塔在线 上不做推理。

粗排模型和精排相比需要考虑的问题 #card

  • 1、模型需要兼顾计算性能和效果;

  • 2、打分样本空间分布与精排不一致(精排对粗排返回的样本做排序,粗排则要对召回的样本打分)

静态分排序


@大模型强化学习之GRPO算法原理浅析

链接: 大模型强化学习之GRPO算法原理浅析 - 知乎

GRPO 方法通俗案例 #card
image.png

  • 模型回答

image.png

  • 计算Advantage结果(一个组内开始计算)

    • advantage的计算公式如下:

      • A^i,t=rimean(r)std(r)\hat{A}_{i, t}=\frac{r_i-\operatorname{mean}(\mathbf{r})}{\operatorname{std}(\mathbf{r})}

image.png

通过标准化来计算奖励,优势函数的作用是某一个输出的token的数值相对于平均输出的优劣势,#card

  • 如果某一个输出的奖励高于平均的mean数值,则结果是正的,

  • 反之低于mean,结果是负的,

  • 这样策略模型会更倾向于生成那些具有较高奖励的输出

一个GRPO算法的的大致流程如下: #incremental #card

  • 用户输入query,模型推理生成一组回答

  • 根据reward function的定义(例如准确性、格式)为每个回答计算奖励得分

  • 在整个组内进行统一对比,计算它们的相对优势Advantage(上面的公式计算)

  • 更新策略,倾向于具有更高优势的回答

  • 模型更新的同时进行KL散度的正则,防止模型学习偏了

[[GRPO]] 公式原理解析

通过不同的规则得到 reward

  • xmlcount_reward_func 格式 #card
    • 输出是否是 xml 格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 计算格式分
def count_xml(text) -> float:
count = 0.0
if text.count("<reasoning>\n") == 1:
count += 0.125
if text.count("\n</reasoning>\n") == 1:
count += 0.125
if text.count("\n<answer>\n") == 1:
count += 0.125
count -= len(text.split("\n</answer>\n")[-1]) * 0.001
if text.count("\n</answer>") == 1:
count += 0.125
count -= (len(text.split("\n</answer>")[-1]) - 1) * 0.001
return count

def xmlcount_reward_func(completions, **kwargs) -> list[float]:
contents = [completion[0]["content"] for completion in completions]
return [count_xml(c) for c in contents]
  • soft_format_reward_func #card
    • 包含特定的格式标签
1
2
3
4
5
def soft_format_reward_func(completions, **kwargs) -> list[float]:
pattern = r"<reasoning>.*?</reasoning>\s*<answer>.*?</answer>"
responses = [completion[0]["content"] for completion in completions]
matches = [re.fullmatch(pattern, r, re.DOTALL) for r in responses]
return [0.5 if match else 0.0 for match in matches]
  • strict_format_reward_func #card
    • 严格匹配?
1
2
3
4
5
6
7
8
9
10
11
12
13
def strict_format_reward_func(completions, **kwargs) -> list[float]:
pattern = r"<reasoning>\n.*?\n</reasoning>\n<answer>\n.*?\n</answer>"
responses = [completion[0]["content"] for completion in completions]
# 新增调试日志
matches = []
for idx, r in enumerate(responses):
print(f"\n--- Processing response {idx} ---")
print("Raw content:", repr(r)) # 使用 repr() 显示转义字符
match = re.fullmatch(pattern, r, re.DOTALL)
print("Match result:", bool(match))
matches.append(match)

return [0.5 if match else 0.0 for match in matches]
  • int_reward_func #card
    • 答案是否是 int 类型
1
2
3
4
def int_reward_func(completions, **kwargs) -> list[float]:
responses = [completion[0]['content'] for completion in completions]
extracted_responses = [extract_xml_answer(r) for r in responses]
return [0.5 if r.isdigit() else 0.0 for r in extracted_responses]
  • correctness_reward_func #card
    • 答案是否正确
1
2
3
4
5
6
7
def correctness_reward_func(prompts, completions, answer, **kwargs) -> list[float]:
responses = [completion[0]['content'] for completion in completions]
q = prompts[0][-1]['content']
extracted_responses = [extract_xml_answer(r) for r in responses]
print('-' * 20, f"Question:\n{q}", f"\nAnswer:\n{answer[0]}", f"\nResponse:\n{responses[0]}",
f"\nExtracted:\n{extracted_responses[0]}")
return [2.0 if r == a else 0.0 for r, a in zip(extracted_responses, answer)]

QWen

QWen

  • 输入长度:#card

    • 32k
  • 位置编码:#card

    • RoPE
  • Bias部分删除:#card

    • 对于大多数层,Qwen遵循陈卓辉等人的做法删除偏差,但对于注意力中的QKV层添加了偏差,以增强模型的外推能力
  • 激活函数:#card

    • SwiGLU
  • 优化器:#card

    • AdamW,设置超参数β1=0.9、β2=0.95和e=10^(−8)
  • [[Post Norm 和 Pre Norm 区别]] Pre-Norm:它已被证明比Post-Norm更能提高训练稳定性。

    • 这里可以看下苏建林提供的理解:#card
      • 本来残差的意思是给前面的层搞一条“绿色通道”,让梯度可以更直接地回传,但是在Post Norm中,这条“绿色通道”被严重削弱了,越靠近前面的通道反而权重越小,残差“名存实亡"。
  • RMSNorm:用RMSNorm取代了传统LayerNorm#card

    • RMSNorm为什么比LayerNorm好作者认为LayerNorm对张量所做的聚集中心化(re-centering)并不能够使梯度的方差减小,因此将均值μ=0。
  • 训练数据:#card

    • 2-3T token
  • 模型大小:#card

    • 开源了Qwen-1.8B、Qwen-7B、Qwen-14B 和 Qwen-72B

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)技术细节:未知(可能报告还没发出来)


Query改写召回

主要解决什么问题?#card

  • 通过修改用户原始查询的关键词或结构,生成多个语义相似的变体(如同义词、纠错词、扩展词等),扩大召回范围。

  • 典型场景:解决用户表达模糊、词义多样导致的召回不足问题。

这种流程与在doc侧加tag有什么优劣?#card


吾辈心中亦有惑


欢迎光临算法花园,我是 Runye,本站是我的博客 or 数字花园 or 知识库 or 训练日志。

如果有好的建议或想法,期待通过各种方式和我交流。


[[NOW]]

ChangeLog

关注领域


@I started journaling about why I procrastinate and holy crap, my productivity skyrocketed

链接:我开始记录自己为什么拖延,并且天啊,我的 productivity 突飞猛进 : r/productivity — I started journaling about why I procrastinate and holy crap, my productivity skyrocketed : r/productivity

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. 现在,我不再自责,而是开始将那些令人生畏的任务分解成更小的部分。


图1-1:DeepSeek-R1生成的完整流程

image.png
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTc0MzI1ODU1MzY2N18wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6ODUzLjM4NDgxNDg0MDkyMSwidG9wIjo4Ni42ODQ4NjM4NjA1OTUxLCJ3aWR0aCI6ODUyLjA3NDA4NzI2OTgyOTYsImhlaWdodCI6MTE4LjM2NTcyODE1MzY4NTYxLCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjE0NTcuNTYzNTUwMjAxNzkyLCJ0b3AiOjMzNS4yOTkxODEwOTk5MDczNCwid2lkdGgiOjM2Ni4wOCwiaGVpZ2h0IjoxMzQuMTU2MTY2OTgxMTY3MywiYW5nbGUiOjAsImNJZCI6Mn0seyJsZWZ0IjoxMjA1LjE4OTI3MjQyODkwODcsInRvcCI6NDY1LjQ4MjgzOTU1NzM3NzgsIndpZHRoIjo4MzQuODYxNDU2NzgxMzcyNiwiaGVpZ2h0Ijo2Ny4wMDM4MjU3MjY5Njc3NiwiYW5nbGUiOjAsImNJZCI6M30seyJsZWZ0Ijo2NzMuMzUwNzE0MDk2MDY5OSwidG9wIjo2MjcuMzc1NzA1NDU3MTg2Nywid2lkdGgiOjMxMi40OTY2NzI5MDY5NTkyNSwiaGVpZ2h0Ijo4My4wMDk5NDc2NzU1NTAxNywiYW5nbGUiOjAsImNJZCI6NH0seyJsZWZ0IjoxMjQzLjQ2NjE2NjgwNTQyOSwidG9wIjo2NjkuNTY4OTAwNTY3NzEwMiwid2lkdGgiOjQyNS4xMDU1ODgwODI5MzQ0NSwiaGVpZ2h0IjoxNDUuMjAwNDM1NTQxOTYxODQsImFuZ2xlIjowLCJjSWQiOjV9LHsibGVmdCI6MjczLjAzODM4MTMwNDgwNjIsInRvcCI6Nzk1Ljk0MDY5MzM3NzY2MDUsIndpZHRoIjo0NzMuMzczMzQ0OTk0MzIzNjUsImhlaWdodCI6MTg1LjYxMDYwNjA5Njk3OTM4LCJhbmdsZSI6MCwiY0lkIjo2fSx7ImxlZnQiOjExODYuNDI4NzU5NTg5ODY3MiwidG9wIjo4OTguNjM5NjU2NzA2NTg3LCJ3aWR0aCI6NzMyLjQzNzYwODg4MjM4ODIsImhlaWdodCI6MTgwLjA5MDI0MDQ2NzQ3OTcsImFuZ2xlIjowLCJjSWQiOjd9LHsibGVmdCI6NzAyLjcyNjA0ODUxMzU0MjUsInRvcCI6MTIyMi40MjYwOTU5NjY1NjM3LCJ3aWR0aCI6MjgwLjQwMjE3MDQ2NzY0NTMsImhlaWdodCI6OTguODM3MTE4MTk0NTI2MjgsImFuZ2xlIjowLCJjSWQiOjh9LHsibGVmdCI6MTMzOS42ODAwNTk1NTU3NDEsInRvcCI6MTMwOS42OTkyMzAxMzg4MzczLCJ3aWR0aCI6NTEyLjU2NzU0OTczNjQ0NDMsImhlaWdodCI6MjU3LjQyMDExODIzMDU2NzYsImFuZ2xlIjowLCJjSWQiOjl9XX19
1)获取DeepSeek-R1-Zero:#card

  • 通过"纯"强化学习(无任何监督数据)去生成一个新模型,即R1-Zero,然后用它生产几千+带CoT的冷启动数据,作为后续R1模型的燃料之一。

2)获取DeepSeek-R1:主要包括四个核心训练阶段(阶段1、2、3、4)和2个数据准备阶段(阶段0、2.5):

  • 阶段0 :-> 即获取DeepSeek-R1-Zero。
  • 阶段1 :-> 基于R1-Zero的几千+数据,在V3-Base上执行第一次SFT,获得基本的格式遵循和反思验证的能力。
  • 阶段2 :-> 然后执行第一次强化学习,加强模型在数学、代码、科学、逻辑推理等领域的推理能力。
  • 阶段2.5 :-> 基于阶段2的模型,获取领域更广泛的600K数据;基于V3-Base,获取包括CoT的非推理数据200K。
  • 阶段3 :-> 基于阶段2.5获取的800K数据,在V3-Base上执行第二次SFT,增强模型的通用性。
  • 阶段4 :-> 执行第二次强化学习,进一步对齐人类偏好,提升模型的可用性和无害性,并精炼推理能力。
    获取R1-Distill-X的流程,#card
  • X是指任何"其他模型",比如qwen。在800K数据的微调后,将大幅提升原模型的效果。

logseq-github-publisher

logseq 部分

  • DONE 遍历全部需要发布的文章

  • 导出文档 meta data

    • DONE 属性中字符串引号重复

    • DONE 文章属性如果重复会报错,toc

  • 文章格式转化

    • DONE Nunjucks Error expected variable end

      • 需要处理被双括号包围起来的内容

      • zotero-linked-file 也要处理

    • CANCELED 将 id 设置成文档的属性(持久化)

      • 等后面 db 版本持久化
    • 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
  • 插件配置

github 部分

  • DONE push 到 github

    • put 接口

      • 文件需要 base64 编码

      • 如果文件已经有了需要提供 sha,如果是新文件不用提供

  • TODO 发布进度

导出优化

  • 可读性差的文档

  • TODO 导出进度提示

  • TODO 增量更新最近有修改的文章

  • TODO 文件名称改变后,旧文件不会被删除。

    • 需要后面 db 版本利用page id 解决,md 版本的 page id 没有持久化
  • DONE 文件上传前对比 sha 值,出现不一样时再修改。

插件发布相关

  • TODO 写 readme

  • TODO 写赞助信息

  • TODO github action 自动编译插件

  • TODO 提交到 logseq 官方仓库

hexo 编译问题

  • 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]]

  • [[logseq-anki-sync]]

  • [[obsidian-enveloppe]]


Lesson 3B - Management Process

Lesson Goals

  • You will have some clear models of project management to use as they are or build upon

[[X - Weekly Process]]

  • 创建对应的笔记 WP:FEB11 - 18 #card
    • Overdue Tasks to Schedule

    • Weekly Goals

    • Daily Tasks

image.png

+ Weekly Summary

+ Weekly accomplishments
  • 创建 week open 模板 #card
    image.png

  • 浏览过期的任务

  • 列出 weekly goals #card

    • 移动 goals 到 Daily tasks 下对应的截止日期

image.png

  • week close 模板 #card
    image.png

[[X - Daily Process]]

[[X - Task Management]]

  • 想要做的事情 inbox 标签 vs todo

  • 不需要立即做的可以移动到特殊的笔记中,等一周结束后再评估。

  • 简单处理逻辑 #card
    image.png


Query term weighting

如query “家用的跑步机”,例子 #card

  • “跑步机”为品类词,权重最高、

  • “家用”为属性词,权重次之、

  • “的”为助词权重最低。

例: 冬季卫⾐推荐:冬季 / 卫⾐ / 推荐 #card
image.png

image.png

静态term重要性

  • 静态term重要性计算,顾名思义,term权重不随上下文变化而变化,其依赖特征多为term粒度的离线统计特征。#card

    • 比较经典的有搜索term词在语料库中的IDF(Inverse Document Frequency)、term词在搜索日志中的搜索频率、term词典规则(是否为停用词、专名词等)等。

    • 得到静态term重要性后,对query中多term的权重归一化,即可得到相应query term weighting结果。

  • 静态term重要性计算优缺点 #card

    • 特点是简单,无需复杂算法,

    • 缺点也很明显:准确率低、对上下文信息考虑不充分、长尾term效果差等。

动态term重要性

  • 主要思想是从 query整体 考虑各term重要性,主要方法则是通过特征工程得到可能对term重要性预测相关的特征,然后通过机器学习方法对term权重进行拟合,相应地可分为传统方法和深度学习方法两种。

  • 传统方法

    • 传统机器学习term重要性计算的核心在于特征工程,而经典的特征主要有统计特征、tagging特征、文本语义特征等:
      统计特征:主要包括基础统计特征和行为统计特征。query的基础统计特征包括 query长度、term长度、term在query中的位置,以及上述的term IDF值、term粒度的互信息、左右邻熵等。而行为统计特征则多依赖搜索点击日志,如:
      query中各term在query点击的doc集合中出现的频次。
      点击的doc集合中term出现频次/点击doc数。
      单term搜索次数、term在query中被搜索次数、出现当前term的query平均长度。

      tagging特征:该部分特征主要基于query tagging识别出各term类型,如电商领域中重要的tagging类型:品牌、品类、型号、尺码等,又如基础词性、句法成分等tagging信息。不同类型的term权重往往有较大差异,同样是term重要性计算的强特征。
      文本语义特征:该部分特征主要为文本和语义维度的特征,如文本层面term是否为英文、数字等,语义层面删除当前term后,源query多大程度可以保留原语义。具体的有:
      去掉各term后query的语言模型概率/query语言模型概率。
      利用深度语义相似度模型,去掉各term后的新query的模型输出和原query的模型输出相似性偏离程度。

      得到query中各term的特征后,可通过常用的机器学习模型(LR/GBDT/NN)对目标权重进行拟合。而支持模型训练的训练数据一方面可以直接来源于人工标注数据(如常见地将term权重分成若干档位),另一方面也可以通过搜索行为数据进行自动term权重打标,并通过人工审核得到最终训练数据。
      对于自动打标,可以利用上述特征工程中高准确率的统计特征(如term在命中doc中的频率占比),并根据特征值分布进行分档,对应到标注标准。而对于长尾query或term等低置信样本,则通过人工校验,得到相对准确的训练样本,避免模型对单一特征过分关注。
  • 深度学习方法

    • 在训练数据充足的情况下,也可通过深度学习直接预测term权重,在深度学习框架下,query term weighting问题对应序列标注任务,因而常用的序列标注深度模型都可以用来尝试解决term权重计算问题,如经典的LSTM、LSTM+CRF、BERT等。具体地,序列标注模型输入为term序列,对应位置的输出层接分类或回归任务进行term重要性目标拟合。

Ref


Query 改写

步骤:候选召回、改写判别

候选召回

  • 基于同义词

    • 直接通过同义词表映射对query进行改写
  • 基于行为统计

    • 核心思路 :-> 基于用户点击行为等统计信息找相似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很可能具有相同的语义。

        • 可参考word2vec或上文所述的生成模型方法

改写判别

  • 一般基于人工标注的训练数据,进行特征工程训练 二分类判别 模型,如GBDT或DNN模型等。
  • 这里以GBDT特征融合方法来介绍改写判别的一般方式,具体地,先经过特征工程得到源query和候选改写query的统计和语义相似度特征,再基于标注数据对特征进行融合,改写候选进行置信判别。除了改写召回阶段的中间特征可以直接利用外,还可进一步构造出更多的统计或匹配特征,如:#card
    • 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的映射。

Ref


Query 类目预测

基于统计

  • 用户搜索query后点击/购买商品的类目分布,可以反映出该query的类目预测分布。#card

    • 基于此,可以使用频率统计的方法(如query点击/成交频次或成交率)得到query的类目的分布,并通过拍阈值、规则过滤等方式,筛选出相对准确的query类目预测结果。
  • 除了利用点击行为,还可以进一步引入时间衰减因子和session信息:#card

    • 给近时间的行为更高的权重;短session内更换query,给最后的query点击行为更高的权重。
  • 而对于行为较少的长尾query,则可以通过其他辅助行为信息进行补充,如同session的query挖掘:#card

    • 同一个session的query往往具有相同的意图,其类目预测结果也往往一致。

    • 如果session中有头部query,则头部query的类目预测结果可以拓展到session中的长尾query。

基于内容

  • 无监督方式#card

    • 可以通过贝叶斯统计、互信息、LDA等方式从商品内容中聚合得到类目关键词及其权重,对query term按各类目下的关键词进行加权求和,得到高置信的类目预测结果。
  • 有监督方式则#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
    image.png

语义匹配特征

  • 解决问题 #card

    • 基于文本的匹配特征虽然简单,但需要严格的term匹配,而对于同一个语义的多种表述,即使引入同义词信息有时也无法很好的解决。
  • 隐语义匹配

    • 隐语义匹配的核心思想是将文本表示成隐语义向量,并通过向量距离来度量文本之间的相似度。#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

        • 经典的方法有ARC-II、MatchPyramid、ESIM、BERT等。
      • 不同方法对比 #card

        • 表示型语义匹配方法的优势在于离线和在线的分离,复杂模块离线计算,线上只需算向量距离,但相对交互型方法缺少细粒度语义信息的建模,准确率相对低;

        • 同样,交互型方法虽然匹配准确率相对高,但也伴随着线上开销大的不足,尤其复杂的BERT模型。

    • 而为了兼顾效率和准确率,也有很多折衷的方法,如:PolyEncoder、DeFormer等后融合(later fusion)方法,另一种常用策略则是模型蒸馏,如对BERT模型瘦身的DistillBert、TinyBert等。#card
      image.png

  • 多模态语义匹配

    • 多模态的语义匹配框架和基于文本的深度语义匹配基本一致,不同点在于对多模态信息的编码方式,以图文匹配为例:#card

      • 在表示型匹配架构下,通过经典的图像特征提取网络(如ResNet、Inception等)将图像提取为向量,再通过预训练或端到端的方式同文本Encoder模块表示一起进行语义匹配任务的训练。
    • 在交互型匹配方式下,常用方法是将图像信息转换为向量序列,进而像处理文本匹配一样进行图文的语义匹配。#card

      • 如经典的方案SCAN、VSRN等方法,通过Faster-Rnn等目标检测模型将图像提取为固定数量的region,region的特征向量序列作为图像的Embedding表示,进而作为多模态匹配网络的输入。
    • 基于此,近两年多模态BERT的方法也同样有不错的效果(如VL-BERT、LXMERT、UNITER等)。#card

  • 特征融合

    • 在上述相关性特征基础之上,对众多特征进行融合往往可以进一步提升相关性指标,融合模型则采用经典的LR/GBDT/NN模型即可。

    • 此外特征融合模型的训练一般使用人工标注的训练数据,同时为了标注方便可将相关性目标分为不同档位。#card

      • 如四档模式下,在训练阶段,四个档位可映射到1、0.75、0.25和0四个分位,模型则通过回归或分类的方式对分位进行拟合。

      • 由于该部分策略是对子特征的Ensemble,因此并不需要非常多训练数据,万级别基本可以满足需求。

其他

  • 相关性优化任务方法

    • 接到一个搜索场景的相关性优化任务后,首先要做的往往不是训练前沿的深度模型,而是进行系统现状分析,包括:技术现状分析和问题现状分析。#card
      • 前者需要确定现有系统在相关性上已经有了哪些策略,相应策略的准确性和影响面有多大;

      • 后者则需要通过badcase占比分析来定位头部问题,并进行优先解决。

      • 如在项目启动阶段,如果发现大部分的问题case为明显的基础相关性不足和类目不匹配,应优先建立和优化基础的匹配策略。

      • 通过简单高效的方式建立强baseline,同时保证阶段性效果提升,为后续优化奠定基础。而上述过程也往往是在效果优化的过程中不断循环往复的。

image.png

  • 训练数据

    • 数据往往决定模型的上限,相比于模型结构的选择和设计,深度匹配模型往往更加依赖大量的训练数据。而在缺少人工标注数据的积累的情况下,训练样本的构造也就变得十分重要。相应的训练数据的构造主要会面临两个问题:#card

      • 高置信样本挖掘,避免搜索点击行为日志“点击但不相关”的问题。

      • 定制化的负样本构造,避免模型收敛过快,只能判断简单语义相关性,对难样本无法很好的区分。

    • 针对以上问题,常用的方法也很多,如:#card

      • 正样本:充足曝光下高点击ctr样本(如:ctr大于同query下商品点击率平均值)

      • 负样本:

        • 同父类目的邻居子类目负采样。
          高曝光低点击类目样本:同一个query搜索下,根据全局点击商品的类目分布,取相对超低频类目样本作为负样本。
          充足曝光情况下,低于相应query平均曝光点击率一定百分比的样本做负样本。
          基于query核心term替换构造负样本:如,对于“品牌A+品类”结构的Query,使用“品牌B+品类”结构的query做其负样本。
          随机构造负样本:为增加随机性,该部分实现可在训练时使用同batch中其他样本做负样本,同时也可以引入经典的Hard Sample机制。
  • 多因子融合

    • 搜索算法最终的item排序往往是考虑多因子,而在电商搜索中比较重要的因子除了相关性因子,还有和业务直接相关的成交效率因子以及其他业务规则。

    • 简化来说,对于相关性和成交效率因子,而二者的融合方式大致有三种:

      • 相关性分数做档位分,下游根据相关性分层排序。#card

        • 分档的方式可以做到分层排序,进而多因子解耦,调试方便高效;
      • 相关性连续值score和效率score加权得到最终排序分。#card

        • 相关性和效率分加权方法相对于分层排序,则可以更加综合地考虑相关性因子和效率因子,但确定合理的权重往往耗时耗力。
      • 相关性和效率目标联合多目标优化。#card

        • 多目标联合优化的方式在点击-成交模型中融入相关性因子,由数据和模型决定最终的商品排序,不需要人工干预,但可解释性差,且对相关性进行干预相对不够灵活。

相关性定义 #card
image.png


3. 具体的 -- 架构之预估与机制

3.1 模型预估

  • ① 在模型预估发展历史上两者算法的演变轨迹几乎一致:#card
    • 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

      • 预估指标为ctr、cvr、price、用户体验分sum(poi_ord_total_amt) / count(distinct expose_uv) * 1000 as rpm 千次用户成单金额;没有抽佣的哦!
  • ② 广告的 机制 更加复杂,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算法

  • Pacing是Facebook广告系统中调节 花费预算节奏 的一个算法,一个类比就是竞跑的运动员:过早冲刺意味着在终点前就没劲了,但过晚冲刺也许你就没完成这次比赛。
    • Pacing保证对所有的广告主在竞争前提下自动分配不同的广告预算(有点像时间切片预算)。Pacing就是优化核心组件让广告主获得 :-> 最大的投资回报率(ROI)。
    • Pacing会结合当前广告的 预算及出价 ,为广告找到最佳的预算使用速率同时兼顾广告目标的完成。(点击、转化、应用安装等)
  • 简单的公式 最终竞价 (每次展示) = 优化竞价 (每次展示)* CTR where 优化竞价 <= max_bid
    • 从上面例子中,当我们在整段时间内使用稳定的出价(Pacing),广告主的价值相比没有Pacing或者出价过高过低,得到了 最大化
      • 为了实现目标,Pacing期望通过 学习其他的有同样目标用户的竞争广告 ,提出一个优化的竞价。
    • 决定优化竞价 的是Pacing算法的核心,包括反馈系统让Pacing记录下来。CTR是点击率。我们使用相同理念来看 查看率(VTR)和转化率(CVR)。这些值的精确性会稳步提高,也受各种因素影响,比如广告类型,受众,时间点,广告上下文等。
  • Pacing的重要性 #card
    • Pacing在给定预算下最大化广告主的利润。

    • 它让广告主更加真实,和Vickrey–Clarke–Groves (VCG通过计算一个广告主参加拍卖给别的广告者带来的损失之和来定价的) 拍卖,这里面欺骗价值没有任何好处,也没有必要去想最大竞价应该设多少。

    • 如此可以避免拍卖系统中的特殊机会。

3.3.2 预算控制(Budget Pacing)

  • 媒体流量比较大,广告主预算消耗过快,有些中小广告主甚至在开始投放的几分钟内就把预算消耗完。这会导致广告主早早退出后续流量的竞争,不仅会影响广告主体验(无法触达到更多的优质用户),也导致整个广告不平稳(竞争都集中在早期,而后期又竞争不足);预算控制(Budget Pacing)的作用就是平稳花掉广告主的预算,并帮助广告主优化转化效果。所以我们预算控制要完成如下目标:#card
    • ① 广告匀速播放:通过广告日预算、当前消耗以及日曝光曲线来控制广告投放速度

    • ② 提升广告主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

想法

  • 主要是工程实践经验,完全覆盖搜广推系统的方方面面。如果没有遇到过相关的问题,看起来完全是天书。当成是手册查询吧。

Large Ranking Models

Training scalability

  • [[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

Experiments

  • [[5.1. Incremental Learning]]

    • 两个场景增量学习效果
  • [[5.2 Feed Ranking]]

    • 通过 replay metric 评估 3 中策略的效果
  • [[5.3 Jobs Recommendations]]

  • 5.4 Ads CTR

    • 效果 #card
      • 基线 GDMix model

image.png

6 Deployment Lessons

  • 6.1 Scaling up Feed Training Data Generation

    • 没太看明白,感觉是优化性能实现用 100% sessions 进行训练
  • 6.2 Model Convergence

    • [[DCNv2]] 初始训练不收敛 #card
      • 对数值输入特征应用批量归一化,在当前训练步数下存在欠拟合,但是增加训练步数会导致实验速度下降。

      • 增加 warm-up steps 稳定训练,且可以使用三倍学习率


@漫谈"搜推广"之推荐和广告算法异同

漫谈"搜推广"之推荐和广告算法异同 - 知乎

  1. 宏观上–广告与推荐业务目标不同:
  • ① 推荐算法本质上是解决 用户体验 的问题

  • ② 广告(“广而告之”谓之广告)算法,不仅要满足用户需求,更多的是需要平衡广告主、用户和广告平台三者之间的利益关系,较多的考虑广告主的推广诉求。再直白一些:#card

    • 广告算法的目标是为了直接增加公司营收,这也是一切互联网产品的本质(无论是BAT/TDM还是号称永远免费的360)–天下没有免费的午餐。
  • ③ 策略差异大但预估模型同源 #card

    • :A. 推荐算法和广告算法在一些策略特别是机制方面差异性很大;

    • B. 但两者在常规的预估模型算法又非常相似。

    • 推荐算法虽然本质上虽然也是为了增加公司收入,但其直接目标是为了增加用户的参与度。比如博客《多场景多业务建模》所提到的方法,既适用于推荐又适用于广告。

[[2. 微观上-- 新闻资讯Feed流 VS 电商Feed流中的(推广商家)广告]]

[[3. 具体的 – 架构之预估与机制]]

  1. “推广”小结
  • 4.1 “推广”异同#card

    • ① 本文对广告和推荐在多个方面进行了阐述,二者的优化目标不同,涉及的利益群体不同,面临的约束也不同。

    • ② 对于CTR预估这一块,两者的迭代思路或演进路线,基本一致;对于机制策略这一块,两者差异非常大。

  • 4.2 “推广”面临的挑战 #card

    • ① 广告算法的问题更加琐碎,各模块协同工作找到平台全局利润最大化方法的难度非常大,系统异常复杂到难以掌控的地步!

    • ② 推荐算法这边,问题往往卡在长期利益与短期利益的平衡上,在模型结构红利消失殆尽的今天,如何破局!


MLA 引入 RoPE

由于RoPE的存在导致前文所说的上投影矩阵不能直接合并成一个,中间隔着一个旋转编码矩阵:#card
image.png

DeepSeek的解决方法是,直接在原有 q,kq, k 后拼接 dhRd_h^R 维的位置向量,计算过程为:#card
image.png

前段时间,笔者也很荣幸跟DeepSeek团队讨论过这个问题,但这个问题可以说非常本质,所以当时笔者实际上也没能提出什么有效的建议。最简单的方式是放弃RoPE,换用其他基于Attention Bias的位置编码,如ALIBI,但DeepSeek的实验显示它明显不如RoPE(注意,MLA不是不能加RoPE,而是加了RoPE之后无法用恒等变换技巧来减少KV Cache),笔者也提议过换Sandwich,它不像ALIBI单调衰减到负无穷,估计效果会好些,但感觉是治标不治本。#card
image.png

最后发布的MLA,采取了一种混合的方法——每个Attention Head的Q、K新增 #card
image.png


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

      • 并行预估多个token,可提升推理速度

共享 Transformer 的主网络,接入 4 个并行预估头,然后输出
image.png

  • 主干网络就是训练好的decoder-only的多层Transformer的网络,#card

    • tt 个输入token xt:1=xt,,x1x_{t: 1}=x_t, \ldots, x_1 经过主干网络计算,最终输出隐层表示:zt:1z_{t: 1}(来自于 xt:1x_{t: 1} 编码结果)。

    • zt:1z_{t: 1} 上面接了多输出Head,每个Head负责预估一个token, Head1{ Head}_1 负责预估 next token, Head2\mathrm{Head}_2 负责预估 next next token,以此类推

  • Head 是一个Transformer层(包括 MHA+2层FFN),#card

    • 且每个Head的Transformer层是独立的,非共享的,经过这层处理后的结果记作:fhi(zt:i)f_{h_i}\left(z_{t: i}\right)
  • 最后再将 fhi(zt:i)f_{h_i}\left(z_{t: i}\right) 送入到词表投影层( fuf_u 包括1个投影矩阵+1个Softmax),预估每个词的概率分布。#card

    • 最终通过某种采样方法(如:greedy,beam search等)生成token。

    • 注意,这个词表投影层是原预训练网络(original model)的投影矩阵+Softmax,多Head是共享的。

[[@deepseek技术解读(2)-MTP(Multi-Token Prediction)的前世今生]] 重新画图
image.png

  • 和 [[Blockwise Parallel Decoding for Deep Autoregressive Models]] 区别#card

    • 图2是2层FFN, 图6是一个Transformer

    • 图6 除了可按图2方法一样可做并行推理,本文也重点考虑模型加速训练的优化,在模型训练时,多个头都会并行计算loss时,提升样本利用效率和加速模型收敛。


为什么要做MTP

针对token-by-token生成效率的瓶颈,业界很多方法来优化,包括减少存储的空间和减少访存次数等,进而提升训练和推理性能。

  • 本文要学习的MTP方法,也是优化训练和推理效率的一个分支系列。

核心思想:通过解码阶段的优化,将1-token的生成,转变成multi-token的生成,从而提升训练和推理的性能。具体来说,#card

  • 在训练阶段,一次生成多个后续token,可以一次学习多个位置的label,进而有效提升样本的利用效率,提升训练速度;

  • 在推理阶段通过一次生成多个token,实现成倍的推理加速来提升推理性能。


Group Relative Policy Optimization

核心思想 :-> 对于每个问题,从旧策略中采样多个输出,然后根据这些输出的奖励来优化新策略。
GRPO的结果监督 #card

  • 对每个问题 qq ,从 πθold \pi_{\theta_{\text {old }}} 中采样一组输出 {o1,o2,,oG}\left\{o_1, o_2, \ldots, o_G\right\}

  • 用一个奖励模型评估得到 r={r1,r2,,rG}\mathbf{r}=\left\{r_1, r_2, \ldots, r_G\right\} ,然后对这些奖励进行归一化。

  • 结果监督就是基于归一化的奖励计算:A^i,t=rimean(r)std(r)\hat{A}_{i, t}=\frac{r_i-\operatorname{mean}(\mathbf{r})}{\operatorname{std}(\mathbf{r})} ,从而通过目标式(2)进行优化。

GRPO的过程监督:

  • 过程监督是对推理的每一步都进行评估,因此奖励模型的评估输出为#card

    • R={{r1index(1),,r1index(K1)},,{rGindex(1),,rGindex(KG)}}\mathbf{R}=\left\{\left\{r_1^{i n d e x(1)}, \ldots, r_1^{i n d e x\left(K_1\right)}\right\}, \ldots,\left\{r_G^{i n \operatorname{dex}(1)}, \ldots, r_G^{i n d e x\left(K_G\right)}\right\}\right\}

      • 其中 index(j)\operatorname{index}(j) 表示第 jj 步结束的token index,

      • KiK_i 是第 ii 个输出的总步数,

    • 同样的进行归一化有 r~iindex(j)=riindex (j)mean(R)std(R)\tilde{r}_i^{i n d e x(j)}=\frac{r_i^{\text {index }(j)}-\operatorname{mean}(\mathbf{R})}{\operatorname{std}(\mathbf{R})}

  • 然后计算每个token的优势函数为:#card

    • 对该token之后的step的归一化奖励进行求和,即 A^i,t=Σindex (j)tr~iindex(j)\hat{A}_{i, t}=\Sigma_{\text {index }(j) \geq t} \tilde{r}_i^{i n d e x(j)}

GRPO 的整体过程如下图所示 #card
image.png

πθ(oi,tq,oi,<t)\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right) 公式中的 t 是对应token-level优势,即一个句子中,每个token对应的 优势 是一样的
1Gi=1G1oit=1oi\frac{1}{G} \sum_{i=1}^G \frac{1}{\left|o_i\right|} \sum_{t=1}^{\left|o_i\right|} 中的 G 和 o 理解 #card

  • 1G\frac{1}{G} 的意思是一个query生成的一个组的回答个数,最终需要取平均,

  • 1oi\frac{1}{\left|o_i\right|}表示的是对每一个生成的回答所有的token进行求平均

clip 作用 #card

  • clip策略限制了 πθπθold\frac{\pi_\theta}{\pi_{\theta o l d}} 之间的比值,通过将比值限制在 [1ε,1+ε][1-\varepsilon, 1+\varepsilon] 之间,防止新策略相对于旧策略的数值有较大的更新变动

  • clip机制确保策略更新处于控制范围内,稳定性更强,收敛性更好,确保模型训练过程中的稳定性和效果

KL 散度正则化的作用 #card

  • KL 散度主要是为了衡量当前新策略 πθ\pi_\theta 和参考策略 πref\pi_{r e f} 之间的分布差异,β\beta 表示的是惩罚系数,目标是为了限制 πθ\pi_\thetaπref\pi_{r e f} 偏离太远

  • DKLD_{K L} 变大时,惩罚增加,迫使策略更新更加保守,不要偏离太远

  • β\beta 系数控制正则化强度,β\beta 变大的时候,表示在原有的优势上增加惩罚,让模型更新幅度变小,更加保守


图4-1解:GRPO公式解析

image.png
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTc0MTM1MTg5Nzc2NV8wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6MTA4NS45MzE3MTc0OTA0MDksInRvcCI6Njg0Ljc4OTgxMzk5MzgwMzEsIndpZHRoIjo2MjIuNTAwMTAyNzg0MDY4MywiaGVpZ2h0IjoxMjQuMjQ2MjIwNTQ0NzM2MzksImFuZ2xlIjowLCJjSWQiOjF9LHsibGVmdCI6MTA0Mi40NzQwNjE5NDQyNjk0LCJ0b3AiOjg1NC40MTM1MjE3NzQzMDgsIndpZHRoIjo2NzkuNDI1Nzk4MDk4Mjk5LCJoZWlnaHQiOjE1OC4zMzQyMTMzODQwNzc1NCwiYW5nbGUiOjAsImNJZCI6Mn0seyJsZWZ0IjoyMzguNTExMzg3NjQ0NDc2MDYsInRvcCI6NDEyLjEyMTQ5ODM4OTk1MjkzLCJ3aWR0aCI6NDMxLjMyNzE0Nzk4OTc2MTU2LCJoZWlnaHQiOjE2OS41ODAwNzI2NDQ4MjQwNywiYW5nbGUiOjAsImNJZCI6M30seyJsZWZ0IjozODUuMzc3MzE1ODk2NzEyMSwidG9wIjo3OS42MjEyODk5NTY4ODE4NSwid2lkdGgiOjcwMC43MzM2MzIyMDY0MjU3LCJoZWlnaHQiOjkxLjI0MzAyNDU3MDk4MTg1LCJhbmdsZSI6MCwiY0lkIjo0fV19fQ==


CVR 去偏

并行多任务模型 [[ESMM]] [[ESM2]]

image.png

+ 核心思想 :-> 并行多任务模型(例如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)$ 。

多门的多任务学习模型 (例如:Cross Stitch、MMOE、PLE、MOSE、AITM)

image.png

+ 核心思想、优点 :-> 多门(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]] 因果推断相关第一篇

    • 这篇文章聚焦于由 非随机缺失(MNAR) 带来的样本选择偏差(SSB)。具体产生问题的原因 #card
      • 现有方法将曝光空间->点击空间中丢弃的样本视为随机丢失。

      • 一般点击、转化率比较高的样本才能进入点击空间,因此只考虑点击空间会导致CVR预估值比曝光空间的CVR预估值高。

      • 这篇文章从因果角度进行 CVR 估计(去偏),并解释了非随机缺失的原因。

  • [[ESCM2]]

    • [[用IPS实现CVR建模]]

image.png

    +  **点击倾向性(点击率)偏高**  的样本更容易进入到点击空间。
    + 因此为了消除  **点击事件上点击倾向性(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去偏现状]]


@PPO与GRPO中的KL散度近似计算

PPO与GRPO中的KL散度近似计算 - 知乎

标准 [[KL Divergence]] 计算公式 KL(qp)=xq(x)logq(x)p(x)=Exq[logq(x)p(x)]K L(q \| p)=\sum_x q(x) \log \frac{q(x)}{p(x)}=\mathbb{E}_{x \sim q}\left[\log \frac{q(x)}{p(x)}\right]

  • 在实际计算中,直接计算 KL 散度可能非常困难,主要原因如下:#card
    • 需要对所有 x 进行求和或积分,计算成本高。

    • 计算过程中可能涉及大规模概率分布,导致内存消耗过大。

[[K1 估计器]] 计算公式 :-> k1=logq(x)p(x)=logrk 1=\log \frac{q(x)}{p(x)}=-\log r

  • 为什么是 KL 的无偏估计 #card

    • E[k1]=Exq[logq(x)p(x)]=KL(qp)\mathbb{E}[k 1]=\mathbb{E}_{x \sim q}\left[\log \frac{q(x)}{p(x)}\right]=K L(q \| p)
  • K1 估计器的方差较大,因为 #card

    • q(x)<p(x),k1q(x)<p(x), k 1 可能为负值,导致估计值波动大。

    • p(x)p(x)q(x)q(x) 差异大,k1k 1 可能出现较大的数值变化。

[[K2 估计器]] 公式 :-> k2=12(logp(x)q(x))2=12(logr)2k 2=\frac{1}{2}\left(\log \frac{p(x)}{q(x)}\right)^2=\frac{1}{2}(\log r)^2

  • K2 估计器是 有偏估计,但其方差较低,且 偏差在实证中较小,因为:#card
    • K2 确保所有样本的值都是正数,使其在计算中更加稳定。

[[K3 估计器]] 公式 :-> k3=q(x)p(x)1logq(x)p(x)=(r1)logr=(r1)+k1k 3=\frac{q(x)}{p(x)}-1-\log \frac{q(x)}{p(x)}=(r-1)-\log r=(r-1)+k 1

  • K3 估计器也是 KL(qp)KL(q \| p) 的无偏估计。证明如下:#card

    • 已知:E[k1]=KL(qp)\mathbb{E}[k 1]=K L(q \| p)

    • 我们只需证明:E[r1]=0\mathbb{E}[r-1]=0

    • 即:E[r]=1\mathbb{E}[r]=1

    • 展开计算:E[r]=Exq[p(x)q(x)]=q(x)p(x)q(x)dx=p(x)dx=1\mathbb{E}[r]=\mathbb{E}_{x \sim q}\left[\frac{p(x)}{q(x)}\right]=\int q(x) \cdot \frac{p(x)}{q(x)} d x=\int p(x) d x=1

  • K3 估计器恒大于等于 0。证明如下 #card

    • 设函数:f(x)=x1logx,(x>0)f(x)=x-1-\log x, \quad(x>0)

    • 求导数:f(x)=11xf^{\prime}(x)=1-\frac{1}{x}

    • 0<x<10<x<1 时,f(x)<0f^{\prime}(x)<0 ;当 x>1x>1 时,f(x)>0f^{\prime}(x)>0 。即,f(x)f(x)x=1x=1 处取最小值,且:f(1)=11log1=0f(1)=1-1-\log 1=0

    • 所以,对于任意 x>0x>0 ,均有:f(x)0f(x) \geq 0

PPO 算法中的 KL 近似计算#card
image.png

在 GRPO(Generalized Reinforcement Policy Optimization) 算法中,KL散度是显式融入到损失函数中,近似计算采用的是 K3 估计器,如下所示:#card
image.png


@DeepSeek中的强化学习:GRPO与RL统一视角

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,推理过程中的奖励信号不一定准确,推理过程中奖励高不代表结果正确


DeepSeek 学习

原始论文

  • [[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学习之前,先进行多阶段训练和冷启数据学习,并且进行模型蒸馏来提升小模型的推理能力。

[[LLM 中强化学习讨论]]

MTP [[Better & Faster Large Language Models via Multi-token Prediction]]

  • [[为什么要做MTP]]

  • [[MTP 损失函数]]

  • [[MTP 节省内存实现]]

  • [[为什么 MTP 是 work 的?]] 从两个角度进行了说明MTP向前多预估几个token有助于学习序列中的"关键决策点"。

    • [[Multi-token prediction loss assigns higher implicit weights to consequential tokens]]
  • [[DeepSeek MTP]]

    • [[DeepSeek MTP 模型推理过程]]

    • [[Deepseek MTP 训练前向推理例子]]

  • 参考文章

    • [[@Multi-token prediction 多词预测]]

    • [[@deepseek技术解读(2)-MTP(Multi-Token Prediction)的前世今生]]

    • DONE [[@DeepSeek中的Multi-Token Prediction]]

    • [[@Deepseek-v3技术报告-图的逐步解析-3-不容易看懂的MTP-公式有拼写错误]]

[[LLM开源大模型汇总]]

[[LLM 中的 Attention]]

[[MoE]]

  • [[DeepSeekMoE]] 架构

  • [[@MOE介绍及其LLM方案整理]]

Ref


@召回源是否应该作为特征加入排序模型中?

关于一个特征a该不该加入排序模型中,可以用一个非常一般的准则来判断 :-> p(y|X,a)是不是平稳(不变)的

  • 其中y是预测目标,X是已有的其它特征。如果忽略a和X的相关性,则可以进一步简化为 p(y|a) 是不是平稳的。
  • 考虑召回通道会存在增减、每个召回通道的效果自身也在迭代,p(y|a)应该不满足这个准则,所以 不应该 加入排序模型。

中国的朝代更替

id:: 67cc016a-a71b-49e4-ace4-e973e013b68d

中国与西方最大的不同,是历次革命都要推倒重来,革命总是伴随着血琳琳的屠杀和破坏,无论是财富还是文化。#card

  • 每次建朝人民都要从一穷二白做起,所以才说中国人民苦难深重,几千年的历史,居然没有什么积累,有的只是统治者根深蒂固的帝王思想世代传承。

  • 从项羽焚烧阿房宫到近代的破四旧,革命的都非常彻底,人民洗脑也非常彻底。所以帝国时代才能够一直延续。西方人贪婪对财富是占有和继承,东方人重义轻利所以破坏焚烧和屠杀。

  • 西方的大革命产生了资产阶级新贵阶层,然而当时却不为普通群众接受,尽管他们有钱有势,但是却得不到群众的尊敬,直到资产阶级新贵们捐钱捐物,为群众做了大量的善事之后,才得到人民的认可。

而我们这个时代产生的新贵却太多的为富不仁。

  • 而中国古代的乡村,通常族长就是村子里的大地主,族长是非常重视名胜的,一个族长必须有足够的威望,象修桥补路,借无米下锅的族人粮食,都是族长份内的事。#card
    • 去徽州旅游的人都知道,道路、桥梁等公益设施无不是富商修建。

    • 古人不但讲个人声望,还讲积阴功。

    • 假设你去贵州的深山中旅游,发现山径上常常有个亭子,不但有坐的地方,还有水井或者用水管从山上引来的泉水供路人休息。这都是周围的村里人为积阴功修建的,绝非政府投资。

    • 时值社会主义的今天,反而一切行善积德的事都不讲了,全民金钱至上。没有文化建设的民族是悲哀的。


历史总是惊人的相似

汝爱之罪:

  • kkndme: 赞赏这一句,呵呵,历史规律是不变的,变化的只是时间、地点、人物、事件。

  • 城头变换大王旗。

tjOOSAN: 历史规律是不变!但他妈世界变了!~~ 中国采用资本主义制度了.还只参考中国历史?

  • kkndme: 你知道什么叫资本主义制度吗?

    • #card 首先基础是三权分立。
      • 早在1748年,孟德斯鸠男爵发表了伟大的划时代的巨著“论法的精神”明确提出了三权分立。奠定了资本主义制度的基础。三权分立制度就是国家的立法、行政、司法三权分别由三个机关独立行使,并相互制衡的制度。讲的是法律精神,讲得是私人财产神圣不可侵犯。

      • 而作为一个人治而非法制国家,怎么能说是资本主义呢?

  • 建议个别(tjOOSAN)不读书,不研究,不了解中西方历史,不懂经济,对社会制度基本的理解基本是个白痴的同志,就不要乱发表议论了,惹人笑话。#card

    • 无论是中国还是西方历史对现在都是很有借鉴意义的。

    • 这就使毛说过的“古为今用,洋为中用”,毛建的武装斗争及建国思想其实很大程度来自于朱元璋。

  • 古代君主统治国家征服世界靠战争武器,现在则靠 金融武器 。#card

    • 西方,我们所熟悉的具备最纯正贵族血统的哈布斯堡家族,曾经的德意志王国和神圣罗马帝国的统治者,家族成员曾经统治过欧洲诸国:包括波希米亚王国 、匈牙利王国 、克罗地亚及斯洛文尼亚王国、伦巴第及威尼斯王国 、奥地利皇室领地 、萨尔茨堡公国 、塞尔维亚及塔米斯-巴纳特公国等等无数欧洲国家。

    • 而现在,哈布斯堡家族控制着华尔街,继而通过华尔街控制着全球的经济。

  • 历史是在继承的前提下发展的,特别是在西方,现在几乎每一个显赫的家族都能追根溯源。因为尽管西方也发生大革命,但是象文革一样彻底否定历史是完全不可思议的。#card

    • 我们有点英雄情结的人听到最多的西方中世纪十字军三大骑士团:圣殿骑士团、条顿骑士图案、医院骑士团;直到现在仍有两大骑士团存在。

      • 条顿骑士团总部现在还在德国,专门从事慈善事业。

      • 医院骑士团后来改名为马耳他骑士团,也就是现在的马耳他,世博会还来上海参展。

      • 只有圣殿骑士团灰飞烟灭,但现在仍有大量的修士组织自称为圣殿骑士团的继承人。

    • 完全不懂历史,就等于完全不懂得社会。


通货膨胀的形成原因

我爱的飞飞:

  • 在谈谈通膨是怎么形成的。生产资料是有限的,生产资料其实一直都没有变,而货币只是一种虚拟附加值而已。#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

    • 有心无力的事情不是不可能发生。共同富裕其实是一种美好愿望,因为人与人的竞争天性,不可能人人平等,只要有人还想凌驾于其他人之上,就永远不可能GC主义。

任何社会都是这样的形态,忍无可忍-革命-平稳-不满足-垄断与剥削-改革-改革失败-再次忍无可忍。为何历史反反复复如此?就是因为人的劣根性,因为人性的贪婪。所以周而复始而已。#card

  • 人性的贪婪决定了社会进程,刚开始穷人只想平均,从富人手中夺取生产资料,当革命之后,穷人开始不满足于仅仅是平均,穷人想要凌驾于其他人之上,想变成富人,于是利用革命占有的各种手段获取利益,最终变成了富人,被凌驾的穷人再次想通过变革改变自己的地位。。。。如此循环。。。

生命力和生命力的捕获

您是什么时候关注到“生命力”这一说法的?为什么决定研究生命力?

  • “生命力”是个常用的汉语词汇,以前我们经常用这个词去强调 一种生理上的能量 ,比如形容一株植物很有生命力、爬山的老人很有生命力等等,但我们一般不会这样来描述自己。后来我听到一些年轻人讲自己的生命力萎缩、崩塌、干枯……我注意到这是一个比较新的说法,而且听的人马上会被打动,说明这种说法的唤醒性很强。年轻人多次用“生命力”来表达 自己的体感 ,同时它本身描述的就是一种总体性的生存方式,这就是一个新的感知和意识。

  • 这个意识从哪里来?#card

    • 有次一个学生和我聊天说,我们学生为什么不拿工资。这让我想到,学生来学校真的是接受知识的吗?

    • 学生感到自己不是在接受知识,而是像工厂工人一样完成任务,既然做任务都得付钱,那为什么不付钱给我?学校和教育系统不是在供给知识,而是好像在吸收一个什么东西。

    • 我想这个就是生命力。学生来学校提供生命力的消耗,去生产分数、生产成绩。

  • 不只是教育系统,其他地方还存在广泛意义上的“生命力捕获”。我用生命力这样很接近体感的概念,来解释 我们的生活和对生活的意识
    生命力和生命是什么关系?

  • 生命力和生命的差别比较学术化。#card

    • 在日常生活里,生命的消失就是整个人都死了,

    • 生命力的消失就是觉得无意义、空洞、没劲,然后抑郁,甚至自杀。

  • 生命力的捕获和[[生命政治]][1]有关,但我无意在此强调它们之间的联系。#card

    • 生命政治是要描述一种统治形态,生命力则是不可以对象化的。生命力是你可以感受到的,而且只有你能感受到,外界的权力当然会影响你的生命力,但很难直接触及到你的生命力。

    • 我的出发点不是对权力变化做一个谱系的研究,我主要想讲的是个体的意识——个体意识到今天社会当中、生活当中的问题之后,要怎么办,怎样再往下想、往下探索,怎么继续往前走。所以,我说的生命力是主体的一种经验和感受,而不是从外在的制度设计的权力的角度去看。

[[通过日常生活中最典型的三个例子来理解生命力]]
什么是“间隔”?它和反思有什么区别?

  • 间隔跟反思有关,但有些反思是没有间隔的。#card

    • 其实人们一天到晚都在反思,在想领导为什么这么看、我应该怎么办之类的,在一根筋上在想这个问题,越想越复杂,就成了一个死循环。

    • 他纠结:领导让他干,他不太愿意干,但又不得不干,如果不干领导会怎么说……反复地自己揣摩、解释,这也是一种反思,但问题就在于没有间隔。

  • 间隔强调 有一个距离 ,有间隔感之后,很多时候你可能不想去反思它,而是觉得这个事就到此为止,我还有别的事要忙。这就是一种保全生命力的办法。
    生命力是怎么被捕获的?

  • 工厂捕获劳动力的方法 #card

    • 拉长劳动时间,后来有了8小时工作制就不管用了;

    • 加强劳动程度,比如流水线等等。

  • 生命力的捕获 #card

    • 包括体力,但它还包括注意力、精力、意义形成过程等方面。

    • 在互联网时代,人们生产的很多东西不是有形的,也不是明显可以计件的,不能通过时间来控制,比如一个人可能坐在办公室,其实在想别的东西。

    • 但是,我们实际看到的情况是很多人下班了还在工作,工作时间可以通过在家办公这种方式无限延长。

    • 所以生命力捕获比劳动力捕获的范围更宽,这跟现在技术条件、新的经济结构有关。

生命力的捕获跟劳动力的捕获还有个很重要的区别

  • 劳动力捕获产生 异化劳动异化 产生 批判性意识 。#card

    • 当工人被异化,他会觉得生产得越多越觉得没劲,在工厂里像行尸走肉,只有停止工作才会有战斗力。

    • 当他意识到生产出来的东西都是压迫自己的时候,就会开始有反思,就会有政治学习、集体罢工,会组织游行、组建政党。

    • 所以异化可能成为解放的开始。

  • 而生命力捕获没有这一点。#card

    • 很多年轻人也说异化,说我自己在这里就像一个机器,但意识到这些之后,他们会陷入一种很无力的感觉。
  • 这种区别跟意识和行动的间隔有关。

    • 19世纪的工人有上班下班时间的区分、有城郡附近、有家庭关系,他们的间隔可以很快填充起来。#card

      • 工人阶级的形成也跟他们住的地方有关系,比如英国的工人在酒吧里面可以讨论政治问题。

      • 他们作为人的意识,和作为一个操作简单任务的工人角色之间的间隔越来越松,间隔就成为一个政治化自我解放的空间。

    • 但在今天生命力捕获的情况下,人很难产生间隔。#card

      • 我们把自己定义为一个学生、一个白领、一个受尊重的律师,继而整个时空的安排不让我们拥有一个间隔。

      • 我们没办法跳出来,站在这个事情的外面,思考自己如何作为一个完整的人。


王树森@推荐系统

链接:GitHub - wangshusen/RecommenderSystem

2. 召回 retrieval

  • [[ItemCF]]

    • 用户最近感兴趣的物品列表

    • 找到列表中物品最相关的 topk 物品

  • [[Swing]] 给用户设置权重,解决小圈子问题

    • 重合度计算方法 #card
      image.png

    • 引入重合度计算两个物品相似度的方法 #card
      image.png

  • [[UserCF]]

    • 判断用户相似度的方法 #card

      • 多少喜欢的笔记是重合的

      • 多少关注的作者是重合的

    • 预估用户对物品兴趣的方法 #card
      image.png

  • [[Approximate Nearest Neighbor Search]]

  • [[双塔模型召回]]

  • [[Deep Retrieval]]

    • 思路 :-> 把物品表征为路径(path),线上查找 用户最匹配的路径
    • [[Deep Retrieval 和双塔召回的区别]]
  • [[地理位置召回]]

  • [[作者召回]]

  • [[缓存召回]]

  • [[曝光过滤]]

3. 排序 Rank

  • [[多目标排序模型]]

  • [[为什么需要做校准]]

  • [[MMoE]]

    • [[极化现象]]
  • [[融合公式]]

    • [[融合公式例子]]
  • [[视频播放建模]]

  • [[排序模型的特征]]

  • [[粗排]]

4. 特征交叉模型

  • [[FM]]

  • [[深度交叉网络]]

    • [[交叉层]]

    • [[Cross Network]]

  • [[DCN]]

  • [[DCNv2]]

  • [[LHUC]]

  • [[SENet]]

  • [[Bilinear-Interaction Layer]]

5. [[行为序列建模]]

  • [[DIN]]

    • [[DIN 有效原因]]
  • [[SIM]]

6. [[推荐系统中的多样性]]

  • [[Maximal Marginal Relevance]]

  • [[DPP]]

    • [[DPP:数学基础]]

7. [[物品冷启动]]

  • 优化全链路(包括召回和排序)

    • [[冷启动召回]]

    • [[Look-Alike人群扩散]]

  • [[物品冷启动:流量调控]] 解决 **流量怎么在新物品、⽼物品中分配 **

  • [[物品冷启动:AB测试]]

8. [[涨指标的方法]]

  • [[推荐系统的评价指标]]

@搜推算法常见面试问题第一期:序列建模

1 序列都有哪些组织方式,序列哪些特征是重要的?如何判断新增序列的有效性及收敛情况?如果实际序列小于最大长度,如何padding是最合理的?#card
2[[搜推算法的序列建模需要做self-attention吗?]]
3⃣️ 长序列在什么场景下提升会更大?长序列一般的建模方式有哪些?#card

  • 长序列在任何场景的提升都很大吧。。。重要资源够,

  • 长序列的方式有硬建模sim和soft的方式,

    • sim就是舍弃序列中和打分商品类目不一样的商品,缩短序列长度减少计算量,

    • soft的方式有很多fancy的论文,比如eta,cta

4⃣️ 在Attention计算的过程中,Mutli-head机制起到了什么作用,能否举例说明?#card

  • Multihead主要起到了把商品表征映射到高维空间,再在高维空间做切片(对齐语义)后根据相似度做聚合的作用

5⃣️ 序列建模在用户冷启场景下,没有用户行为有什么好的解决办法吗?#card

  • 对于大体量的工业界日志来说,用户id的embedding映射可能是多对一的,理论上可以缓解一定冷启动问题

6⃣️ 相对NLP/CV等任务通常多层Transformer的堆叠,搜推往往只有一层,为什么这么操作?#card

  • 搜推还是主要考虑打分商品和序列商品的相似性计算吧,而不是序列里商品之间的交互

7⃣️ 序列建模与GNN有什么区别?序列做宽/深分别在什么场景下收益比较大?#card

  • 序列和gnn的区别,不会,序列感觉是又宽又深最好,搜索场景宽(长)一点好吧,因为要根据query从序列里面取,长度越长,能覆盖的query越多吧

做Target Attention的时候如果KV只使用部分序列的特征有什么优劣?#card

  • target attention是q去和k match,再去乘 v的值,q和k只用部分特征会导致match的不够准吧,v只用部分特征会导致只提取序列里一部分的兴趣

9 [[序列建模可以建模联合概率吗]]?即P(target|trigger1,trigger2)#card

  • 条件概率:自回归或者上下文编码捕捉条件依赖

  • 联合概率本质是通过链式法则分解为多个条件概率的乘积

10 序列建模与传统的协同过滤在建模上的优劣分别有哪些?#card

  • 序列建模可以用在排序里,输出做dnn的输入,cf只能计算相似度,表征太单调,只能做召回

“尸体暖暖的” 代表着期待活过来

为什么我们经常听到现在的学生说生命力被压抑、被消耗,但同时年轻一代似乎又呈现出一种看起来更张扬、更自我、更清醒的面貌?

  • 生命力被剥夺不意味着 自我意识被剥夺 #card

    • 年轻人可能自我意识很强,甚至过度,但有了一个强大的自我意识之后,还是需要间隔,要梳理自己跟这个世界具体的关系是什么。

    • 年轻人感受到生命力的消耗,所以反击的时候会有一种非常绝对化的姿态,因为他觉得整个世界在压迫我,但我可以很强大、很特殊。

    • 躺平、摆烂也有激烈。如果这种判断做得比较绝对,听起来就很清晰,但它在实践中不太有效,因为他们要面对的情况是很复杂的。

    • 激烈的语言和行动(作为反击的表现),是生命力被剥夺的一个重要特征

  • 有时会听到年轻人说,整个世界都是一场骗局、让世界毁灭吧,甚至还有 “人生的分水岭是羊水”、“子宫彩票” 等等这些宣言,我觉得这都是因为他们 抽象的自我意识很强 ,接着对世界做了一个总体性、阶段性的判断。

    • 像 “子宫彩票” 这种意识本身是不成立的,出身其实没有那么大的决定权,但在实际生活中我们往往把社会想像成铁板一块,感觉到铁板在压制我们。压迫感当然是存在的,所以我们要回到生命力这样的概念,仔细地去思考 压迫感是怎么来的 ,客观上有什么原因、主观上我们是怎么去想象的。整个世界是一块大岩石,压着我这样的一粒沙子,这是一种物化的宣言,但不是真事情。
      我在网上看到一种流行又有趣的表达,年轻人遇到一个暖心的事,会评论说 “感觉尸体暖暖的”。流行词汇从“佛系” 到“躺平”再到“尸体”,似乎个体的能动性越来越低了,但这种词汇中又透露出强烈的期待。您怎么看待年轻人的用词?这是否能反映出环境和他们心理的变化?
  • **项飙:**对我来讲这是一种呼吁、一个叫喊。 #card

    • 他们呼吁别人听到他们的声音、了解他们的感受,而新的语言、新的思想能够帮助他们前行。

    • 他们之所以会把自己叫做 “尸体”,会说出“尸体暖暖的” 这句话,会把这句话写到评论里面,那显然证明他们是活着的,显然还能感受,在渴望跟别人交流,期待的是尸体还能更暖一点、更活过来。

  • 所以关键就是我们怎么样去应对这么一个呼吁和叫喊。 #card

    • 作为一个研究者,听到很多这样的叫喊,我能够在多大程度上做有效的回应?当然非常有限。

    • 但我活着的状态就是努力做出这样的回应,也许毫无效果,这没有关系

    • 现在我对生命力、间隔这些研究议题的定义就是,面对中国现在的这些叫喊,我要回应。

  • 年轻人语言的表达和变化,有时候表现了情况的进一步恶化,有时候表达了他们的批判意识更加尖锐、呼喊的声音越来越高。我觉得在网上说 “尸体暖暖的” 人,在生活中不一定很消沉,可能还蛮有生命力的,只不过他的生命力有时候会突然被碾压,会感到痛苦、抑郁,不知道怎么发扬生命力。但我觉得他那股气还在,否则不会说出这种话。 #card

    • 所以语言的激烈化,在我看来就是呼喊的声音越来越高,他们觉得一直没有得到足够的回应。

不少人注意到,当下年轻人普遍内向关注,对外的关注很少。年轻人中人格测试、算命、塔罗牌等玄学的流行与此有关吗?很多命理师、心理咨询提供了一种类似心灵按摩的服务。如果说这是一种向内关注的行为,那么有什么可以促使年轻人向外关注、拓展自己的[[横向反思空间]],同时又能安抚自己的途径?

  • **项飙:**很难去判断塔罗牌和算命是向内还是向外的。当然,它针对的是自己的感受,但是为什么有人要去算命? #card

    • **他们是要产生一个叙述,对自己的生活产生一个叙述。**他听别人来讲,等于是借用一个塔罗师、命理师,整理自己的一些经验。

    • 这个时候,他在一定意义上要把自己变成一个思考和观察的对象,所以它有一个反思的过程在里面。

    • 虽然他是要看自己,但也不是完全内在的,他要把自己跟社会联系起来,比如去整理自我跟他人、跟父母的关系,那么这里就有一个向外的倾向。

  • 为什么我们觉得(玄学)这种东西好像不太够?#card

    • 原因在于他有向外的欲望和倾向,但他缺乏向外的资料。

    • 这种资料不是读书的资料,而是缺乏向外的经验和方法,向外也看不到具体的东西。

    • 他要有经验、有方法去做积极的判断,去看外面的世界究竟是怎么样的、自己是怎样的、历史上究竟发生了什么、你住的地方和所在的学校究竟是怎么回事……

    • 要去看见附近的这些具体的事实,跟自己的生活发生关系,而不只是从书本上了解。

  • 但现在我们整体的教育方式正要压缩这部分,学生不生活在世界上,只生活在存粹的教学楼、实验室里,在一个真空的环境里。所以他对周边还有兴趣,愿意来算算命,愿意去产生一个叙述,我觉得已经很不错了。在实际生活里他们很少有机会接触外面的世界,家长都和老师都千方百计要 屏蔽外界 ,所以无法向外关注不能够怪同学。
    您在理论中使用 “附近” 和“生命力”这种直接取自生活的词汇,是为了便于理解和传播,还是认为它们本身就有理论价值? #card

  • **项飙:**两者都是。这样的词汇往往能够把更多的经验整理和调动出来,讲出更多东西、讲得更加真实,而且它们容易交流、容易得到反馈。并不是说要读的人多,对于研究社会意识和社会问题的人,可交流性本身就是工作的一部分。

  • 如果我做的东西能够回到公众当中去,然后再从公众那里回来,这本身就是一个丰富理论的过程。所以不是在理论之外还存在一个交流问题,交流的效果就是在理论之内的。一个理论的交流效果好,就说明这个它有很大的生命力、它抓住了一些东西,那它的取向就是比较精确的,它还会不断生长。如果一个理论没法交流,那它就在那里了。


下位者越希望改变,越投入生命力

以前很多人会说,这个孩子是 “读书的料”,另一个孩子不是 “读书的料”,也就是我们认为学习能力很大程度上是天赋决定。而现在,越来越多人认同精英是被制造出来的,天赋的影响其实没有这么大。在这种观念下,家长越来越重视环境和后天的培养,也更有动力在孩子的教育上密集投入。我们如何看待这种观念的改变?这种改变有利于社会平等吗?

  • 这种观念的改变在很大程度上符合社会科学研究的结果,但社会科学原本是想告诉我们,不平等很多时候是 资源分配造成的 ,而不是天生的,所以要改变 资源分配 的方式,从而提高平等。
    • 这就改变了 出生决定论 的观点,但当它变成公众意识后,就变成另外一种决定论,从强调天资的出生决定论,变成了强调 家庭和阶层的社会出身 决定论。
  • 人们把这些理论研究工具化,反过来想,既然都是资源分配形成的,那如果我这次再不赶上末班车,再不翻身的话,资源分配会把我搞得更糟,所以我一定要想尽办法,要努力在这样一个不平等的系统里面成为 受益者于是他们从韭菜变成割韭菜的人,并且想尽办法要把割韭菜的刀磨得更加锋利。
  • 所以关键就是怎么去研究社会意识。我们从字面上的叙述看到的好像是社会科学,但应该看它背后指向什么行动,也就是人们说这句话是要干什么。#card
    • 所以人们虽然在意识上觉得可以更平等,但这在客观上并没有发生,而且其中有一个很重要的变化,就是对生命力的捕获到了一个空前的高度。

    • 大家都希望用非常规的方法在不平等的体系里受益,越是下位者,越是希望改变。

    • 这里面最重要的资源投入其实就是生命力的投入,长期的注意力、体力、心理意识的投入。

    • 所以我想最大的改变可能是在这里。

人们意识到密集投入可以提高孩子的成绩,是不是陪伴式教育下沉到乡县的原因?在中西部县城,很多农村进城家庭的情况是父亲在大城市打工,母亲在县城陪读,老人在乡村务农补贴家用。这些农村宝妈有中产化的教育观念,会全阶段陪读、把孩子送进县城里的私立学校。这样做的最终目的,仅是确保自己的家庭未来能在县城扎根。农村家庭并没有期待子女进入精英阶层,但比起直接购置县城房产等投资方式,他们为什么热衷于卷教育?

  • **项飙:**很多人也会直接买房,然后获得户口,孩子可以就近在公立学校上学;也有人孤注一掷,一定要去最好的学校。#card

    • **从农村社会出来的人有时有一种报复性的要翻身的欲望,这个欲望可能比较模糊,不一定要让孩子进入精英大学,但把孩子送到私立学校这件事本身就有很强的象征意义,**这是第一。

    • 第二, 这是对孩子的一个宣告:我对你是多么的在意。

      • 当下以各种各样形式存在着对于孩子的近乎非理性的投入。在城市,这种投入看起来或许没有那么非理性,但其实平常补课、夏令营、冬令营等时间的陪伴也可以说是非理性的。
  • 这种对孩子的宣告,是这一代中国人人生意义的一种补偿方式。为什么其中有一种报复性?#card

    • 因为农村出身的一代人出来打工后,长期处于一种悬浮状态,一切生命的意义都是为了一个想象的未来。

    • 等到现在,他们好像已经没有别的东西可以视作意义来源了,唯一的意义来源就是对孩子做一种无限的投入。

  • 所以倒过来想这个问题,我们问这些农村家庭,那么多教育投入,究竟对孩子未来有什么预期?他们的未来不就是这样吗?做别的事情来达到目的不也是一样吗?#card

    • 这个问题对他们是不对的。他们做那么多投入,不是在预期一个未来,而是要对过去做一个救赎。

    • 救赎不是说自己过去有罪,而是过去存在巨大的残缺,需要通过这样一种救赎性的行动来对自己曾经高度悬浮的生活有一个交代、赋予一个意义。

    • 既然是对过去的救赎,那么他们就不太考虑未来究竟能够达到什么,有时候还会自我强迫性地就要求自己在子女教育上一定要投入到 100%。

  • 感觉这段话挺残酷的,人类学家抽出身子评价 [[2024/12/02]]

学生经常提到生命力的消耗、萎缩、坍塌…… 这种坍塌是可以通过个体的力量重建的吗?

  • 生命力是可以重建的

    • 老师在其中是一个很重要的群体,#card

      • 有很多老师对这样的教学方式也很不满意——本来当老师是希望传授知识的,不是在行为上控制学生,只为了让学生提升分数的。

      • 如果通过一些讨论、交流,改变一些老师的想法,那么他的教学方式、评价学生的方式可能就会不一样,这样就能有一个微观环境上的改变。

    • 家长是一个非常多元的群体,有很多家长也在 “吐槽”。#card

      • “吐槽” 如何从一种无力感的宣泄变成一种产生行动的机缘,我们可以一起去思考。我觉得改变的空间是存在的。
    • 还有一个我比较乐观的原因。生命力需要的是 意识上的间隔 ,这种 间隔 即使在系统没有大的改变时也是可以落实的,而且有时候只要稍微意识到这一点,就能在个体层面上看见比较大的效果。所以改变系统不是唯一的方式,在不能改变系统的情况下,我们仍有发挥能动性和创造力的办法,去创造一些小的 横向反思空间
      我们怎么去理解 “[[横向反思空间]]” 这个概念?怎么去创造这个空间?它和 “附近” 有没有共通之处?

  • 横向反思和行动空间可以认为是附近的一个具体例子。

    • 很多年轻人都在反思,但他们的反思往往不是横向的,而是顺着这个事情去想,比如去想下一步要怎么做、领导怎么想、我这么做是对的吗…… 在这个事情上反复去想,就像一种 纵向 思考。
    • 横向的意思就是 跳出这个事情,去回望它,不要被它给盖住了 。你要重新去看这个事情、看事情里的自己,去想它究竟是怎样的、为什么是这样的。
  • 反思还要加上 行动 ,要意识到你是有可做的事情的,而不仅是在那里想。比如做一些艺术,或者跟别人一起参加一些社团,把自己的间隔空间给丰富起来。

  • 最后是一个空间。我比较强调是存在状态,最重要的是这种空间让你在各个场景、各种时刻都觉得有可能去行动。#card

    • 我的 “空间” 这个词是强调这样一种可能性,你觉得自己所拥有的一种可能性——随时可以找到朋友,聊一些事情,周末有别的事情可以做,有一些沉浸式的体验能吸纳你的注意力。

    • 这跟具体做什么事情没有太大关系,但你要有这么一个空间存在。

  • 现在学校其实就是要消除这些东西,而且往往从 物理空间 开始。比如学生要住校,时间和所有的日程都要被安排,这样就让你没有机会去发展横向的反思和行动空间。
    恋爱可以看做是学生的对抗吗? #card

  • 横向反思空间

  • **项飙:**为什么学校对所谓早恋,或者说男女非正常接触,会那么警惕?其实不只是因为性保守的观念。主要是两个人恋爱之后,就会对彼此说,我喜欢你,你考试考多少分没有关系。当他们说我喜欢你,我不需要第三者的判断时,就出现了横向反思空间,两个人在一起立刻就跟系统产生了间隔

    • 然后老师再说什么,他们可能就不听了,在他们的脑子里面老师说话的分量一下子就没有了。他们会想,你骂我两句没事儿,因为过了 5 点以后我会有另外一个世界。这对系统来讲是很可怕的事。
  • 我没有倡导早恋的意思,但这是一个很生动的例子,可以用它来解释横向反思空间是什么。其实友情、邻里关系、爱好、家庭内部更平等和民主的讨论等等,都能让学生跳出考试学习怪圈,讲一点别的事情。


教育系统在批量生产炮灰

教育系统是如何捕获生命力的?

  • 捕获生命力的过程比较复杂,一个典型的例子就是招生。#card

    • 比如在北京,小升初按道理是按辖区升学,但学校会和奥赛班结合,组织点招初中,也叫密考。在广东、西安等各个地方招 “好学生”,招生就是一个捕获生命力的过程。
  • 学校为什么对招生这个环节那么关注?因为教育首先不在于教育,而在于抓人。学校把很大的精力放在能不能抓到那些理想的学生。“抓尖” 成为最重要的事,接下来怎么教是次要的。#card

    • 高三的老师告诉我,他们压力很大,因为高三学生的高考成绩会马上影响到下一轮高一招生时什么样的学生会来。如果今年高考不好,那么当年,甚至下一年、下三年的高一学生都会不行,整个学校都不好过。如果这样,高三老师会被其他老师骂,因为你没有生产出足够好的高考成绩,结果学校不能够招到足够好的学生来继续生产成绩。
  • 这从一个侧面来说明,对学校来说,抓人比教人更重要。整个教育体系主要就是 一个把人分等的机械 ,而不是一个真正的培育过程。为什么要抓人?因为他们觉得这些孩子有高质量的生命力,比如注意力更集中、更自觉。

  • 招生之后的手段就很多了,比如大家熟悉的衡水模式,就是在 时间和空间上 的绝对控制,基本把每一个流程做什么事情全部规定好。在这个过程中还有各种各样的仪式化,比如高考前拉横幅、供水果糕点之类的,给考试制造一种重大的神圣感,让学生就觉得考试就是他生命当中最重要、最严肃、最神圣的事情,不让你跟这个事之间产生间隔。

  • 对时空的掌握 是最主要的手段。
    + 在体力上通过长时间的控制 ,让学生所有的注意力全部百分百投入到现在要做的任务上,这样学生就没有别的经验,也没有机会碰到别的人、说别的事情,所以不可能产生出一种比较有效的方式来看待这一切。
    + 对于老师和家长也是如此。

    • 家庭不再是一个放松的地方,家委会、家长微信群、陪伴式教育…… 家庭成为学校的 延伸
    • 对老师的管理越来越行政化,年轻老师要不断进行评奖,所有东西都跟成绩挂钩,老师在学校里争着上课。#card
      • 我认识一个美术老师,他比较优秀,经常会出差去做一些展览,或者参加会议,所以他非常受学校其他老师的欢迎——因为他经常出差,数学、英语老师就可以来抢他的课。

      • 还有中午的自习时间,学生本来可以有半个小时用来休息,但老师会来把这半个小时也拿走,让他们继续学习。

+ 长期下来,学生连基本的休息都没有,我觉得在物理意义上就可以认为这是生命力的剥夺。通过物理意义上的生命力剥夺,最重要的目的是  **让人的意识无法与行动产生间隔 **  。
  • 学生说累,这个累其实是 “神累”。一般身体累了,你就什么不能干了。神累不一样, 累的时候你还可以继续干,甚至可以干得非常顺滑。

我们看到有很多衡水中学的学生在进入大学后失去了目标感,比起来自大城市的同学积极参加各种活动,他们像进入了旷野一样迷茫。他们是生命力被捕获的对象,但当他们反思衡中模式的时候,一些人会评论说 “衡中模式救了你”。不少人认为,这些衡中学生作为优胜者集中享受了资源,从而走到了不属于自己的大世界。由此来看,教育系统到底是生命的 “捕获者”,还是 “拯救者”?

  • **项飙:**我觉得这样的看法是有问题的。这种教育模式戕害的是 100% 的学生,因为学校要汲取 100% 学生的生命力,让所有学生进入这个体系竞争。#card

    • 在 100% 的学生里面有 1% 的学生特别成功,或者有 10% 的学生达到基本的目标,他们就会自圆其说——在这种体系下,有这 1% 的成功,所以 100% 的消耗是合理的
  • 可是这在逻辑上说不通——不搞那种模式,难道就没有清华北大了吗?如果不管怎么样都可能会有 1% 的学生进顶尖大学,那为什么一定要采取 一种消耗生命力 的方式?

  • 这种说法认为:像你这样的小地方来的人,不那么苦的话,你是进入不了这里来的;你因为是小地方的,所以你只能够这样来进入。这是一种非常常见的社会意识(“小镇做题家”),把一切现存的东西都合理化。#card

    • 首先它预设小地方跟大地方就是不一样,机会成本就是不同;

    • 第二,顶尖学校就是更好的选择;

    • 第三,在现在的安排下,人就是分等的。

    • 既然都合理,那你要在这种情况下改变命运,就是要采取这样一种自戕式的方式才能成功。学校帮助你采取自戕式的方式让你华丽转身,把你送到顶尖的位置上,所以你应该感谢它。

  • 但是这整个叙述里没有个人。#card

    • 它说小地方的人要进大城市、进顶尖学校,分层就是合理的,所以必须要采取非常规手段。

    • 但它不会问你,小地方对你意味着什么,更顶尖学校为什么就更好。

    • 也许对一些人来说,他们就想把小地方建设好;

    • 也许顶尖学校对一些人来说没有太大意义。

    • 但是在社会压力下,他们稀里糊涂地认为去了那里就好,但去了学校根本不知道去干什么,只不过是听大家说那学校好他就去了。

  • **在这种叙述下,过程对每个个人的具体含义是被忽略了的。就像把石头从 a 点搬到了 b 点,因为石头到达了另一个地方,就说明这个用力有效,但这个用力究竟怎么样碾碎了人的每一个细胞它根本不管。**这样一套社会机械学的说法把一切都合理化,听起来很朴素,但你可以看出这是物化。它把整个社会生活想象成是一个机器,你在里面要从一个螺丝钉变成另外一个螺丝钉,要咬牙切齿地使自己对机器有更大的帮助和贡献。#card

    • 而且,所谓 “拯救” 的那 1%,其实和 100% 是联系在一起的。如果没有 100% 消耗,就不可能有 1% 的特殊。陪跑、韭菜、炮灰,这些说法都是有道理。这个系统就是要生产出大批的陪跑、韭菜、炮灰,顶部的华丽光环全部要靠底层的生命力烘托出来。

还有很多人认为在整体资源匮乏的情况下,教育系统通过一种统一的标准将人筛选、分层,是一种较为高效、公平地进行资源分配的手段。

  • 所以不是教育资源的匮乏,是评价体系的单一和意义系统的匮乏。 #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)


07 我们十几年的外语教育方法几乎全错了

我们十几年的外语教育方法几乎全错了 - 知乎 (zhihu.com)学习观07英语学习法视频演示 - 知乎 (zhihu.com)

隐式知识 implicit knowledge

  • 学习方法,通过例子学习

image.png

  • 错误的方法,

    • 看字幕练习听力

image.png

从零开始学习英语

  • 听、说、读、写,四个方面学习单词

  • 看句子想场景,不要读出来

image.png

  • 注意点

    • 不要依靠意识,思考场景

    • 以句子为单位

    • 多例子学习

    • 输出始终一致

    • 如何克服默读

      • [[chunking]] 把独立的信息组成一体,利用神经元的并行功能。

      • 通过判断阅读速度是否可以大于读出声的阅读速度

      • 边吃口香糖边阅读

[[思维导图]]

image.png


09 标题党是如何用这些招数把你当宠物诱骗的

学习观09_哔哩哔哩_bilibili

[[好奇心]] 生理模型

  • 相关的大脑区域是负责奖励机制的伏膈核,对成瘾行为起重要作用。

  • 好奇心是促进学习的奖励机制

  • 不是不喜欢学习,而是不喜欢不符合大脑特点的记忆。

好奇心的对象 - 例子(故事)

  • 无法通过记忆知识来学习知识,只能通过归纳例子来构建知识。

标题党如何通过好奇心来引诱大众

  • 例子残缺

    • 输入缺失

image.png

+ 输出缺失

image.png

  • 知识白送

    • [[分类知识]],好奇的是判断依据

image.png

+ [[回归知识]],好奇的是实现步骤

image.png

好奇心的敌人不是年龄,而是已有知识。

  • 固执心理

    • 拒绝新知识

    • 归为旧知识

  • 权威思维

    • 学生思维

[[洗脑]],利用例子构建观念模型

  • 广告植入

image.png

  • 权健帝国

image.png

思维导图

image.png


10 老师,我没有传纸条作弊,我在学习信息论

学习观10四格版:什么是信息(定性) - 知乎 (zhihu.com)

[[05 思维导图原理:人生与高手之差]]

  • 明确任务输入输出

  • 将信息压缩成知识

  • 例子重塑大脑连接

  • 拆分知识分而治之

熵与信息的定义

  • 当一件事情有多种可能情况时,这件事情对某人而言具体是哪种情况的不确定性叫做熵。

  • 能够消除该人对这件事情不确定的事情叫做信息。

  • 信息描述是一个观察者确定一个宏观态是哪个微观态时需要的物理量

熵与信息数量相等,意义相关。消除熵 = 获取信息

  • 噪音是信息获取的干扰

  • 数据是信息 + 噪音

信息的种类,本质是正确的调整每个可能情况(微观态)的概率

  • 调整概率

  • 排除干扰

  • 能够直接确定某件事情的实际情况

例子:当小明不会某道数学选择题时(正确答案是C),正确答案[[宏观态]]是 ABCD 哪个(每个可能选项叫[[微观态]])的不确定性就是熵。

  • 宏观态是不考虑内部细节的状态,而微观态是考虑具体细节的状态。

image.png

概率 VS 熵

  • 概率是某件事情(宏观态)某个可能情况(微观态)的确定性

  • 熵是某人对某件事情(宏观态)到底是哪个情况(微观态)的不确定性

  • 熵的输入是变量(宏观态)

image.png

熵与信息的性质

  • 媒介无关,同一个观察者,对同一件事情接受到的信息与用于传递信息的信号形式无关。

  • 相对观察者

    • 例子中如果观察者已知问题的答案,就不存在不确定性。观察者对这道题的熵都为 0bit

    • 如果观察者不知道答案,不确定最大,熵为 2 bits

  • 客观物理量,虽然信息是相对于观察者而言的,但信息是客观的物理量,不随观察者的主观意识改变。

    • 主观认知不会实际消除观察者对事情的不确定性
  • 相对于事件

导图

image.png


11 为什么信息还有单位?如何计算信息量?

质量单位,定义参照物体的质量,比较待测物体相对于参照物体的倍数。

image.png

信息量单位

image.png

  • 抛硬币正反不确定性

    • 50% 正 50% 反

    • 测得信息量的单位被称为比特 bit

    • 待测事件相当于多少参照事情,使用对数计算

      • 选择题 ABCD,相当于抛 2 次硬币

image.png

image.png

计算

  • 均匀分布 log2m\log_2 m

  • 一般分布 pilog2pi1\sum p_i \log _2 p_i^{-1}


12 阻碍人类永生的原因是?

[[热力学第二定律]] 熵增定律,事物会从有序状态向无序状态发展。

  • 无序,指宏观态对应的微观态数量很多。

  • 系统自发向包含微观态最多的宏观态改变,这种改变无法自行逆转,被称为[[时间之矢]]。

  • 例子:5种宏观态,每种宏观态包含不同的微观态。对应到图中的例子,宏观态对应小球在左右区域中的数量,微观态对应具体 4 个小球的分布。

    • 计算下面 5 中宏观态对应的信息熵,左2右2的信息熵最大。

    • 微观态概率相同,宏观态由于包含的微观态数量不同,导致概率不同。

image.png

  • 热平衡,宏观态达到熵最大状态

  • 热力学熵,描述系统自发做功的能力(能量的品质)[[兰道尔原则]]

image.png

  • 热寂 heat death,宇宙发生热平衡

    • 宇宙朝着熵增的方向改变

[[麦克斯韦妖]] 尝试否定热力学第二定律

  • 一个等温系统中存在奇怪的妖怪,可以区分高速分子和低速分子,控制低速分子从左侧到右侧,高速分子从右侧到左侧。左侧分子运动快温度高,右侧分子运动越慢温度低,自发让系统的熵降低,左右两边产生能量差。

  • 不可能实现的原因,妖本质上利用信息(感知到分子运动)来降低信息熵从而降低热力学熵,需要不断从外界能量中获取信息

image.png

image.png

生命是什么?

  • 薛定谔 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

  • [[生命是什么]]

[[思维导图]]

image.png


13 若想造出人工智能生命,至少需要满足这五个条件

拥有所有信息便可永恒。

从一种事件的信息获得所需事件的信息

例子(样本),从输入信息到输出信息的对应变化

知识(函数、模型、映射、变换),压缩两个事件之间所有信息对应变化。

  • 知识不是信息

  • 知识需可重复利用

智能:学习知识和使用知识的能力

  • 根据改变做出对应改变的能力

产生智能体的 5 个能力

  • 学习

    • DNA 是如何学习到的

    • 演化(genetic algorithm),智能体让自己的突变克隆体去问环境,突变所产生的模型是否能预测信息,以克隆体的死亡为代价获得能稳定减熵的模型的一种学习方法。

      • 生命史第一个学习方法。智能体不以个体学习知识,而以群体学习知识。

        • 数据准备

          • 系统猜对信息就会存活,否则无法维持状态,间接提供信息
        • 模型候选

          • DNA 遗传过程中产生基因突变,每个克隆体都有不同的模型
        • 模型筛选

          • 只有合适的模型才能够预测到信息

          • 自然选择判断模型所预测的信息是否能够维持自身状态,淘汰无法预测到信息的模型。

          • 反复进行候选和筛选后,种群基因库会整体形成一个能稳定减熵的模型

  • 存储

    • [[DNA]]

      • dna 编码冗余使得遗传代码具备极强的抗噪能力,把点突变 point mutation 带来的灾难降到最低

      • 存储内容不是单纯的信息而是代码,会被编译成能实现模型功能的工具。

  • 预测

    • 碱基 A、C、G、T,每 3 个碱基对应一个氨基酸。氨基酸形成不同功能的蛋白质。

    • 蛋白质实现不同的功能

  • 获能

    • 太阳能是能量来源

    • 海底热泉,海底沉积物的化能合成

  • 熵差

    • 自然选择液体中的固体,自身的固体相对稳定,液体又支持熵减系统的形成

image.png

人类为什么会死亡?

  • 自然死亡被有意写到了基因代码中

  • 信息的获取受到某种限制

[[思维导图]]

image.png


14 地球所有生命源于同一始祖?它靠什么演化成各种高级生物的?

LUCA,Last Universal Common Ancestor

  • RNA 聚合体

为什么会转化成复杂 DNA + 蛋白质的形式演化?

  • 生命靠减熵来维持状态,代价却是不断增加环境的总熵。

  • 生命演化的方向是不断增大智能,增强个体能力,将若干个个体组织成一个新个体。

  • 大量蛋白质有组织并行工作就有了质变(相变,phase transition)

[[涌现能力]] emergence,由量变引起质变的现象

  • 跃进式增强智能

  • 只有稳定的智能体之间有规则的相互作用才能形成更高层级的智能体

反馈循环

  • 蓝绿菌,演化出光合作用 photosynthesis

  • 正反馈

    • 大氧化事件 Great Oxygenation Event,由于蓝绿菌的数量爆炸式增长,地球大气氧含量迅速增加。额外的氧气不断消耗给地球保温的甲烷,进入休伦冰期。地球上的生命近乎全部灭绝。

    • 一个物种的个体可以永生,一旦演化出某个优势模型时,无限加速繁殖的个体会让环境也加速熵增,该物种反而会因为演化的减熵速度无法跟进环境的熵增速度而灭绝。

  • 负反馈

    • 某些好氧菌被大细菌整体吞噬后,形成内共生关系 endosymbiotic,变为了专门提供能量的线粒体。 而蓝绿菌被大细胞吞噬后变成了叶绿体。这些大细胞又慢慢演化成了真核细胞。

寒武纪生命大爆发 Cambrian Explosion

  • 生命短时期内迅速演化

  • 达尔文主张的演化是渐进式的

  • 寒武纪爆发的关键,从减熵的角度来看,维持生命的关键并非演化本身,而是演化所提供的信息。

    • 整体稳定困境

      • 随机突变的单细胞无法达到涌现成复杂多细胞生物所需的稳定性。

      • 有性生殖,将多细胞生物作为整体来增加差异性的机制。在稳定整体的基础上增加差异性。

    • 移动信息困境

      • 不能大范围移动的多细胞生物只能和相近的个体交配,会无法提供足够的差异性导致演化速率过低而灭绝。

      • 多细胞生物大范围移动后,环境也会随着移动而改变,又会因之前演化出模型无法预测新环境的信息而死亡。

神经细胞,埃迪卡拉纪中演化出来

  • 众多神经细胞形成的神经网 nerve net 配合演化机制 neuro-evolution 加快学习环境模型的速率。

  • 增加实时感官能力的神经网络允许个体在新环境中,学习用上一时刻信息来预测下一时刻信息的模型。

神经网络,第二种学习系统

image.png

LUCA原型、RNA世界、大氧化事件、雪球地球、寒武爆发、有性生殖、神经网、生物大灭绝、复杂系统、生物反馈循环

[[思维导图]]

image.png


15 为什么人类没有演化成过目不忘?

针对这个问题的假说

  • 消退说,遗忘是信息在脑中不可避免的消退结果

    • 超忆症人群可以过目不忘,演化过程中生命完全有条件产生没有消退也没有干扰的大脑
  • 干扰说,混淆是不同信息干扰记忆所造成的

为什么会主动遗忘?

生命稳态维持

  • 生命是一种特殊的状态维持方式,能被留下来的原因只有一个:通过预测信息,在不断变化的环境中维持了自身的状态。

  • 单细胞生物可以单靠应激反应达到在环境中维持生命稳态

移动演化危机

  • 多细胞生物演化面临的问题

    • 生物由大量细胞组成,如果这些细胞随时可以变异,那就无法形成一个稳定的整体。
  • 有性生殖允许个体在保证稳定性的基础上增加差异性,条件是需要充分移动来洗牌。

  • 演化的学习速度跟不上移动所造成环境变化速度。

高等生命的挑战

  • 生物所看到的事物会随着自身的模型而改变,所以人类看到的也并不是世界的真实样貌。

  • 模型泛化能力

    • 高考,从有限的练习题中构建可以解出从未见过的高考题的模型,每个模型就是考生需要学习的一个知识。
  • 自然选择无法干预生命周期内的学习

  • 记忆的作用,允许生物从历史经验中学习

网络记忆学习

  • 针对异或问题,两种不同策略,查找记忆或网络记忆

    • 在网络中,记忆是过拟合的学习,学习是泛化的记忆。

image.png

  • [[通用近似定理]] Universalapproximation theorem

    • 保证网络可以记忆,但不保证网络一定可以学习。
  • 网络记忆的特点

    • 记忆耗时

    • 会有干扰

      • 网络的调整会影响之间的记忆
    • 会有混淆

      • 模糊记忆,混淆两个相似的情况
    • 记忆可稳定

  • 网络记忆寻找共同规律,能对未知进行预测

    • 查找记忆不能解决未知的情况
  • 遗忘:基于概率的模型筛选机制

    • 规律出现频率低,该规律是普遍规律的概率就很低,学到这个规律的个体很难存活。

    • 当网络的某个连接被高频率使用时,就强化该连接的形成。(需要不断重复记忆)

    • 当网络的某个连接被低频率使用,就弱化该连接的形成。(记住的信息会被遗忘)

    • 又有该机制的个体在残酷的自然选择中存活下来,后续繁衍成为我们的祖先。


15.5 遗忘是为了更好的学习

[[异或问题]]

  • [[查找记忆]],将信息作为状态,存储到不同的地址中的记忆方式

  • [[网络记忆]],本质是寻找所有情况的共同规律。

    • 网络记忆位置,由所有连接共同存储

英语学习

  • 无法通过查找记忆枚举所有的情况

image.png

  • 练习听力不要使用字幕

学习中的遗忘

  • 寻找共同规律(学习)过程中由于调整权重所造成的连接断开

学习后的遗忘

  • 为了提高泛化能力,根据连接被使用的频率强化或弱化连接的一种模型筛选机制。

15.6 如何背台词

直接背诵文稿不符合大脑记忆的特点,通过引入其他稳定输入,减少背演讲内容的负担。

通过文稿练习演讲

image.png

通过稳定的输入练习演讲

image.png

image.png


15.7 ​昨夜想到个绝妙点子,想明天试下,结果。。猜到了吗?

演讲的流程

  • step1. 看自己的稿子的一句话或一段话,记住意思。

  • step2. 看ppt的图片(台下的坐席,灯光等),直接讲出刚才记住的意思。

  • 重复上述过程直到记住所有演讲内容

演讲的流程遵循,循环神经网络。

image.png

昨天想到的点子,第二天忘记的解释

  • 产生这种现象的原因

    • 相同模型,不同输入

      • 验证例子

        • 一步一步回忆,直到找到自己需要的
    • 相同输入,不同模型


16 性与杀戮改变了所有生物的轨迹?六亿年前到底发生了什么?

生命的目的是不惜一切代价地永远生存,想要生存需要预测信息,预测信息就需要学习模型。

  • 个体死亡是种群为了学习模型所付出的代价。

遗忘是允许生命可以不再以个体的死亡为代价来学习的关键,起到筛选模型的作用。

无聊的十亿年,真核细胞演化停滞,细胞间的涌现出现条件苛刻

  • 涌现条件苛刻,想要通过涌现成新的学习系统,细胞之间不仅要形成稳定的连接,还要有统一的信息交流语言。

阿瓦隆爆发

  • 埃迪卡拉纪

  • 狄更逊水母(Dickinsonia)被动接收养分

神经元,通过调整频率发送不同的信息

  • 物理连接

    • 轴突 axon,

    • 树突 dendrites,连接其他神经细胞的胞体或树突

    • 胶质细胞,支撑和隔离神经细胞并提供养分

image.png

image.png

  • 不同神经细胞通过电脉冲的频率交流

  • 脉冲发送

    • 极化 polarization,神经细胞处于初始状态的过程

      • 钠钾离子泵(Sodium–potassium pumps)的蛋白质消耗 ATP 控制纳离子和钾离子进出使膜电位平衡
    • 去极化 depolarization,膜电位升到 -55mV

      • 电压门控钠离子通道(Voltage-gated sodium channels)的蛋白质,膜电位在 -55mv 时开门,允许纳离子涌入使膜电位升到 +40mV,带动其他部位连锁的去极化,形成动作电位,一直传导到突触
    • 再极化 Repolarization,重新调整膜电位到 -70 mV

      • 电压门控钾离子通道(Voltage-gated potassium Ion channels)的蛋白质

      • +40mV 左右,允许钾离子通过,膜电位调整到 -70 mV

image.png

  • 频率调整

    • 突触囊泡,动作电位传导到轴突末梢时,该囊泡会穿过细胞膜,释放神经递质。

    • 接收信息的神经细胞的细胞膜上有很多不同的受体,在与特定的神经递质结合时会开门,允许离子通过。

      • 激发,增高膜电位

      • 抑制,降低膜电位

image.png

神经网,通过神经细胞实现任何功能

  • 感知系统

    • 通过感知信报将环境的物理信息转化成电脉冲频率,形成感知外界环境的多维系统
  • 运动系统

    • 超智能体:动物,多个神经系统协作
  • 感知运动

    • 生命首次拥有实时感觉环境并立刻做出运动反应的能力
  • 有性生殖

    • 感知运动能力使不同个体可以充分洗牌后交配,不必担心近亲交配导致备选模型差异性不足
  • 捕食者,增加筛选压力

    • 协同演化,正反馈循环,捕食者和被捕食者相互筛选
  • 涌现依赖交流

  • 河豚毒素干扰神经系统

寒武纪大爆发

  • 条件

image.png

神经网学习

  • 突触可塑性 Synaptic plasticity,生命周期内学习

    • 突触上的受体不再固定不变,可以根据经验自动调节

      • 长期增强作用,增多受体数量,加快接收神经递质的速度

      • 长期抑制作用,减少受体数量,。。。。

  • 个体学习,总结经验,找出规律

    • 例子准备,增强个体记忆

    • 泛化能力

    • 学习

      • 重复,强化连接

      • 遗忘,弱化连接

  • 正确[[学习]]

  • 表征 Representation

    • 要学习的对象可能有多个不通的形态,通过表征进行泛化
  • 人工神经网络

    • 相互对应

      • 「细胞群频率」对应着「向量的数值」

      • 「激活的条件」对应着「非线性函数」

      • 「可变频突触」对应着「网络的权重」

    • 人工遗忘,dropout 等遗忘机制

    • 不同点

      • 反向传播

思维导图

image.png

image.png


17.5 是什么要素让一个科幻变成赛博朋克的?

剧本的魅力

  • 著名编剧艾伦·索金说过:剧本必须由欲望阻碍构成,某人想要达成某个目标,过程中遇到了阻碍,最终与阻碍做个了断。若没有这些要素,就不构成一个剧本,而是新闻。

  • 对人类而言,后续演化出的一个非常关键的能力就是:从他人经验中学习的能力,而剧本必须具备的要素恰好也是一个有效的他人经验所具备的要素。因此从演化的视角来看,人们喜欢看电影的一个原因是:电影能允许人们从他人的经验中学习,构建有利于生存的认知模型。

  • 看电影有构建知识的感觉 [[欲望]]

朋克,非主流、叛逆,描述个体在这种难以适应的未来世界中所产生的心态

  • 朋克文学,就是虚构一个在某项技术达到顶峰时的未来世界,并展现个体在这种环境中的生存。

    • 朋克文学特点

      • 个体冲突世界

        • 这类故事中反正就是世界本身,世界是由所有人共有的欲望所构建的。
      • 未来可能发生

        • 读者自己在未来真有可能面对这种局面
      • 认知停留过去

        • 世界中的人还停留在当时的认知
      • 认知时空冲突

        • 固定认知,快进世界。认知没有随着环境变化而改变,从而个体与世界之间引入巨大的冲突
  • [[赛博]]朋克

    • 控制论(人类自己由什么构成,大脑是如何工作)技术达到巅峰,意味着,创造生命、人机结合、替换身体、入侵大脑、复制意识都可以实现。

    • 开始思考倘若自己真的处在这种非常先进却又极度危险的世界中,究竟该如何生存。

    • 生存危机和存在悖论

      • [[宿命决定]]

      • [[缸中之脑]]

      • [[忒修斯之船]]

[[思维导图]]

image.png


18.5 素质教育为何十年都没改革成?

知识争论

  • 知识无用论

    • 应试知识无用,感觉时间白费。

    • 但是为升学,时间并没有浪费。

    • 在学校构建的模型无法解决实际问题

  • 知识有用论

    • 使用知识有用,后悔没好好学。

    • 即使好好学,也较难学到实用。

聪明的汉斯,最大化目标但是学偏了模型

image.png

机器的汉斯效应,看似能完成一些任务,其实实在依赖所找到的某些微妙特征

  • 识别飞机与坦克的模型,学习到背景是否是蓝色

image.png

人类教育的启示

  • 升学生最大化分数得到应试模型,但这不是教育目标的模型

    • 辅导书和课本的目标不同,导致现在既要用课本也要用辅导书

image.png

  • 教育系统与就业系统不匹配

    • 最大化分数模型不一定是教育目标模型

    • 企业通过分数和学校出身来筛选,有希望筛选的人才可以解决工作中的实际问题。筛选方式和筛选目标并不匹配

image.png

偏差消除

  • 素质教育改革结果,升学的背景下所有模型最终会变成最大升学的模型

    • 能否改变奖励机制,使“能最大化奖励的模型”就等于“教育目标的模型”,或者说让“得分目标”完全等价于“能力目标”。

image.png

  • 如何教育改革

    • 推行素质教育后,奖励机制依然不能使得分目标等价于能力目标,系统也会根据素质教育的奖励机制演化成另一套偏离教育目标的应试体系。

      • 这套系统会使学生获得分数的成本变高,让人才筛选变得不再公平。
    • 美国招生

  • 妥协的结果,降低学生得分成本的应试教育,解决人才选拔公平问题

image.png

  • 实际解决方案

    • 升学机会,义务教育阶段

      • 系统起到筛选作用,允许最大化得分的行为模式
    • 实用目的,高等教育阶段

      • 学生自己通过明确输入输出,抑制建模偏差

[[思维导图]]

image.png


19 被现代隐形人猎杀,你能活下来吗?

感知

  • 感觉细胞将物理信号转化成对应频率的电脉冲,神经细胞处理接收到电脉冲。

  • 缺陷

    • 部分场景下,无法感知所需要的模态输入

    • 模型依赖,感知细胞受损会失去响应的感知

    • 感知欺骗

模态

  • 承载信息的信号形式

  • 每种感知对应一种模态

  • 每种模态都有它的局限

多模态融合

  • 克服单模态感觉缺陷

  • 不同模态对同一时间的预测可能彼此冲突

  • 听力多模态

    • 人类对别人说了什么的猜测取决于视觉模态和听觉模态融合
  • 大脑融合机制

    • 当多个模态的信息同步时,大脑就会吸引注意力,并重塑对现实猜测

只要你没有感知敌人的模型,敌人就不存在于你的现实。

[[思维导图]]

image.png


1D Conv

1D 卷积其实是特殊的 2D 卷积,卷积核宽度直接和 embedding 维度强制对应。只能在时间顺序上纵向滑动,不能横向滑动。

控制前后卷积的通道数,用于 skip connect 需要 add 操作的场景

应用非线性

  • 神经网络每一层后,都可以应用激活层。

  • 非线性扩展模型的可能性,通常使深度网络比宽网络更好

  • 为了增加非线性层数量而不显著增加参数和计算量,可以用 1D 卷积然后再接激活层。

Ref


2022week40

[[@OneNote 嵌套表格]]

[[睡前消息]] 490

  • 三元素模型

    • 通过「真善美」三个元素的权重,给文化产品分类

      • 宗教:善>美>真

      • 戏曲:美>善>真

      • 媒体:真>善和美

如何一键打开 macOS 中的任何文件(以 Keyboard Maestro 为例) - #Untag (utgd.net)

  • 在指定目录生成文件的 alias,复制 alias 对应的路径给其他软件使用。

用 Keyboard Maestro 为 PDF Expert 打造个性化批注工具箱 - #Untag (utgd.net)

  • 参考高亮颜色 [[Highlight Taxonomy]]

PKM 又一年,我的困惑与心得 - 少数派 (sspai.com)

  • 教育目标理论,人类对于知识的认知层次

    • 记忆:对具体事实、概念、术语的回忆;

    • 理解:能够对知识进行转换、解释和推断;

    • 应用:在实际情景中运用知识;

    • 分析:将所学材料分解,明白各部分间的联系;

    • 评价:基于对知识的理解,对知识的价值进行有效判断;

    • 创造:将组成知识的各部分要素重新加工,产生新的模式或结构;

  • daily note 模板

    • 我今天做了什么

    • 我今天发现了什么

    • 我今天在想什么

广告算法工程师的核心竞争力是什么? - 知乎 (zhihu.com)

  • 业务理解

  • 不如读书的方法论

    • 问题是什么?

    • 用什么指标来度量?

    • 问题的复杂度是什么量级?

    • 模型不好 本质上是模型复杂度没有匹配问题复杂度 哪里是模型复杂度的瓶颈?

    • 找不到便利的数据和特征 就可以想想是否能把问题分解成子问题 也许在子问题空间下 你能想到更好的特征 数据和模型 同时分解了问题 就能够引入更多的人员来并行工作

    • 知道怎么做干净的实验 系统性的探索所有的可能性 排除无关因素


2022week02

[[KG笔记法]] 挺复杂,暂时不参考

Mac 如何远程访问 Windows?

周报|22W02 - 追求简洁而非复杂 - Ztleespace

  • Minerva 以周报形式回顾每周项目、学习和阅读情况。

    • 日文,使用翻译
  • [[Architectural Decision Records]]

[[PID]]


2022week41

Transformer 一篇就够了(四): 细思极恐的 Transformer - 知乎 (zhihu.com)

[[MacOS]] 随航,显示器设置中选择 ipad

  • ipad 上无法进行触屏操作,但是使用 apple pencil 会出现光标

双链使用经验分享: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 命令面板


2363. 合并相似的物品

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
vector<vector<int>> mergeSimilarItems(vector<vector<int>>& items1, vector<vector<int>>& items2) {
map<int, int>a;
for(auto item:items1) {
a[item[0]] = item[1];
}
for(auto item:items2) {
if (a.find(item[0]) == a.end()) {
a[item[0]] = 0;
}
a[item[0]] += item[1];
}
vector<vector<int>> ans;
for(auto aa=a.begin();aa!=a.end();aa++) {
ans.push_back(vector{aa->first, aa->second});
}
return ans;
}
};

2022week42

[[CITIZEN]]

Bilibili 干净链接 (greasyfork.org) 去除b站地址栏的小尾巴 [[Tampermonkey/Plugin]]

论文协作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{{< logseq/orgQUERY >}}; 新建一个query查询
; ?b: block
; ?p: page
{
:title "文献query-原型机"
:query

; 检出符合条件?b的全部属性,最终体现为一个query-table
[:find (pull ?b [*])

; 检索规则与范围
:where


; /--- 检出属性publication-title值为ACS CATALYSIS的page ---/
; publication-title:: ACS CATALYSIS

; 检出所有page (展开点说,page是一种特殊的block,而page级的block才会有:block/name属性)
[?p :block/name]
; 取page的page-properties
[?p :block/properties ?prop]
; 取page-properties中“publication-title:: value1, value1, value3”的值
; 即: 取出列表“value1, value1, value3”
[(get ?prop :publication-title) ?v]
; 判断ACS CATALYSIS(作为一个整体)是否存在于“value1, value1, value3”中
(or [(= ?v "ACS CATALYSIS")] [(contains? ?v "ACS CATALYSIS")])

; /--- 检出 "fig" AND "o1" AND ("TEM" OR "equil") NOT "EDX"---/

; 取符合上述规则page下的block
[?b :block/page ?p]
; 检出链接"fig"的block //切片载体类型
[?b :block/path-refs [:block/name "fig"]]
; 检出链接"o1"的block //图序
[?b :block/path-refs [:block/name "o1"]]
; 检出链接"intro"的block //功能区段
;[?b :block/path-refs [:block/name "intro"]]
; 检出链接"TEM"或"equil"的block
; 注意!数据库检索必须要小写!
(or [?b :block/path-refs [:block/name "tem"]]
[?b :block/path-refs [:block/name "equil"]])
; 去除链接"EDX"的block
(not [?b :block/path-refs [:block/name "edx"]])
]
}
{{< / logseq/orgQUERY >}}

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]] 任务管理

    • 实时查询当前已经安排的 task {{renderer agenda, task-list}}

Logseq 相关

  • [[logseq-publish]] 增加备案号

    • 修改 index.html 以注入自定义功能

      • 获取对象 main-content-container,然后增加一个新的 div 对象,其中包含需要的一个备案号链接

        • 需要设置 div 的 width,否则对象位置会有问题
1
2
3
4
5
6
7
8
9
<script>
var container = document.getElementById('main-content-container');
container.style['flex-wrap'] = 'wrap';
container.firstChild.style['flex-basis'] = '100%';
var element = document.createElement('div');
element.style['width']='100%';
element.innerHTML = '<center><a href="https://beian.miit.gov.cn" rel="noopener" target="_blank">浙ICP备17004638号-1 </a></center>';
container.appendChild(element);
</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)

DONE [[机器学习知识体系汇总]]


@2010年的房地产调控,我们收获了什么?写在房价暴涨前

[[@天涯kk的房产预言到尾声了吗?2022年以后还会重复2015的普遍暴涨吗? - 知乎]]

待分类

  • [[中国的学术]]

  • [[一线、二线的生活]]

  • [[智慧和才干]]

调控

  • [[调控的好处是让政府利益最大化&防范金融风险]]

  • [[调控的真正目的:防范金融风险 & 通过垄断实现国家利益最大化]]

  • [[调控带来的影响]]

  • [[10年的调控和08年调控的区别、带来的影响、机会]]

  • [[中国的房地产不可能软着陆]]

政府

  • [[为人民服务是说给人民听的]]

  • [[政府搬迁]]

经济

  • [[守着金碗要饭吃]] [[游乐园比喻]]

  • [[为什么美国人工高于中国,但大多数商品的物价却低于中国]]

  • [[人民币对外升值,对内贬值]]

  • [[中国可以无限印钞吗]]

  • [[富人越富、穷人越穷]]

  • [[税收从来都是向下游转嫁的 & 房产税迟迟不出台的真正原因]]

  • [[存钱不如存资产,钱会贬值,资产会升值]]

  • [[不同阶层的人对收入高低有不同的理解]]

  • [[通货膨胀的形成原因]]

  • [[经济崩溃,最后接盘的是老百姓]]

政策

  • [[粮食和房子的不同是,房子无法和土地剥离]]

    • [[农产品的价格关系到影响稳定的吃饭问题]]
  • [[什么是好的政策]]

  • [[外汇管制]]

    • [[外汇管制决定了大部分有钱人只能在国内投资]]
  • [[货币为什么要贬值]]

  • [[房地产是资本市场还是实体经济?]]

  • [[关于拆迁]]

    • [[拆迁补偿]]

体制内外

  • [[双轨制之体制内的福利]]

  • [[底层指的是体制外底薪白领]]

  • [[收入分配改革跟体制外的人没关系]]

  • [[体制外的人要早早考虑养老问题]]

  • [[中国民主]]

  • [[垄断企业]]

租房

  • [[租房的苦]]

  • [[房租价格涨不上去,本质是买房还看起来有希望]]

买房

  • 要不要买房

    • [[什么是真买不起房]] 傻空

    • [[什么是傻空]]

    • [[40年的商住房没有70年的住宅有投资价值]]

    • [[房地产的现状]]

    • [[房奴算不上不幸,相当当不了才算]]

    • [[还能上车的赶紧上车]]

    • [[人需要一个安身之所,能买早买比晚买好]]

    • [[金融杠杆是炒房赚钱的放大器]]

    • [[地级市买房:投资风险要大于一线城市和省会城市]]

  • 房价

    • [[决定房价的因素有很多,具体情况具体分析]]

    • [[土地不稀缺,优质土地稀缺]]

    • [[二三线城市的发展靠拆迁]]

    • [[为什么现在租售比这么低]]

  • 买什么

    • [[投资最重要的是稀缺性,买房首选公务员小区]]

      • [[把房买在政府边,差不了]]
    • [[投资新房还是老公房]]

    • [[关于购买经济适用房]]

    • [[同小区买一套大还是两套小]]

    • [[大城市对近距离的小城市有虹吸效应]]

    • [[公园地产是稀缺资源]]

    • [[房屋朝向只要不是纯北西就行 & 买房首选市中心、公园地产]]

    • [[分期付款买房,如果房价上涨,很容易毁约 & 自住要选大品牌开发商]]

  • [[房地产游戏的模式三个环节]]

  • [[政府限制政策房的利润,那kfs就一定会偷工减料]]

  • 分区域

    • [[北京回龙观:有上涨空间]]

      • [[北京老式砖混板楼的最终命运?]]

      • [[北京三环塔楼]]

      • [[西五环内的别墅,是相当稀缺的资源]]

      • [[北京华清嘉园]]

      • [[北京大兴]]

      • [[3万入手北京四环,你也是幸运的]]

    • [[重庆:高层和别墅怎么选?]]

    • [[河南郑州与洛阳]]

    • [[济南 & 大规律拆迁的城市房价不会下降]]

    • [[桂林 vs 南宁]]

    • [[南宁买房建议]]

    • [[武汉:城市发展空间的大小,往往和房价的升值空间成正比]]

    • [[昆山房价分析与买房]]

    • [[杭州:富人的天堂]]

    • [[贵阳,资源的稀缺导致权贵更容易垄断,通过低收入高物价的方式剥削底层群体]]

股市

  • [[通过股指期数看沪深 300 指数趋势]]

历史

  • 历史上的买房

    • [[历史上买房最好的朝代]]

    • [[宋代房奴]]

  • 人物

    • [[“奸臣”贾似道]]

    • [[奸臣蔡京]]

    • [[毛泽东往事]]

    • [[李商隐「渣男」祖师爷]]

  • [[上层阶级的盛世]]

  • [[kkndme 推荐的历史书]]

  • [[农民政权的缺点]]

  • [[中国的朝代更替]]

    • [[经济问题是导致清朝灭亡]]

    • [[货币供应不足是明朝的真正原因]]

  • [[具体情况具体分析,如果看不懂,一定是没有抓住问题本质]]

  • [[历史总是惊人的相似]]

  • [[历史的结局]]

— 没有整理

[[官方公布的统计数据,只要关系到某个群体的利益,就一定会被修饰导致失真]] #card
[[关于垄断]]

[[民生问题]]

[[房产税的制定原则]]

[[维稳的本质是人民能吃饱饭]]

[[公租房是为体制内服务的]]

[[房产税一定会转嫁给租房人]]

[[巨大的税收消耗也决定了GDP必须快速增长 & 公务员越精减越多]]

[[体制内的住房问题有国家保驾护航]]

[[依靠但又不能完全依靠开发商建公租房]]

[[解决体制外的住房问题:国家垄断,细水长流收租]]

[[普通人买得起「优质商品房」就尽早买把]]

[[商品房和公租房的区别]]

[[提议通过征普税调节贫富差距,不是傻,就是坏]]

[[调控带来的影响]]

[[农产品的价格关系到影响稳定的吃饭问题]]

[[农产品价格的抬头会导致物价全面上涨,但国家不会坐视不管且有能力管]]

[[资金会在优质资产之间流动,而决定优质资产价格的是精英阶层的购买力]]

[[资金流向规律决定了农产品和资产价格总有一个要涨,人为压制,一定会按下葫芦浮起瓢]]

[[资金流向规律决定了洼地不会一直是洼地]]

[[决定房价的因素有很多,具体情况具体分析]]

[[房价暴涨是相对于钱而言的,不是相对于实际购买力而言的]]

[[土地不稀缺,优质土地稀缺]]

[[集中发展大城市是导致优质土地稀缺的原因]]

[[为人民服务是说给人民听的]]

[[历史是一面镜子,不同的国情决定了采取同样的政策结果可能是南辕北辙]]

[[屁股决定脑袋,人民不知厉害关系选房子,政府选农产品]]

[[各个阶层的住房问题都安排的妥妥的]]

[[顶层的岁月静好来自于底层的负重前行]]

[[底层指的是体制外底薪白领]]

[[资金终会流向具有稀缺性的资产]]

[[土地的稀缺决定了大多数人永远买不起想买的房子]]

[[一二线买房只会越来越难,最终租房会成为主流]]

[[如果房价不涨,那其他产品会怎么涨]]

[[政府如何利用公租房控制租房市场]]

[[城中村不会长期存在]]

[[三四线城市的未来]]

[[稀缺房的价格永远涨]]

[[购买房价基数低的省会城市,怎么都不会亏的]]

[[房地产是资本市场还是实体经济?]]

[[公租房的量级不会冲击到商品房市场]]

[[权利让革族成为苗族的一支]]

[[房价是否会跌,如果会,会怎么跌]]

[[通货膨胀是减缓灭亡最好的良药]]

[[经济问题是导致清朝灭亡]]

[[房产投资的几点建议]]

[[南宁买房建议]]

[[经济适用房都是内部分配的]]

[[普通人怎么办:尽早买房,努力挣钱抵御通胀]]

[[房价会出现很多上下波动]]

[[买房时机的选择(真TM厉害,这竟然是2010年的建议,可恨的是2020年才看到)]]

[[永远不要和白痴争辩,因为他会把你的智商拉到和他同一水平,然后用丰富的经验打败你]]

[[当个农民也要懂政策,要顺政策而为]]

[[房子越早买越好,政府想钱想疯了]]

[[利益才是政府行为的指挥棒]]

[[建议一定是建立在严肃考察的基础上]]

[[石家庄]]

[[投资最重要的是稀缺性,买房首选公务员小区]]

[[远离垃圾人]]

[[高房价或许有天会崩盘,但你等不到那一天]]

[[房子不仅要早买,而且有能力的话不要怕压力,争取一步到位]]

[[要用发展的眼光看问题,只要努力,只会越来越好,越来越轻松]]

[[性格决定命运]]

[[2012年不取消调控,还有房价维稳顺利换届考虑]]

[[洼地最终都会被填平,多数城市是早买胜于晚买]]

[[西部]]

[[短期波动属于正常现象,需要关注的是长期趋势]]

[[对于具备投资属性的商品,供求关系是指货币与商品之间的关系]]

[[早买的风险小于晚买]]

[[小开发商的房子能不能买?]]

[[大兴土木搞建设的城市,房价都底不了]]

[[天子脚下:二手老房买得好,拆迁补偿少不了]]

[[君为贵,商人、技工次之,农民为轻,打工人为底]]

[[历史总是惊人的相似]]

[[关于房贷]]

[[买卖商品房会逐渐变成富人的游戏]]

[[政府还是更在意农民问题]]

[[治国需要用贪官、反贪官]]

[[二线城市典型代表]]

[[关于商铺和住宅投资]]

[[关于房产调控]]

[[关于房产税]]

[[老公房的拆迁问题]]

[[投资新房还是老公房]]

[[高端盘有房价带动作用]]

[[买房和没买房的差距]]

[[房产交易历史]]

[[契税的历史]]

[[廉租房的历史]]

[[未来房地产市场的发展]]

[[房产到期]]

[[买学区房问题]]

[[历史的结局]]

[[人口普查]]

[[买房难之回不去的乡 & 拉美人过得比你想象的好]]

[[北京西三旗]]

[[买房争取一步到位]]

[[收入稳定的家庭如何买房]]

[[贷款还是全款]]

[[00后的买房需求从何而来]]

[[意大利的住房模式]]

[[北京远洋山水]]

[[精英的资产]]

[[北京三环塔楼]]

[[普通人买房的未来]]

[[北京房价超香港]]

[[中国的新闻不可信,精英的有钱是你想象不到的]]

[[限贷对精英没用]]

[[外国国籍在中国生活是更好的选择]]

[[通货膨胀和房价的关系]]

[[南京买房分析 & 买房要做好调查分析工作]]

[[读史读的不是故事,还是找历史规律,以古鉴今]]

[[贵阳]]

[[富人越富、穷人越穷]]

[[深圳 & 昆明仇书记 & 通货膨胀体制内高枕无忧、体制外自求多福]]

[[长春]]

[[佛山]]

[[首付提高的逻辑]]

[[四线城市]]

[[苏州工业园]]

[[住房公积金利率]]

[[公务员小区牛逼]]

[[俄罗斯]]

[[珠海 & 唯一自住房不只是投资 & 调控是最佳的选房时机]]

[[命运之矛]]

[[除非外族入侵或全国大饥荒,否则双轨制决定了房价不会崩盘]]

[[kkndme聊北宋、唐朝]]

[[宋代房奴]]

[[王安石的青苗法之国家出政策的动机]]

[[什么是社会公平]]

[[还是有很多有钱人]]

[[开发商思维]]

[[郑州有前景]]

[[张献忠屠川]]

[[洪秀全、黄巢、李自成]]

[[朱元璋]]

[[曹参治国]]

[[晁错]]

[[民营小企业的老板和打工者]]

[[郭解]]

[[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

  • tjOOSAN:

。。。。。。暴涨之后。。。。。。

我们不就是第二个日本吗?

供求关系?供求关系,现在是谁在决定?国家!

国家的经济结构决定的。制造业的资金都进入房地产了。能不涨吗?普通人有几个可以够炒房资格的?

日本 当初也是供求关系!~~ 供求关系的根本也不应脱离,国家的经济实力!!

还暴涨?怎么涨?再涨都够去美国买房了!! 你这不扯淡么

kkndme:

中国和日本最大的不同在于日本的货币是开放的,中国的不是,是不能自由兑换的。

暴涨是相对于钱而言的,不是相对于实际购买力而言的。

80年代工资200多块钱一个月的时候,是不能想象90年代末北京城区5000每平米的房价的。那时候万元户已经是富人的代表了。

90年代末工资1000块钱的时候是不能想象现在30000一平米的房价的。90年代的100万绝对是富裕群体。可现在连个中产都算不上。

货币的持续贬值你没有考虑

#card 集中发展大城市是导致优质土地稀缺的原因 #card

  • 中国经济发展不平衡,牺牲全国大多数城市和乡村,来保证北上广深及大部分省会城市的繁荣才是造成土地稀缺的愿意。

土地有的是,房子有的是,但好位置的土地和房子并不多。

一方面大量的小县城和乡镇、村庄人口锐减,因为缺乏谋生手段不得不背景离乡外出打工,另一方面超大型城市越来越拥挤,土地资源越来越稀缺。

这就是中国集中发展极少数标杆城市所造成的呀,也是因为如此,才造成了中国金子塔式的收入结构,贫富差距越来越悬殊。

#card 历史是一面镜子,不同的国情决定了采取同样的政策结果可能是南辕北辙 #card

  • 博古才能通今,不了解历史无法治理国家,不了解历史也无法对事务有一个清楚的认识。

我们的今天本来就是历史的延续,前人经验和智慧的总结,不是一句话就可以抹杀的。

因为秦以后漫长帝国时代的大一统,才会把中央集权延续到现在。

而西方封建时代延续到地理大发现,诸侯割据王国、公国、侯国林立为现代的西方提供了民主制度的可能。

在制度上完全的不可比性,使向国际接轨成为了笑话。

我们看到的结果就是,物价上涨与西方接轨,甚至堂而皇之的超过西方,体制外的工资则与非洲结果,也算是国际化了。

#card ## 屁股决定脑袋,人民不知厉害关系选房子,政府选农产品

  • 对于渴望拥有一套产权住房的都市小白领对希望房价狂降已经到了歇斯底里的程度,他们赞成农产品价格放开,让资金炒作农产品,而离开房地产市场。理由很简单,一套房子一涨就是几十万甚至上百万,而大米小麦,一斤就算涨到10块,也根本不能影响到自己的生活质量。

如果我国农产品价格是开放的,资金流向大米、小麦、猪肉,并且允许囤积,房地产一定会下跌的,这是毫无疑问的。

但是,我们看到的绝不是10块钱一斤的大米、小麦,而是500块钱、1000块钱一斤的大米、小麦。

我国将会出现大面积的饥荒,几千万甚至上亿的底层人士饿死街头,社会将出现大的动荡。

而产权房屋价格的上涨牺牲的主体只是体制外部分都市白领的利益,换来的不过是网络上没完没了的牢骚和咒骂。

巨量资金必须有地方去,如今面临的房地产和农产品之间的选择,你认为政府会怎么做?

#card 各个阶层的住房问题都安排的妥妥的
#card 顶层的岁月静好来自于底层的负重前行
#card 资金终会流向具有稀缺性的资产
#card 土地的稀缺决定了大多数人永远买不起想买的房子
#card 一二线买房只会越来越难,最终租房会成为主流

  • 在北京一个年薪15万的普通家庭仍然买的起房,在五环外,只是你愿不愿意买。

  • 但以后一个年薪15-20万的普通家庭买房子,即使是五环外的,也只能是梦想了。

  • 租房将成为今后小白领主流的生活方式。

#card 如果房价不涨,那其他产品会怎么涨

[[城中村不会长期存在]]

#card 三四线城市的未来
id:: 67deb4c0-7f92-4785-b76e-69d2d9e6e2ec

#card 购买房价基数低的省会城市,怎么都不会亏的
#card 公租房的量级不会冲击到商品房市场
id:: 67cc015d-55c6-4da9-9f6d-2a39214c3030

#card 权利让革族成为苗族的一支
#card 房价是否会跌,如果会,会怎么跌
#card 通货膨胀是减缓灭亡最好的良药
#card 房产投资的几点建议
id:: 67cc0165-7147-48be-8365-feaeeb7d32be

#card 经济适用房都是内部分配的
[[普通人怎么办:尽早买房,努力挣钱抵御通胀]]

#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 收紧住房贷款
[[买房:物业与房贷]]

  • fallenleafe:

关注本贴多日,非常欣赏楼主的睿智和理性。
小女子也是上海众多买房人之一,目前所谓单身剩女,得家人支持有一百五十万的首付金。基本确定买在内环交通方便的次新房(老公房停车太成问题)。
对上海浦西内环内的诸多区位和楼盘做过研究,发现离地铁近的同时能有苏州河景观的房源最具性价比,满足交通性和景观稀缺性的双重优势(上海内环内几乎没什么安静同时又具有自然资源的地方)。
现在基本确定了两个小区,比较纠结的问题有两个。
第一个问题,一个是小区管理和区位优势明显单价在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 西安与重庆
#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

启发

  • 按类型给 tag 分配颜色

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 也很重要
  • 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 管理和安排待阅读的材料

  • Source pasting 粘贴向导,记录资源

SimpleAnalytics 网页访问信息分析脚本

Tag coloration and columnizing 实现按颜色对标签进行排序

Philosophy 笔记关联方法背后对应的哲学

  • JustGetStarted 无压力记录想法,区分完成的笔记和没有完成的笔记

  • ThreeLinks


@A Unified Approach to Interpreting Model Predictions

[[Abstract]]

  • Understanding why a model makes a certain prediction can be as crucial as the prediction’s accuracy in many applications. However, the highest accuracy for large modern datasets is often achieved by complex models that even experts struggle to interpret, such as ensemble or deep learning models, creating a tension between accuracy and interpretability. In response, various methods have recently been proposed to help users interpret the predictions of complex models, but it is often unclear how these methods are related and when one method is preferable over another. To address this problem, we present a unified framework for interpreting predictions, SHAP (SHapley Additive exPlanations). SHAP assigns each feature an importance value for a particular prediction. Its novel components include: (1) the identification of a new class of additive feature importance measures, and (2) theoretical results showing there is a unique solution in this class with a set of desirable properties. The new class unifies six existing methods, notable because several recent methods in the class lack the proposed desirable properties. Based on insights from this unification, we present new methods that show improved computational performance and/or better consistency with human intuition than previous approaches.

[[Attachments]]

SHAPfeature (x)=set:feature  set [ set ×(F set )]1[Predictset (x)Predictset \ feature (x)]\operatorname{SHAP}_{\text {feature }}(x)=\sum_{\text {set:feature } \in \text { set }}\left[\mid \text { set } \mid \times\left(\begin{array}{c}F \\ \mid \text { set } \mid\end{array}\right)\right]^{-1}\left[\operatorname{Predict}_{\text {set }}(x)-\operatorname{Predict}_{\text {set } \backslash \text { feature }}(x)\right]

特征 Shap 值

  • 给定当前的一组特征值,特征值对实际预测值与平均预测值之差的贡献就是估计的 Shapley 值。

  • 不是从模型训练中删除特征后的预测值之差

  • n 个特征对应 2n2^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 :-> 明确优先级调整阅读顺序

  • effective learning is all about 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 tasklists

@How to Take Smart Notes

Highlights

  • 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.

    1. Make literature notes. Whenever you read something, make notes about the content. Write down what you don’t want to forget or think you might use in your own thinking or writing.
    1. Now add your new permanent notes to the slip-box by: a)    Filing each one behind one or more related notes (with a program, you can put one note “behind” multiple notes; if you use pen and paper like Luhmann, you have to decide where it fits best and add manual links to the other notes). Look to which note the new one directly relates or, if it does not relate directly to any other note yet, just file it behind the last one. b)    Adding links to related notes. c)    Making sure you will be able to find this note later by either linking to it from your index or by making a link to it on a note that you use as an entry point to a discussion or topic and is itself linked to the index.
  • 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

卡片盒的价值

  • 很多小说家会强迫自己每天写作多久以或写多少字,就好像储蓄一样。学术写作除了写之外,还有很多其他的步骤需要花费时间,但是每天写的卡片其实是可以相互链接的内容,这就是复利的力量。[[网络效应]]

Ref

  • [[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 来取代之前高亮文字,摘要+想法。

      • 高亮浪费时间,高亮的意义在于带来的想法,记录你的想法。

        • why did I highlight this?
      • 单纯高亮的文字,脱离语义后没有意义

      • 笔记对你的价值,而不是和书的相关程度

    • 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

      • 对笔记按主题分类,roam 可以使用引用 [[爱]]
    • Use those ideas to create new works!

      • 知识的复利

@中国未来20年的经济大趋势 旧

[[Summary]] 地理位置不同决定中国和西方的发展走出不同的道路,政府在两种文化中扮演非常不同的角色。

一 、 中西方的历史文化差异 ;

  • 地理环境

    • 农业文明

      • 农业文明的基础是光合作用 , 它把太阳能转化成农作物和可畜养动物 , 而动植物都依赖土地 。 这就意味着土地的大小决定了农业产出和所能负担的人口数量 。

      • 在整个农业文明的历史中 , 土地的稀缺性是贯穿始终的主题 。

      • 某个社会一旦拥有更多的土地 , 就会产生更多的人口 , 当人口多到一定程度 , 超过土地大小所能承载的极限 , 就会陷入[[马尔萨斯陷阱]] 。

      • 中华文明5000年历史上 , 这样的争战数不胜数 。 最终的胜者是那些发明出一种大规模动员人民的方式的社会 ,也就是政治组织形式比较完善的社会 。

        • 政治贤能制 ( Political Meritocracy )

          • 改变过去政治权力通过血缘关系来分配和传承

          • 秦国商鞅变法开创任人唯贤的制度

    • 海洋文明

      • 地理大发现

        • 欧洲发现美洲大陆的概率远远高于中国

        • 美洲的土地避免欧洲陷入[[马尔萨斯陷阱]]

      • 启蒙运动和科学革命

        • 经济贤能制 ( Economic Meritocracy )

        • 农业文明是由光合作用原理决定的 , 光合作用对能量转换的极限受制于土地的大小 。 土地的大小有自然的上限 , 因此农业文明的经济是短缺经济 。

        • 而以现代科学技术为基础的文明能够释放出持续的 、 复利式的经济增长的动力 , 将农业时代的短缺经济转变为富足经济 。

二 、 中国的现代化历程及近四十年的经济奇迹 ;

  • 现代文明的本质并非政治制度 , 而是自由市场经济与现代科学技术的结合 。

    • 中国的成功说明政治民主并不是现代化的先决条件
  • 中国独特的政治经济体系,三合一市场机制

    • “ 三合一市场机制 ” , 就是中央政府 、 地方政府和企业之间的密切合作 。

      • 中央政府制定战略,提供资源支持,调节经济周期。

      • 地方政府之间相互竞争,为商业公司提供总部式服务。

    • 三合一市场机制缺点

      • 当地方政府像企业一样提供商业服务时 , 它们会要求租金 , 有些官员甚至会以权谋私 , 要求企业直接把租金支付给个人 。

      • 因此 , 这种模式在创造了超高速经济增长的同时 , 也催生了严重的贪腐 、 寻租 、 环境污染恶化 、 不同地区之间的恶性竞争 、 不可持续的贫富分化 , 和高度依赖债务的经济 , 因为债务是中央政府用来缓和经济周期起伏的主要方式之一 。

  • 反全球化运动和各种民粹主义政治运动

    • 当中国成为世界第二大经济体 、 世界上最大的贸易国和最大的工业国时 , 其他国家和地区的经济没有达到9%的增速来适应这么多的产出 。

    • 全球化的结果之一是 , 那些原本发达的工业大国正在失去其工业上的优势基础 。 而全球化为发达国家带来的好处又集中地过度分配给了科技与金融领域中的精英们 , 贫富分化日益严重 , 中产阶级的生活水平停滞不前 。

三 、 当前投资人尤其是海外投资人对中国的悲观情绪 ;

  • 十八大以来的反腐运动两个目标

    • 通过全面从严治党来加强对整个国家社会的掌控 ;

      • 加强党的领导也带来了更加稳定的政府 、 稳定的国家 , 和稳定 、 持续 、 共同 、 单一的大市场 。
    • 为中国继续创造中高速 ( 相对于超高速 ) 的 、 可持续的经济增长 。

  • [[中美贸易战]]

    • 章家敦 ( Gordon Chang ) 2001年所写的 《 中国即将崩塌 》 ( The Coming Collapse of China )

    • [[供给侧改革]]降低中国经济对国外市场的依赖性,净出口占中国 GDP 的比例下降。

四 、 经济发展的三个不同阶段 : 今天中国与西方的位置 ;

  • 刘易斯拐点

    • 随着工业发展到一定的规模之后 , 农村剩余劳动人口从过剩变到短缺
  • 过了刘易斯拐点后,经济发展进入成熟阶段,黄金时代

    • 企业需要通过提高对生产设备的投资以提高产出 , 同时迎合满足雇员的需求 , 增加工资 , 改善工作环境和生产设备等等 。

    • 在这个时期 , 因为劳动人口已经开始短缺 , 经济发展会导致工资水平不断上升 , 工资上升又引起消费水平上升 , 储蓄水平和投资水平也会上升 , 这样公司的利润也会上升 , 形成了一个互相作用 、 向上的正向循环 。

    • 这个阶段中 , 几乎社会中的每个人都能享受到经济发展的成果 , 同时会形成一个以中产阶级为主的消费社会 , 整个国家进入经济发展的黄金时期 。

  • 刘易斯拐点的被追赶阶段

    • 企业人力成本不断上升,海外其他新兴经济会变更更加有吸引力,企业开始转移投资。

    • 这一阶段 , 经济仍然在发展 , 但是经济发展的成果对社会中的各个阶层已经不再均衡 。 劳工需要靠自己生存 。

    • 那些技术含量比较高的工作 , 比如科学技术 、 金融 、 国际市场类的工作回报会很高 , 资本的海外回报也会很高 。

    • 但是社会的总体工资水平会停滞不前 , 国内投资机会大大减少 。

  • 经济发展不同阶段政府宏观政策的作用

    • 在早期工业化过程中 , 政府的财政政策会发挥巨大的作用 , 投资基础设施 、 资源 、 出口相关服务等都有助于新兴国家迅速进入工业化状态 。

    • 进入到后刘易斯拐点的成熟阶段以后 , 经济发展主要依靠国内消费 , 处在市场前沿的私人部门企业家更能把握市场瞬息万变的商机 。 此时依靠财政政策的进一步投资就开始和私营部门的投资互相冲突 、 互相竞争资源 。 这一时期 , 货币政策更能有效地调动私营部门的积极性 , 促进经济发展 。

    • 到了被追赶阶段 , 因为国内投资环境恶化 , 投资机会减少 , 私营部门因海外投资收益更高 , 而不愿意投资国内 。 此时政府的财政政策又变得更为重要 , 它可以弥补国内的私营部门投资不足 , 居民储蓄过多而消费不足 。 反而货币政策在这一阶段会常常失灵 。

    • 但是因为政府的惯性比较强 , 所以常常当经济发展阶段发生变化时 , 政策的执行仍然停留在上一个发展阶段的成功经验中 。

五 、 中国经济的增长潜力 。

  • 工程师红利

    • 现代文明的基础是现代科技和自由市场经济的结合 , 与政治组织方式关系不大 。 而技术密度却与经济增长直接相关 。

    • 类似于之前的农业人口红利?

  • 城市化率

    • 新的城市化人口在获得社会福利后,会成为新的消费者。
  • 高储蓄率

    • 支持城市化、支持建设、支持制造业升级

    • 高债务水平

      • 中国以银行债务为主,股票市场及股权融资占整体融资比例很低。

      • 中国政府想做的就是通过资本市场改革从根本上改变中国的融资结构 , 大大增加股权的权重 , 减少债务所占比例 。

      • 资本市场改革将成为解锁高债务比问题和提高融资效率的关键 。

        • “科创板 ” 会采用与美国相同的模式 , 即以信息披露为基础的注册制资本发行 , 而非以前的审批制 。
  • 中国政府在处理重大问题 、 危机时的灵活性和实用性

    • 比如中国政府在中美贸易冲突问题上已经调整了与美国谈判的策略 , 也改变了之前对私营企业家的一些处理方式和对私营企业的借贷政策 , 尤其是在证券市场暴跌中对私营企业金融股权的处理等等 。
  • 东亚同样受儒教影响的国家 、 地区的发展历程对预测中国经济前景具有启发意义

与[[价值投资]]相关的看法

  • 关注对未来大概率正确的预测,分析尽量保持客观理性 , 摒弃任何意识形态及情感带来的偏见 。

  • 作为基本面投资人 , 我们为什么现在投资中国呢 ? 因为在那里我们仍然能够发现一些优秀龙头企业 , 它们比西方的同类公司更便宜 , 而且增长速度更快 。 这就是我们在中国投资的逻辑。

  • 我们是自下而上的投资者 。 我们的投资一般不受整体宏观环境的影响 。 今天我们之所以要讨论这些问题 , 是因为我们所投资的公司在某种程度上与它们所在国家的命运也是息息相关的 。 所以我们要对这个国家有一个粗略的认知 。 这种认知不一定要非常精确 , 也不需要时时正确 。 我们只需要对所投注的国家未来20年或30年的情况有个大致的推测 。 这就是为什么我们要做这些分析 , 为什么我们要思考这些问题 。


@互联网是人类历史的一段弯路吗

造富神话背后,互联网的那些阴暗面 - 少数派

  • 1 、并未缩小的社会格差

  • 2、在泛滥的信息汪洋中只取一瓢饮,让人性的弱点凸显

    • 一是过度关注自己在鄙视链中的位置从而深陷焦虑漩涡

    • 二是移动互联网+智能算法带来世界越来越坏的错觉。

  • 文章结构

    • 至暗时刻

    • 未被兑现的承诺

    • 元叙事的倒掉

    • 迈入风险社会的最后一步

    • 相信希望,而不是幻想

互联网是一种集权技术吗?

一种是完全由无形之手也即自由市场所主导的西方模式,另一种则是由强监管、强准入、强管理主导的东方模式。最终到集权、矮化公民为消费者、侵犯隐私这一终点。

如果产品是免费的,那么你就是商品。

互联网广告的竞争优势是利用用户隐私

企业提供互联网服务也有边际效应

更多的近似于美国 1998 年制定的《数字千年版权法案》(DMCA法案)中避风港原则所描述的内容,其大致为:互联网服务的提供者如不知晓用户的行为侵权,则在侵权案件中可以免责。

红旗原则是指:只有在互联网络服务提供者不明知或者不应知晓自己所传播的信息属于侵权信息或者链接的作品、表演、录音录像制品是侵权作品的情况下,才能适用避风港原则免于处罚。

技术中立代表:bittorrent

早在 1964 年麦克·卢汉就已经在其最重要的著作《理解媒介》中描述过“媒介即信息”——媒体天然具有意识形态。

苹果公司开启的是自苏联解体以来,人类消费科技的最后一个技术奇点。在 iPhone 面世的 10 年里,再没有一款产品,像智能手机那样彻底改变我们的生活、工作甚至是社会运作方式。

技术变革评价标准:技术裂变能力以及技术普及能力。

互联网危机诞生于行业给社会带来的刚性福祉放缓

在复杂经济学创始人布莱恩·阿瑟所著的《技术的本质》一书中,将技术定义为“有目的捕获并利用现象的方法”。并因此,组合被视为技术进步的重要来源之一,它就像是我们用乐高搭建一个物品——我们需要有轮子、传动装置,才能构建车。

网络普及加大信息格差

互联网对全球的链接构成利用信息格差进行剥削的基础条件

  • Facebook 和 Google 可以轻易的收割欧洲用户的注意力,并产生经济价值,而这些价值最终却主要流向其它地区不是在欧洲本土。无论这是否是互联网公司的原意,但这客观上构成了数字时代的新型经济殖民,削减欧盟诸国社会福利的资金来源,而欧盟境内的国民却很难注意到这一点。

在相对狭小的舆论环境中,更有理的人更容易“声量大”;而在绝对开放环境中,则是谁的声量大谁“更有理。”

广场式社交媒体第一次赋予了个体侮辱一整个群体中每个个体的能力。

千人千面的算法会加剧人们的偏见和固有印象。为读者呈现它想看到的东西,并告诉他这就是全世界。加剧人以群分。

互联网从一扇通向世界的窗口,变成一个善于美颜的镜子

当人们获取资讯的方式从主动订阅、搜索,变为被动的“下拉刷新”的时候,互联网便不再是一扇通向世界的窗口,而只是一个善于美颜的镜子。

元叙事一套叙事结构(亦或话语体系),试图对人类过去、现在及未来的全部社会活动给出正确答案。

[[@人类简史]] 中将人类最伟大的能力归结为“创造和相信虚构故事”的能力。

这便是元叙事存在的意义,一个虚构的美好故事,让我们能够跨越时间空间为之努力,并使得彼此陌生甚至有一定利益冲突的群体之间形成合作。尽管我们可能永远达不到童话故事中所描述的 Happy ever after,但这并不妨碍所有人都在这一过程中收获一些好处。

二战后美国实现不生产一针一线亦能控制全球的能力,新型的以美元为工具的剪刀差,使得跨区域的剥削和经济殖民不再变得血腥。

元叙述反性

网络放大恐惧 网络的精确记忆和广泛传播,使得信用受损的影响与速度远远超过以往时代。

  • 传统出租车和滴滴的安全性

一个清析定义且具有强大控制力的道德标准会在各种维度上阻碍人类社会的进步。

如库克所说,“我并不担心机器像人类一样思考,我担心的是人像机器一样思考”。利用技术手段精确执行某种当下的道德,即是让人像机器一样思考。

新的模式在初期存在不用遵守旧的规则的优势,但是当企业开始受到监管和法律的约束,并履行其应承担的责任时,其营业成本必将上升并转嫁至消费者。

技术特权回收期现象:个体福祉在下降,而社会福祉却在上升。


@人类简史

英国科技革命,欧洲 1850 开始的优势

中国无法赶超的原因是关于整个社会的想法和组织不同。

之前社会发展的动力:宗教、帝国、金钱

科技革命和工业革命之后:科学、帝国、资本

地理大发现之后世界的发在,科学在帝国和资本的帮助下,世界变得更加一体。但是没有变得更好。

饥饿、疾病、战争

一、超越死亡

二、全球的幸福

三、人类取得神一般的创造力和毁灭力

[[Ref]]


@中国未来20年的经济大趋势

[[Summary]] 地理位置不同决定中国和西方的发展走出不同的道路,政府在两种文化中扮演非常不同的角色。

一 、 中西方的历史文化差异 ;

  • 地理环境

    • 农业文明

      • 农业文明的基础是光合作用 , 它把太阳能转化成农作物和可畜养动物 , 而动植物都依赖土地 。 这就意味着土地的大小决定了农业产出和所能负担的人口数量 。

      • 在整个农业文明的历史中 , 土地的稀缺性是贯穿始终的主题 。

      • 某个社会一旦拥有更多的土地 , 就会产生更多的人口 , 当人口多到一定程度 , 超过土地大小所能承载的极限 , 就会陷入[[马尔萨斯陷阱]] 。

      • 中华文明5000年历史上 , 这样的争战数不胜数 。 最终的胜者是那些发明出一种大规模动员人民的方式的社会 ,也就是政治组织形式比较完善的社会 。

        • 政治贤能制 ( Political Meritocracy )

          • 改变过去政治权力通过血缘关系来分配和传承

          • 秦国商鞅变法开创任人唯贤的制度

    • 海洋文明

      • 地理大发现

        • 欧洲发现美洲大陆的概率远远高于中国

        • 美洲的土地避免欧洲陷入[[马尔萨斯陷阱]]

      • 启蒙运动和科学革命

        • 经济贤能制 ( Economic Meritocracy )

        • 农业文明是由光合作用原理决定的 , 光合作用对能量转换的极限受制于土地的大小 。 土地的大小有自然的上限 , 因此农业文明的经济是短缺经济 。

        • 而以现代科学技术为基础的文明能够释放出持续的 、 复利式的经济增长的动力 , 将农业时代的短缺经济转变为富足经济 。

二 、 中国的现代化历程及近四十年的经济奇迹 ;

  • 现代文明的本质并非政治制度 , 而是自由市场经济与现代科学技术的结合 。

    • 中国的成功说明政治民主并不是现代化的先决条件
  • 中国独特的政治经济体系,三合一市场机制

    • “ 三合一市场机制 ” , 就是中央政府 、 地方政府和企业之间的密切合作 。

      • 中央政府制定战略,提供资源支持,调节经济周期。

      • 地方政府之间相互竞争,为商业公司提供总部式服务。

    • 三合一市场机制缺点

      • 当地方政府像企业一样提供商业服务时 , 它们会要求租金 , 有些官员甚至会以权谋私 , 要求企业直接把租金支付给个人 。

      • 因此 , 这种模式在创造了超高速经济增长的同时 , 也催生了严重的贪腐 、 寻租 、 环境污染恶化 、 不同地区之间的恶性竞争 、 不可持续的贫富分化 , 和高度依赖债务的经济 , 因为债务是中央政府用来缓和经济周期起伏的主要方式之一 。

  • 反全球化运动和各种民粹主义政治运动

    • 当中国成为世界第二大经济体 、 世界上最大的贸易国和最大的工业国时 , 其他国家和地区的经济没有达到9%的增速来适应这么多的产出 。

    • 全球化的结果之一是 , 那些原本发达的工业大国正在失去其工业上的优势基础 。 而全球化为发达国家带来的好处又集中地过度分配给了科技与金融领域中的精英们 , 贫富分化日益严重 , 中产阶级的生活水平停滞不前 。

三 、 当前投资人尤其是海外投资人对中国的悲观情绪 ;

  • 十八大以来的反腐运动两个目标

    • 通过全面从严治党来加强对整个国家社会的掌控 ;

      • 加强党的领导也带来了更加稳定的政府 、 稳定的国家 , 和稳定 、 持续 、 共同 、 单一的大市场 。
    • 为中国继续创造中高速 ( 相对于超高速 ) 的 、 可持续的经济增长 。

  • [[中美贸易战]]

    • 章家敦 ( Gordon Chang ) 2001年所写的 《 中国即将崩塌 》 ( The Coming Collapse of China )

    • [[供给侧改革]]降低中国经济对国外市场的依赖性,净出口占中国 GDP 的比例下降。

四 、 经济发展的三个不同阶段 : 今天中国与西方的位置 ;

  • 刘易斯拐点

    • 随着工业发展到一定的规模之后 , 农村剩余劳动人口从过剩变到短缺
  • 过了刘易斯拐点后,经济发展进入成熟阶段,黄金时代

    • 企业需要通过提高对生产设备的投资以提高产出 , 同时迎合满足雇员的需求 , 增加工资 , 改善工作环境和生产设备等等 。

    • 在这个时期 , 因为劳动人口已经开始短缺 , 经济发展会导致工资水平不断上升 , 工资上升又引起消费水平上升 , 储蓄水平和投资水平也会上升 , 这样公司的利润也会上升 , 形成了一个互相作用 、 向上的正向循环 。

    • 这个阶段中 , 几乎社会中的每个人都能享受到经济发展的成果 , 同时会形成一个以中产阶级为主的消费社会 , 整个国家进入经济发展的黄金时期 。

  • 刘易斯拐点的被追赶阶段

    • 企业人力成本不断上升,海外其他新兴经济会变更更加有吸引力,企业开始转移投资。

    • 这一阶段 , 经济仍然在发展 , 但是经济发展的成果对社会中的各个阶层已经不再均衡 。 劳工需要靠自己生存 。

    • 那些技术含量比较高的工作 , 比如科学技术 、 金融 、 国际市场类的工作回报会很高 , 资本的海外回报也会很高 。

    • 但是社会的总体工资水平会停滞不前 , 国内投资机会大大减少 。

  • 经济发展不同阶段政府宏观政策的作用

    • 在早期工业化过程中 , 政府的财政政策会发挥巨大的作用 , 投资基础设施 、 资源 、 出口相关服务等都有助于新兴国家迅速进入工业化状态 。

    • 进入到后刘易斯拐点的成熟阶段以后 , 经济发展主要依靠国内消费 , 处在市场前沿的私人部门企业家更能把握市场瞬息万变的商机 。 此时依靠财政政策的进一步投资就开始和私营部门的投资互相冲突 、 互相竞争资源 。 这一时期 , 货币政策更能有效地调动私营部门的积极性 , 促进经济发展 。

    • 到了被追赶阶段 , 因为国内投资环境恶化 , 投资机会减少 , 私营部门因海外投资收益更高 , 而不愿意投资国内 。 此时政府的财政政策又变得更为重要 , 它可以弥补国内的私营部门投资不足 , 居民储蓄过多而消费不足 。 反而货币政策在这一阶段会常常失灵 。

    • 但是因为政府的惯性比较强 , 所以常常当经济发展阶段发生变化时 , 政策的执行仍然停留在上一个发展阶段的成功经验中 。

五 、 中国经济的增长潜力 。

  • 工程师红利

    • 现代文明的基础是现代科技和自由市场经济的结合 , 与政治组织方式关系不大 。 而技术密度却与经济增长直接相关 。

    • 类似于之前的农业人口红利?

  • 城市化率

    • 新的城市化人口在获得社会福利后,会成为新的消费者。
  • 高储蓄率

    • 支持城市化、支持建设、支持制造业升级

    • 高债务水平

      • 中国以银行债务为主,股票市场及股权融资占整体融资比例很低。

      • 中国政府想做的就是通过资本市场改革从根本上改变中国的融资结构 , 大大增加股权的权重 , 减少债务所占比例 。

      • 资本市场改革将成为解锁高债务比问题和提高融资效率的关键 。

        • “科创板 ” 会采用与美国相同的模式 , 即以信息披露为基础的注册制资本发行 , 而非以前的审批制 。
  • 中国政府在处理重大问题 、 危机时的灵活性和实用性

    • 比如中国政府在中美贸易冲突问题上已经调整了与美国谈判的策略 , 也改变了之前对私营企业家的一些处理方式和对私营企业的借贷政策 , 尤其是在证券市场暴跌中对私营企业金融股权的处理等等 。
  • 东亚同样受儒教影响的国家 、 地区的发展历程对预测中国经济前景具有启发意义

与[[价值投资]]相关的看法

  • 关注对未来大概率正确的预测,分析尽量保持客观理性 , 摒弃任何意识形态及情感带来的偏见 。

  • 作为基本面投资人 , 我们为什么现在投资中国呢 ? 因为在那里我们仍然能够发现一些优秀龙头企业 , 它们比西方的同类公司更便宜 , 而且增长速度更快 。 这就是我们在中国投资的逻辑。

  • 我们是自下而上的投资者 。 我们的投资一般不受整体宏观环境的影响 。 今天我们之所以要讨论这些问题 , 是因为我们所投资的公司在某种程度上与它们所在国家的命运也是息息相关的 。 所以我们要对这个国家有一个粗略的认知 。 这种认知不一定要非常精确 , 也不需要时时正确 。 我们只需要对所投注的国家未来20年或30年的情况有个大致的推测 。 这就是为什么我们要做这些分析 , 为什么我们要思考这些问题 。


@垄断的困境

传统谈及全断与反垄断,往往涉及三个领域:经济, 法律和公共治理。但这三个领域建立的 “全断一反全断”框架均诞生在 “羊毛出在猪身上”这种互联网行业的基本支付转移手法出现之前。

  • 我们先简单概括一下这三个领城都是怎么定义奎断和反垄断的:

      1. 在经济领域,垄断与反垄断围绕全断竞争对产品价格的影响进行讨论。它考量的是垄断企业能在多大程度上影响商品的价格,这种价格是否完全背离市场规律或价值规律,以及这种价格如何影响供需关系。它的博弈双方是企业与消费者。
      1. 在法律领域,全断与反全断围绕企业对市场竞争环境的影响进行讨论。它考量垄断者对竞争者的不正当扼杀和对创新的抑制,博弈双方是企业与企业。
      1. 在公共治理领域,垄断与反垄断围绕垄断企业对税收、公共福祉和政治势力的影响讨论。其博弈双方是企业与社会(或国家)。
  • 上述三个领域对全断企业、全断行为、奎断边界和反垄断方法各有一些分歧和共识。但用“互联网黑话”来说,传统框架甚至没有很好地在互联网领域找到好的“抓手”——互联网服务的商品究竞是什么,价格是什么,市场是什么。如果连这些都尚未明晰,那么套用传统的、以钱易物的商业逻辑下形成的“垄断一反垄断”框架,必然出现问题。

无效垄断

  • 从这个财务状况来看,无论滴滴是否垄断,它到目前为止都尚末达成资本所要形成的 “有效”一—赚钱。

  • 在互联网领城,仅仅凭借复制或借鉴,在几乎没有关键性壁垒的情况下就可以对已有的垄断市场进行破坏。这是传统垄断行业或者说原子经济时代不具备的新特性。这也导致了无效全断的其中一种:无壁垒垄断。

  • 无壁垒垄断的定义很简单:市场上某个企业拥有较高市场份额,原因是它的竞争对手不想与其竞争,而非不能与其竞争。

  • 自动驾驶

    • 相比起建立一个个区域性的网约车市场,自动驾驶出租车显然是一个能构筑起垄断门槛的业务。

    • 有两派商业势力在争夺自动驾驶交通业的市场,一派是代表旧生产关系的网约车平台,另一派是代表新生产工具的车企。

    • 在从 2020 年到 2040 年之中的某个时间点里,生产关系派很可能会发生内部斗争,阻碍其对新生产工具的运用。

    • 网约车平台整体是轻资产模式,其最重要的外部资源是网约车司机这种 “传统运力”,它的意义就像用户之于微信。全面进军无人驾驶出租车,会在一个特定的时间点破坏平台与长期合作群体之间的友好关系,造成难以调解的冲突,就像网约车出现时出租车司机对网约车平台的抵制一样。而对于2040年的车企或新诞生的以自动驾驶技术为核心的新运力平台来说,则没有这种“历史包袱”,可以轻裝上路快速增长。如果特斯拉的L5自动驾驶成熱了。它可以迅速组建一个自动驾驶出租车公司。但Uber即便是在拥有同样成熱的自动驾驶技术情况下,也要面临如何遣散数百万网约车司机而不引发社会事件的问题。

中国互联网的第一起屏蔽

  • 2008年9月8日 下午,上线五年、初具规模的淘宝网宣布了一项新的“消费者保障计划”。这项消费者保障计划中包括:对家电类产品要求商家提供三十天保修、珠宝类商家保真、食品类商家进行资质审核、奢侈品商品延长确认收货期给消费者留足监定时同,以及 “屏蔽搜索引擎对淘宝网商品、商家和淘宝除首页外页面的收录”

    • 简单来说,用户从此时开始,将再也不能从搜素引擎,包括尚末退出中国的谷歌、雅虎和本士搜索引擎百度中找到来自淘宝的绝大部分页面。其中对百度的屏蔽是最为严格的,几乎除了首页,淘宝任何页面都不会出现在百度的搜素结果中。
  • 都说互联网是一门“流量” 的生意,但流动的量实际并不能为互联网公司带来实际的商业价值,只有留下的量,才能真正维系互联网产品的正常发展。因此,与滴滴的无壁垒生断相比,淘宝实际上建立了一种广告市场中的有效生断。

社交垄断能起到的作用比想象的要小得多,局限性也比想象的大得多。

  • 垄断是社交网络体验的一部分。

平台经济是指通过创造一个平台,来撮合那些原本因为交易成本而无法达成的交易。

  • 网约车平台没有对供需关系的本质改变,也没有凭空创造此前不存在的市场。

  • 先决条件,产业链条本身要足够短,或是交易链条可以被互联网技术抹平。

    • 大飞机零件供应商有限,无法形成一个供应链平台。
  • 平台经济的规模会受制于交易成本的限制

企业垄断的唯一目的,是为了赚钱。

  • 垄断是企业赚钱的手段,而不是目的。但在过去十么的互联网领城,有不少的企业都陷人了本末倒置的境地。

  • 为什么“垄断了市场,还能不赚钱”,因为垄断一个并不存在的市场并不是真正的全断。

有效垄断和无效垄断

  • 一、任何在短期和长期均无法赚钱的垄断,都应破视为商业上的无效垄断。

  • 二、有效垄断,应当建立在一种可行的商业模式上。

在经济学上一般认为存在四种市场结构,分别为完全垄断市场、寡头垄断市场、垄断竞争市场、完全竞争市场。

信息流业务平台

  • 人工智能和互联网技术仅仅降低了内容的分发门槛,并未显著降低内容的创作门槛。

  • 信息流业务的边际成本并不是简单的服务器带宽成本,而是随着读者规模扩大后,全网的优质内容生产成本。

资本的无序扩张与无效垄断

  • 为什么会形成无效垄断? 这个答案非常无聊,因为我们己经看到这个答案很多次了:资本的无序扩张。

  • 用企业和资本在鼓吹创业时所说的话术是,风口就是连猪都能飞起来的时机和赛道。但问题是,风口并不应当是一种起点思维,而是一种终点思维。当把一只猪送上天空的时候,预期的是它能在山顶平安降落。而不是不管山是否存在,都先把猪往上吹再等它掉死。( 这里讲一个许多人应该知道的小知识:中国的互联网公司之所以青睐美股,是因为美股没有太多的盈利要求,一家企业即使亏损也可以在境外上市。)

无限游戏是一种计划经济

  • 企业是市场经济中最基本、最主要的市场活动主体。在参与市场竞争的过程中,企业外部的行为往往会遵循价值规律和市场经济的逻辑。但对于绝大多数企业来说,企业内部遵循的是计划经济。要解释这一点,我们需要先去了解一下《公司的本质》,这是英国著名经济学家科斯在1937年发表的论文。

    • 在一个纯粹的市场经济中,企业应该是不复存在的,但为什么企业还是出现了?

      • 科斯指出,企业的本质是一种非价格的统筹机制,企业管理制度和企业家代替了更细微的交易的发生,来协调经济的生产。而之所以这种替代会发生,是由于交易成本的存在。即每达成一次交易,除了服务与产品的实际价格,还要考虑促成交易本身所产生的成本。

      • 交易成本是決定企业规模的重要因素。交易成本大抵是指使得交易成立的一种额外成本,由于这些交易成本的存在,对于一个稍大的企业来说,办公区里的打印机一定是行政配套设施之一,绝无可能让自己的员工为了打印资料而每天去外面的打印店。

      • 企业会将那些维持企业自身运转所必需、且交易成本过高的外部业务内部化,直到它到达—个临界规模。这一临界规模被称为科斯天花板,亦即衡量企业规模极限的值。

      • 此时,在企业外仍是市场经济,但在企业内为了抹除交易成本,它执行的是计划经济。

  • 了解这个框架之后,你可能已经想到了平合经济领域的违和之处:平台经济是企业的半开放子集,它由企业进行管理但需要大量的外部参与者 (几乎是99%),但大多数特有平台的企业仍在遵循计划经济模式运营平台中的二级市场。

  • 我们的商业分析类媒体似乎从来没有发現过这个矛盾点,一方面商业媒体普遍认可近年来互联网公司得以高速发展的原因之一是政府— “看得见的手”——在这一领域动作并不明显(没有太多管制性干预);另一方面又热衷于分析互联网企业与平台的公司战略或平台战略如何取得成功。但企业战路和平台战略,对于平台内的“小市场”来说是 “看得见的手”。看得见的手在这个领域表现的,远比看不见的手要强大得多。

  • 鼓吹“无限游戏。本身,就已经落入了计划经济学家的集白,因为这种分析将一个市场的繁荣完全归功于顶层设计而非自然规律,这是一套连政治经济学派都不再相信的方向。

  • 承认任何企业都只能进行有限游戏,并意识到无限游戏带来的并不是更高的效率,而是规模不经济,是解决无效垄断的大前提。

无效垄断的无效正是源于其对创新的无法防御。

  • 个人内卷实际上源自行业的内卷

    • 互联网行业内部端的996,主要作用不是创造新的价值,而是为了抹平对方的价值。

好垄断

  • 中国铁塔公司,通信基建。

通过计算垄断的成本收益来衡量互联网企业的垄断是否合理。


@天空之城:拉马努金式思维训练法

[[拉马·努金]]一位来自 印度 的数学天才,凭借直觉和灵感产生几千个数学公式,经过验证大部分公式是正确的。
卡尔 纯粹数学与应用数学概要,有结论但是没有详细证明 #card

  • 通过用自己的方法去重构或者重新证明一些已知问题或结论。

机器学习中的拉马努金式思维训练法 #card

  • 首先,看一下论文的标题,你能否从论文标题猜出作者要解决什么样的问题?能否从论文标题大致猜出作者用的什么方法?

    • 如果上面两个问题的答案是肯定的,那么你可以试图恢复作者方法的细节信息,或者自己提出自己的重建方法来解决这个问题;

    • 如果答案是否定的,那么请去看论文的摘要,那里会给你提供更多的信息,再次回答上述两个问题。

  • 如果看完摘要,两个问题的答案依然是否定的,那么可以去看下论文里面的方法图示,之后再次问自己上面两个问题。

  • 如此迭代,像慢慢拼出一副拼图一样,逐步释放给自己更多信息,争取让自己用最少的信息量重建出作者的方法,或者根据已知线索提出自己的解决方法。

  • 然后,到了这一步,你一定已经尝试着猜测着去恢复出你认为作者使用的方法,或者提出了自己的方法。此时你可以去论文里大致看下你猜的对不对,如果猜的不对,问自己下列问题:

    • 你的方法和作者的方法有什么不同?

    • 各自的优点缺点是什么?

    • 哪个更好些?

[[@Item2Vec: Neural Item Embedding for Collaborative Filtering]]

  • 标题 #card

    • 使用神经网络训练 Item Embedding

    • CF 使用 Rating Matrix 数据

    • 分析可能的技术方案

      • 无监督方法

        • 用 word2vec 训练 item embedding
      • [[Triplet Loss]]

        • <item1+,item2+,item-> item1 和 item2 来自同一用户序列中里的商品,item- 为随机选择负例。item1 和 item2 的分数要高于 item1 和 item- 的分数
  • 摘要#card

    • [[Abstract]]

如何判断哪个工作有价值? #card

  • 首先,先看实验部分,如果效果有特别明显的提升,那么这篇论文绝对是值得看的,无论它的方法是简单还是复杂;

  • 而如果效果有提升但是幅度不是很大,我觉得这种工作可看可不看,可以加上一个辅助判断。

    • 辅助判断是:如果方法比较复杂(除非整个思路框架非常新),建议直接扔了不看,有这时间不如去听会歌放松放松,我估计这不会给你的知识更新带来任何损失;

    • 而如果方法比较简洁,那么看你心情,心情好就看,心情不好就不看。

    • 怎么样,这个标准还是很随性很好执行的吧?不用谢。

[[知无涯者]] 拉马努金在英国处境不佳,一直急于发表自己的两部公式笔记,以期待因此能得到人们的肯定。 #card

  • 哈代把拉玛努金拉到莱恩图书馆,指着一排排陈列整齐的书籍对他说:“人这一生获得荣誉的方式有很多种,对我们来说,被选为院士就是一种。但在我看来,如果在我们离世之后,能在莱恩图书馆里,留下一笔遗产,才是最伟大的。这里有《保罗书信》,米尔顿的诗文,有《摩根圣经》,它们都很伟大,但在我这个搞数学的人看来,最重要的一部还是牛顿的《数学原理》。牛顿的著作是这个物理世界的代表,而你的笔记是数学抽象世界的代表,牛顿也花了很长时间来证明自己,因此我们才有义务要把这些证明出来。一旦我们成功了,我相信总有一天,这些笔记在这里会有一席之地。”

[[@刻意练习]] 中提到需要有一位教练,但是在现实中很难每一件事情都能找到指导你的人。作者提出的努马拉金方法给你提供一次对答案的机会。#card

  • 很想之前做作业,然后对答案的过程。

  • 监督学习

  • 假设,建模,求解,优化


@我们到底为什么要做一个诚信的人?

功利主义:我之所以遵守诚信原则,是因为 :-> 规则能给我带来好处。

  • 批判观点 :-> 结论不稳定,过于灵活
    道德主义:我之所以遵守诚信原则,是因为 :-> 诚信原则是对的。
  • 对这个观点的批判 :-> 过于教条,过于僵化。
    正义在永恒中一定能带来好的。

道德功利主义::-> 一个追求功利主义的结果是否符合道德主义。
纯粹的功利主义一定会导致 道德相对主义 :没有什么绝对是对,什么绝对的错。

  • 相对主义是一切罪恶的源头。

  • 善与善之前有冲突。情境主义保持道德主义的判断。


@我的笔记法(借助 Zettelkasten 和 Obsidian)

专业知识笔记

  • 「XXX知识点」

  • 需要单独研究,新建空白笔记。

人文知识笔记

  • 如何解释名词和概念,从阅读中获取新的认知。

  • 不同人对同一个主题的观点是什么?

  • 以[[极权主义]] 为力,我从不同的书中,看到不同的作者对其的描述。

    • 在 [[201912211716-艾希曼在耶路撒冷]] 中,[[汉娜阿伦特]] 说极权主义是,「把个人变成职能行使者和统治机器上的齿轮,将人非人格化处理的制度」

在 [[极权主义的起源]] 一书中,[[汉娜阿伦特]] 更进一步归纳为「极权主义就是将世界上的所有界限抹平,不考虑人的多元性,将人认为是集体中的一员来对待。」
而在 [[历史的终结与最后的人]] 一书中,[[弗朗西斯·福山]] 将近现代国家发展出来的一种有着史无前例的权力的中央制度称之为极权主义。

Zettelkasten

  • 一条笔记只记录一个相关

  • 通过关键字和其他笔记链接

总结

  • 这两年来我越来越意识到我的问题并不是看得东西不够多,而是往往不能理解我所看过的东西。

    • 一方面来随着时间的推移会忘记,

    • 一方面当阅读的时候无法理解所看到的东西时,记忆也就没有那么深刻了。

  • 所以我之后的目标之一便是我要能理解我写下的东西。


@特朗普能走多远

特朗普

  • 有行动力的传统白种上等贵族

  • 触及民众真实需求

希拉里:民主党

  • 男性精英主义

  • 拜登

杰布布什:共和党

避免媒体牵引方向,媒体的报道做为你的材料,研究他的倾向得出结论。

  • 候选人排名顺序

美国总统选举的白马是什么?为什么是黑马

美国总统选举的局是什么?搅局是什么?

选举人行为,应该遵循什么那些标准?谁说了算?

谁对美国的政治人物更加了解?

美国是谁的美国

  • 黑马是美国政治制度纠错的过程

我们有关美国的知识,体验,标准从哪里来的?

哪些是思考美国问题的正确方式

  • 从书本出发

  • 经济基础决定上层建筑

  • 生产力决定生产关系

  • 客观存在决定主观认识

中国党派 人民党,美国党派 精英党,没有基层组织

民主党候选人

  • 党员一人一票

  • 每个州有一个超级代表,一个人一千票。精英控制平民的冲动,防止产生社会主义

  • 不会出标准的民主候选人

  • 民主的起源:[[Aristotle]] 政治学

    • 政体分为常态和变态,民主和共和
  • 精英民主主义捍卫者

共和党极度保守主义意识形态

少数人的政治

[[@21 世纪资本论]] [[资本论]] 问题的本质:在经济,在收益分配,在生产方式,在生产方式变迁带来的社会政治后果。

如何对数据进行一定的解释

关心议题:经济、移民(有效政策不足)

  • 使用礼貌的词去讨论移民政策是第一步,有效的政策供给不足,给特朗普无厘头的方案带来机会。

民主失能?

  • 制衡政府而不是瘫痪

系统性培养政治冷漠

  • 过度娱乐化媒体

  • 选举人花边新闻

  • 西方选举变得俗不可耐

霸权:实力、规范与观念

  • 塑造知识,影响全球青年观念。认为特朗普不能当上总统

  • 中国应该崩溃

    • 什么时候认为 GDP 不重要的声音出现?中国超过日本

      • 1949后的中国制度优越于明治维新的日本

      • 西德和日本 GDP 超过苏联,所以要改革

      • 修改 GDP 统计口径

    • 意识形态和政治无处不在

  • 收益在国内的分配,成本在国内的分摊方式。美国霸权在全球的收益和成本,在国内的分配因为资本主义制度被扭曲了。正确方式:超额利润部分补贴民众。现实:宣扬中国使用低人权劳动成本抢走了你的工作。政治听从资本。

    • iphone 在国外生产,获得的收益归属于资本,但是普通民众需要承担工作机会的流失。

    • 占领华尔街,阶级意识

    • TikTok 转移国内压力?

  • 新自由主义对媒体传播规范,以及新媒体空间解释框架与政治审美塑造能力,在全球有较为长足的发展。建构-塑造-规训

    • 精巧的统治体系

    • 操作系统发展趋势:人与硬件越来月隔离。

    • 媒体离开问题的本质,通过感官寻找解决方案。

经济分配:

  • 5% 充分就业:有就业意愿的人都有工作。

  • 金融危机之后,就业质量下降。救市政策,中产阶级承担成本。

  • 加剧两极分化,对金融资本极度不满。资本通过资金控制传统的白马。

  • [[民粹主义]]:任何试图无条件满足民众需求的政治主张。迎合中下阶层。不具备可持续性。

    • 抵消社会主义宣传

认知:个体层次的理解

  • 政治正确与被规训,塑造中产阶级审美观

    • 信仰的市场经济原教旨主义崩溃

    • [[基督山伯爵]] 欧洲富豪

      • 地主:有自己产业

      • 中世纪流传下来的家族统治

      • 暴发户:笼罩在蒸汽中的一列火车头。有资产泡沫

    • 中产阶级资产来源:储蓄性资产、房子固定资产、投入的资本性收入(理财工具破灭)

    • 对收入或地位低于自身的民众的本能恐惧。多数暴政。

      • 有没有相同的情况?

      • 社会的理想模式应该是什么?正确的社会价值趋向是什么?

    • 如何驯服资本?放任资本会带来整个社会的毁灭。资本在哪里能获得更多的剩余价值。希望在道德-信仰体系克制,政治行为能力的匮乏,与政策审美标准的异化 。

      • 大而不倒,金融资本对国家的绑架。

      • [[消费主义]] 手机?

      • 经济周期基本规律:繁荣-危机-衰退-萧条

      • 左翼思潮为什么会失败?

关注特朗普现象所代表的美国政治结构的深层变化是什么?

更加自主的去进行思考,而不是满足于媒体提供现成的答案。

思考这些问题的标、立场:

  • 对于中国:希拉里(人权意识形态和价值观)上台短期阵痛,长期利好,特朗普上台短期轻松中期不利,其实现在已经有所变化了。目前来看,都是短期阵痛,长期利好。

    • 中国国家利益

    • 中美关系冲突或者合作

  • 全球收缩,放松同盟军事管制


@知识资产:从一张卡片开始积累

知识资产

  • 是指一个人获得教育,技能和知识等资源的机会。比如学位证、专利著作或者举止习惯。

知识管理

  • 帮助我们更高效的获取、组织和有效利用知识的一套流程

[[知识管理的误区]]:囤积癖、墙头草、工具控、输出怪

本书分享记笔记的三种方法

  • 用自己的话记笔记

  • 用标签为笔记分类

  • 通过回顾持续刺激

卡片笔记的四个特点

  • 原子化

  • 标准化

    • 指用一套标准方式进行记录,确保笔记和笔记之间的格式,连接方式,分类方式相同。
  • 网络化

  • 动态化

    • 定期整理和维护笔记

[[Dozen/如何复盘]] 《陈云文选》关于如何才能少犯错误的主要方法可以概括为三个: 交换比较反复

  • 交换 #card

    • 交换正反两面意见,让自己的视角更全面。

    • 值得注意的是,收集反对信息后,如果这些信息正确就改进,如果错误就驳倒。

    • 只有这样,一个人的认识才能更接近客观事实。

  • 交换是为了 更全面地认识事物 ,比较则是为了更好地 判断事物的性质 ,用来了解事物的发展程度、要害和本质。

  • 重复上面两步,既是 认识 的过程,也是 实践 的过程。在此过程中,坚持 正确的 ,改进 错误的
    高亮后如何自我提问,增加笔记的摩擦力

  • 问问我为什么感觉不错

  • 问问自己将来能在哪里用;

  • 问问自己是否见过或做过类似的事情。

  • “这个观点和传统观点有什么不同”

  • “我对这个观点有什么疑问”

  • “这个方法适用于什么场景下的什么问题,不适用于什么场景下的什么问题”

如何记录情绪 [[Life Log]]

[[记录自己的实战经验]]

精练笔记

  • Light 对邓小平时代的精练笔记

    • 什么是“实事求是”? #card
      • 摆脱意识形态的束缚;

      • 承认令人不快的事实;

      • 实践是检验真理的唯一标准。

[[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

  • 控制自己的主观意愿

  • 个例子。如果想通过记笔记积累知识,那么我们就不该以完美的自己为标准,设置一个难以企及的目标,比如要求自己日更几千字,或者每年读上百本书。相反,我们应该设置上限,让自己每天记录或读书的数量尽量不超过某个值,比如每天写三张卡片或者读两页书——就像阿蒙森团队每天前进的距离一样,以最差的状态为参照来设计目标,留出余裕。这样,在精力不够的时候,我们可以因为目标不高而继续坚持;而在精力充沛的时候,也不至于一下子耗尽热情。

  • 你看,“确定好目标之后,应该竭尽全力去完成”似乎是大多数人的共识,但我们做许多事情都是刚开始热情高涨,坚持不了多久就草草收场。当达到一个目标需要的时间足够漫长时,“冲锋”并不可取。就像我们要减肥,不能指望连续锻炼一星期就把体重减下来——这样做除了会让我们产生强烈的逆反心态,不会带来任何其他好处。而设置上限,就是让我们不要轻易去满足那些“脉冲式”的欲望,这样我们才能保持欲望的小火苗,有持续的动力去不断积累。


@被讨厌的勇气

现在是不是由过去所决定的?

  • 弗洛伊德 原因论 : 现在是由过去所决定的而过去无法改变。
    + 反驳 :-> 如果过去决定一切,而过去又无法改变,那么也就说明现在无法改变。

  • [[阿德勒]] 目的论 #card

    • 过去的经历不会影响现在,从经历中发现符合自己目的的因素才会影响现在。决定我们自身的不是 过去的经历 ,而是 我们赋予经历的意义
      [[人的烦恼皆源于人际关系]]
  • 人际交往产生自卑感和自卑情节

    • [[学历自卑]]

      • 自卑感:一个人学历不高,如果他认为自己学历低,所以要加倍努力。

      • 自卑情节:一个人认为自己之所以不成功,是因为自己学习低。

[[课题分离]]

  • 如果一味寻求别人的认可、在意别人的评价,那么最终就会活在别人的人生中。

共同体

[[人生是一连串的刹那]]

阿德勒主张目的论,其心理学分析路径就抛开了人过往的历史包袱,着眼于眼前、现在,从而把解决问题的办法导向积极的、光明的一面。

越自负的人越自卑

  • 哲人:而且,对自己的学历有着自卑情结,认为“我因为学历低,所以才无法成功”。反过来说,这也就意味着“只要有高学历,我也可以获得巨大的成功”。

  • 青年:嗯,的确如此。

  • 哲人:这就是自卑情结的另一个侧面。那些用语言或态度表明自己的自卑情结的人和声称“因为有A所以才不能做到B”的人,他们的言外之意就是“只要没有A,我也会是有能力、有价值的人”。

  • 青年:也就是说“要不是因为这一点,我也能行”。

  • 哲人:是的。关于自卑感,阿德勒指出“没有人能够长期忍受自卑感”。也就是说,自卑感虽然人人都有,但它沉重得没人能够一直忍受这种状态。

  • 哲人:不是这样。特意自吹自擂的人其实是对自己没有自信。阿德勒明确指出“如果有人骄傲自大,那一定是因为他有自卑感”。

  • 青年:您是说^自大是自卑感的另一种表现^。

  • 哲人:是的。如果真正地拥有自信,就不会自大。正因为有强烈的自卑感才会骄傲自大,那其实是想要故意炫耀自己很优秀。担心如果不那么做的话,就会得不到周围的认可。这完全是一种优越情结。

  • 青年:……也就是说,自卑情结和优越情结从名称上来看似乎是正相反的,但实际上却有着密切的联系?

夸耀不幸

  • 哲人:密切相关。最后再举一个关于自夸的复杂实例。这是一种通过把自卑感尖锐化来实现异常优越感的模式。具体就是指夸耀不幸。

  • 青年:夸耀不幸?

  • 哲人:就是说那些津津乐道甚至是夸耀自己成长史中各种不幸的人。而且,即使别人想要去安慰或者帮助其改变,他们也会用“你无法了解我的心情”来推开援手。

  • 青年:啊,这种人倒是存在……

  • 哲人:这种人其实是想要借助不幸来显示自己“特别”,他们想要用不幸这一点来压住别人。

    • 例如,我的身高很矮。对此,心善的人会用“没必要在意”或者“人的价值并不由身高决定”之类的话来安慰我。但是,此时我如果甩出“你怎么能够理解矮子的烦恼呢!”之类的话加以拒绝的话,那谁都会再无话可说。如此一来,恐怕周围的人一定会小心翼翼地来对待我吧。
  • 青年:的确如此。

  • 哲人:通过这种方式,我就可以变得比他人更有优势、更加“特别”。生病的时候、受伤的时候、失恋难过的时候,在诸如此类情况下,很多人都会用这种态度来使自己变成“特别的存在”。

  • 青年:也就是暴露出自己的自卑感以当作武器来使用吗?

  • 哲人:是的。以自己的不幸为武器来支配对方。通过诉说自己如何不幸、如何痛苦来让周围的人——比如家人或朋友——担心或束缚支配其言行。刚开始提到的那些闭门不出者就常常沉浸在以不幸为武器的优越感中。阿德勒甚至指出:“在我们的文化中,弱势其实非常强大而且具有特权。”


@翦商:殷周之变与华夏新生

商起源

  • 《诗经·商颂·玄鸟》对契降生的描写是:“天命玄鸟,降而生商。”

    • 玄鸟,喻指上帝(天)和商人之间的独特媒介,至于是什么鸟,则有燕子和凤凰等不同解释。
  • 《诗经·商颂·长发》则是:“有娀方将,帝立子生商。”

    • 有娀是简狄所在的部族,“有娀方将”是有娀氏将要兴起之意。

为什么需要祭祀

  • 以色列考古学家吉迪·谢拉赫认为,在“早期国家”或“复杂酋邦”阶段,社会开始变得更复杂,王权刚刚出现,统治者发现自己的统治体系还不够发达,急需借用一种强大的机制来维护权力,从而导致人祭宗教和战俘献祭行为的产生。

  • 为何战争与人祭可以铸牢新兴王权,吉迪却没有多谈。

  • 结合前文对新石器末期到中商这上千年人祭历程的梳理,本书认为可以从两方面来理解:

    • 理论层面,王的大量献祭(意味着他获得神的福佑)是王权融合神权的标志;

    • 现实层面,战争让本国族的民众团结起来一致对外,从而更巩固了王的权力。

大都无城

  • 新宫殿区坐落在洹河弯内侧,今安阳小屯村北,“殷墟博物苑”所在地。

  • 营建新宫殿时,武丁抛弃了之前的“城池”都城模式。他可能不相信商朝都城会受到外来威胁,认为与其耗费庞大的人力夯筑城墙,不如主动对外扩张。武丁规划的宫殿也不再是封闭的大院落,而是若干座彼此独立的大型建筑,皆有厚达1米的夯土地基、木柱框架结构和厚重的夯土墙,足以抵抗地震,且分散的单体结构也更利于防火。

商王朝留下了众多遗址、文物以及累累白骨,那么,这个身居华夏文明源头的王朝是如何运作的?商王如何解释自己的权力来源?他的臣民对此又是如何理解的?

  • 在商人的眼里,世界是冷酷的,充满暴力、杀戮、掠夺和不安全。他们不认为鬼神有明确的善恶观念,或者说,商人本没有明确的善恶观念,自然也不会想象鬼神能有。商人认为鬼神会随时、随意给任何人降下灾难,大到灾荒和战乱,小到生活中的各种不如意,都有鬼神在背后操纵,即便是商王也难免。

层累地造成的中国古史

  • 史学大家顾颉刚称这种现象为“层累地造成的中国古史”,意思是说,越晚产生的传说,反倒在神谱里面越古老,就像人们堆柴堆,“后来者居上”。因为时代越晚,各族群的祖先传说就越是逐渐汇总到一起,这时,各自的先祖孰先孰后以及谁比谁厉害就成了问题。因此,为了制造更大范围的身份认同,就只能创作更古老的先祖,给各族群增添一位共同的始祖。先祖诸神的关系和谐了,世间各族群的关系才能和谐。

《易经》里为何会有这么多周人生活的真实记录?这便涉及周昌创作《易经》的目的:研究各种事物背后的因果联系,最终建立一套翦商的理论和操作方法。

  • 先说最古老的所谓伏羲“八卦”。有四对卦,分别是乾和坤,坎和离,震和艮,巽和兑;各有代表图案,被称为“卦象”,由三根表示阴阳的“爻”组成,一根直线代表阳爻,两段半截的线代表阴爻。

  • 东周时的学者说,这是宇宙间的八大元素:乾代表天,坤代表地;坎代表水,离代表火;震代表雷,艮代表山;巽代表风,兑代表泽(沼泽)。(《周易正义·说卦卷九》)至于伏羲或者周昌时代的人是不是这么理解的,就不好说了。

  • 再来说六十四卦。卦象由两个八卦上下重叠组成,一共有六十四种,都有六个爻。假如是两个八卦的乾叠加,就仍叫乾卦,以此类推。但不一样的八卦互相叠加,就需要起新的卦名了,比如,震下坎上,叫屯卦。

  • 六十四卦的每个卦都有一条简短的解说词,这被称为“卦辞”;相对的,卦里的每个爻也都有一条“爻辞”。概而言之,《易经》是由六十四卦的卦名、卦象、卦辞和爻辞组成的。

  • 《易经》并非文王专门编写的算命教材,而更像是他自己的练习簿,所以内容驳杂,有大量的私人琐事。从萌生翦商之念始,文王就反复将其代入和推算,并随时验证、修订和增补,希望总结出一套最精确的占算方法,而最终目的,当然就是在消灭商朝的战争里运用这套预测技术。

从现代人的视角看,文王周昌为翦商而推演的“理论”,或许可以分为以下三个层面:

  • 一,宗教的,即他对商人“上帝”概念的重新诠释和利用。文王的身份类似犹太教的摩西、伊斯兰教的穆罕默德,身兼部族政治首领与神意传达者两重职能。

  • 二,巫术的,即他在《易经》里对商朝施展的各种诅咒、影射与禳解之术。在上古初民时代,这些行为往往和宗教混杂在一起,不易区分。

  • 三,理性的,或者说世俗的,即各种“富国强兵”的策略和行师用兵的战术。

从考古来看,商朝一直繁荣的人祭和人奠基到西周建立时却戛然而止。文献和考古两相对照,本书推测,这场重大变革发生在周公辅政时期。

  • 这场变革几乎从未被历史文献提及,甚至商代无比“繁荣”的人祭行为也没有被记录。那么,周人为何要掩盖商人的血祭宗教,以及这个宗教是如何被消灭的?

  • 商人的血祭宗教是被周公终结的,但周公所做的远不止于此,他还要抹杀关于它的记忆,防止它死灰复燃。

  • 而忘却是比禁止更根本的解决方式。为此,首先必须毁灭殷都,拆分商人族群,销毁商王的甲骨记录;其次,自古公亶父以来,周人曾经为商朝捕猎羌俘,这段不光彩的历史也应当被永久埋葬;再次,长兄伯邑考在殷都死于献祭,他的父亲和弟弟们还参与并分享了肉食,这段惨痛的经历也必须被遗忘。

成王亲政第五年,第二次东夷战争结束后,成王和母后东返,途中经过成周洛阳小住了一段时间。在这期间,有一位贵族曾获得成王的接见,之后更是专门制作了一件青铜尊,这就是因“宅兹中国”的铭文而著称于后世的“何尊”。这也是目前发现的“中国”一词的最早记录,它在当时的意思是“中原之地”。

周社会是典型的身份世袭制,周王任命朝廷高级官员(卿)的选择范围很小,基本由十几个显赫的家族世代占据着朝廷主要官职。而且,官职本身并没有薪俸,全靠自家封邑收入,做官只是可以给他们提供获得更多封邑的机会。各诸侯国内部的权力结构也类似,但规模要比镐京朝廷小很多倍。

  • 就这样,随着统治阶层的繁衍,周朝特色的贵族制度逐渐得以形成,其中,最首要的是“宗法”家族制,核心则是嫡长子一系的独尊地位。

  • 一,周朝各姬姓诸侯(被分封的王室亲属)对周王的效忠服从,是家族兄弟(及其后人)对嫡长兄(及其嫡系后人)的服从。

  • 二,在各诸侯国内部,太子之外的公子被分封为世袭大夫,大夫再繁衍和分封出“士”。

  • 三,非周族的异姓诸侯和贵族则通过婚姻关系被纳入家族结构中。周王尊称同姓诸侯国君为“伯父”,称异姓诸侯国君为“伯舅”(当然必须是曾经和周王室有过联姻关系的),伯代表排序。

  • 这套基于血缘宗法制的贵族等级和封建政治秩序,周人称之为“礼”。不同等级的贵族使用相应的车马、住宅、衣服、乐器、玉器、酒器和食器组合,丧礼和随葬品也以此类推。各种典礼仪式上,比如朝见天子、祭祀和宴会等,入场顺序以及站或坐的位置由相应的等级身份决定。

  • 典礼可以在不同层次举行,如诸侯国或大夫家,但基本原则一致。贵族的冠礼、婚礼、丧礼和祭礼也都有各等级的标准规范,几乎所有礼仪场合都有乐队伴奏,而乐队的规模和演奏的乐曲也都有相应规范。所以,周人贵族文化又被称为“礼乐文明”。

当然,春秋的人祭回潮并未成为主流,可能有以下两个原因:

  • 其一,战国时期的社会重组和政治变革。由于列国兼并战争的威胁日渐增加,各国都进行了变法运动,废除贵族制,实行君主集权和官僚制,国家的首要目的是富国强兵,在国际竞争中获胜。而这需要官僚机器用理性、功利的方式管理社会,人祭自然属于不可容忍和必须取缔的行为。

    • 战国初期魏国西门豹治邺的史事,呈现的就是新兴官僚政治和民间传统文化的碰撞。当时邺县还有“为河伯娶妇”的风俗,本质上是把少女奉献给漳河水神的人祭行为。邺县在殷墟以北15公里,所以这种风俗很可能是殷商宗教的残余。到西门豹时代,普通的邺县人已经不愿为祭祀承担如此高昂的代价,只是苦于无法对抗地方精英“三老”和女巫联手主导的民间权力结构。为此,时任邺令的西门豹表面上遵循本地宗教理念,实际却找借口把女巫及其弟子和三老先后投入了漳河,从此,这里再无人敢复兴人祭宗教。

      • 《史记·滑稽列传》褚少孙所作增补。虽然秦汉之后的王朝法律已经不允许猎俘杀祭,但人祭宗教也曾在民间迁延了较长时间。直到汉魏时期,宋襄公曾经献祭的“次睢”神社仍存在,又被称为“食人社”;也有祭祀者会花钱雇穷人充当人牲,祭祀时把人牲捆绑在神社前,如同屠宰的牲畜。不过从文献记载来看,也许汉魏时的人祭只是程序性表演,而非真正杀人、食人。参见《续汉书·地理志》注《博物记》曰:“县东界次睢有大丛社,民谓之食人社,即次睢之社。”《艺文类聚》卷五九引《从征记》:“临沂厚丘间,有次睢里社,常以人祭,襄公使邾子用鄫子处。相承雇贫人,命斋洁,祭时缚着社前,如见牺牲,魏初乃止。”
  • 其二,以孔子为代表的儒家逐渐兴起,开始提倡仁政和爱人。当时还有制作陶人俑随葬和埋入祭祀坑的习俗,结果遭到孔子诅咒:“始作俑者,其无后乎!”孟子对此的解释是,孔子讨厌这种模拟用人殉葬的行为,“为其象人而用之也”。(《孟子·梁惠王章句上》)和多数人不同,孔子的职业是整理上古史的学者,他很可能是在晚年破解了商周之际的一些隐秘往事,担心用陶俑随葬会唤起人们对人祭时代的记忆。

后世人对周公的认识,有事功和制度文化两方面:事功,主要是周公辅佐成王、平定三监之乱,为西周王朝奠定开局;制度文化,主要是周公“制礼作乐”,确立西周的政体,包括诸侯列国分封格局和贵族等级制度。在考古发现商朝的遗址与人祭文化之前,人们对周公的理解只能达到这种程度。

  • 但事实上,周公最重要的工作是消灭商人的人祭宗教,以及与之配套的弱肉强食的宗教价值体系。他不仅阻止了周人模仿和继承这种宗教文化,也在殷商遗民和东夷族群中根除了它。尤其关键的是,周公还抹除了与商朝人祭有关的记忆,甚至也隐藏了自己禁绝人祭行为的种种举措。这是为防止人祭宗教的死灰复燃和卷土重来,也是为掩盖周人曾为商朝捕俘人牲的那段不光彩的历史。

为了填补人祭宗教退场造成的真空,周公发展出了一套新的历史叙事、道德体系和宗教理念。这主要体现在《尚书》的几篇诰命中:

  • 一,淡化商人对“帝”的崇拜。在商朝末期,“帝”已经和商王身份重叠,商王具有“帝”的神性。但周灭商后,王已经不能身兼“帝”之名号,对周人来说,帝在高高的天庭之上,不会化身为世间凡人。

    • 虽然我们还不能完全确定这个原则就是由周公确立的,但从《尚书》的几篇诰命可以发现:在对殷商遗民讲话(如《多士》)时,周公会频频引用上帝的命令来威吓和诱导商人,这是因为商人格外信奉上帝,只能因势利导;但在对周族自己人讲话时,如册命弟弟周封为卫侯的三篇诰命,周公却极少谈到上帝,尤其是对族人谈论现实和规划未来时,他从不动用上帝进行论证,更不涉及其他的神灵。这显然是一种有意识地 “敬而远之”,让现实和神界保持距离。从这些迹象看,周朝人“疏远”上帝或其他诸神的传统的确是由周公奠定的。
  • 二,为减少神界对现实的干预,周公会尽量用“天”的概念来代替“帝”,因此,上帝发布的命令(“帝命”)变成了含糊的“天命”。

    • 天命的观念在后来的中国一直存在,但人们已经忘记了它的缘起。“天”无形无像,无言无行,不容易被赋予拟人化的个性。在《诗经》里,上帝曾频频给文王下达命令,如命令文王攻打崇国,武王灭商据说也是来自上帝的意旨,但后世周王已经无法接收神界的具体指示,所以改称为“天命”后,它变成了一种更为抽象的、近乎隐喻的道德规训。

      • 杜勇:《尚书·周初八诰研究》,中国社会科学出版社,1998年,第206页。另,在《尚书·盘庚》中,盘庚的发言中也有“天命”,但陈梦家认为,“商人称‘帝命’,无作天命者,天命乃周人之说法……此亦战国宋人之拟作”。参见陈梦家《尚书通论》,中华书局,1985年,第207页。本书认为,《盘庚》中的“天命”可能有西周之后的改动,但该文主体仍是盘庚时代的作品。
    • 当然,周公时代还不可能有科学主义的无神论认知,神界即使被放置得比较远,也不会和王朝政治完全绝缘。比如,西周的王就被称为“天子”,也就是天的儿子,而这是连商代甲骨文也没有的词,但无论怎样,“天”还是过于含糊,周人及其以后的历代王朝从未给“天子”增加更具体的神性定义与功能。即便秦始皇使用“皇帝”尊号,其直观用意也是强调自己和六国之王的不同,虽有强调王者尊贵的这一层神性之意,但也使“帝”落入凡尘,并不比“天子”概念更神秘。

      • 周公这方面的理论主张在《尚书·无逸》篇中体现较多。
  • 三,周公宣称,王者应当爱民、德治和勤勉,这样才会受到“天命”青睐,长寿享国;如果王者残暴对待庶民和小人,天命就会转移到更有德的候选君王身上,从而改朝换代。

因为周公掐断了神对人间的直接干预,这意味着华夏世界不会再有主导性宗教,以神的名义颁布的道德律条(如摩西十诫、佛家五戒)也无从产生,所以周人必须另行寻找一套用于世俗生活的道德原则。这种世俗道德的原理,是“推己及人”,也就是把自己放在他人的位置上考虑,从而决定自己对待他人的方式。

  • 周公的办法是对《易经》进行再解释,具体方法则是在文王创作的卦爻辞后面加上一段象传进行说明。象传不再鼓励任何投机和以下犯上的非分之想,全是君子应当如何朝乾夕惕,履行社会责任的励志说教,和文王卦爻辞的本意完全不同。 比如,乾卦的象传是“天行健,君子以自强不息”,坤卦的象传是“地势坤,君子以厚德载物”,远比文王卦爻辞清晰易懂,而且富于积极和励志的色调。

“六经”具体是指《诗经》《尚书》《仪礼》《乐经》《易经》《春秋》。其中,《诗经》《尚书》《易经》包含大量商周易代时期的史料。在“六经”成书之前,社会上传抄流行的主要是单篇文章,真伪混杂,质量良莠不齐。为此,孔子选择了最可信且符合周公精神的汇编成书,而不符合这两点的篇章就逐渐失传了

  • 《诗经》记载了周族从姜嫄、后稷以来的多篇史诗,包括周族早期历史、文王确立翦商大计、武王的灭商战争、周公平定三监叛乱以及对商文化的改造等,属于经过周公修订的官方正式版本。

  • 书是文献之意,《尚书》就是古代的文献。按时间顺序,《尚书》分为《虞书》(尧舜禹时期)、《夏书》、《商书》和《周书》。在收入“六经”之前,《尚书》中各篇都是单行本,基本规律是越古老的越不可信,内容大都是西周及之后的人按照周公重写上古历史的精神,虚构了尧舜禹和夏商时期的很多帝王故事和讲话稿,基本是周公式的道德说教,不具备史料价值。当然,也会有个别真正的商代文献,比如盘庚迁都的讲话稿,内容上和周公精神抵触不大,或者已经被周公授意删削过,所以保留了下来。总之,这些真真假假的篇章被孔子分别收入了《尚书》的《虞书》《夏书》和《商书》部分 。

  • 当然,孔子编辑“六经”的作用不止于此,其中还保存了从西周创立直到孔子时代的文化成果,这就是周人贵族社会的诗歌(《诗经》)、礼俗(《仪礼》)和历史(《春秋》)。

概而言之,周公时代变革的最大结果,是神权退场,这让中国的文化过于“早熟”;战国时代变革的最大结果,是贵族退场,这让中国的政治过于“早熟”。而在其他诸人类文明中,神权和贵族政治的退场,都发生在公元1500年之后的所谓近现代时期。


@读书是否是唯一重要的事?

[[@我的笔记法(借助 Zettelkasten 和 Obsidian)]]

[[罗翔:非功利性阅读]]

  • 为了快速获取知识而读书

    • 获取概念或技术
  • 为了认识这个世界而读书

    • 认识世界的手段,什么是政治

实践和读书矛盾吗?

读书不是获取知识的来源

  • [[人类理解论]]

  • 读书获取理论,用理论指导实践。

  • 方法论:从实践中获取经验,然后对经验反思总结和提炼。

读书三个阶段

  • [[@如何阅读一本书]]

  • 在结合自身的经验,我发现我经过这样三个阶段:

    • 在最开始的时候不知道看什么,漫无目的的阅读,没有作笔记,也没有写评价,最后什么没有收获

    • 然后开始有目的的阅读,比如喜欢看某一位作者的书,比如 [[密尔]],或者是为了了解一个主题去阅读相关的书籍,比如去看 [[哲学]],又或者只是为了学习一门技术比如去读 [[Spring 知识点]],这个阶段会围绕同一个主题进行大量的阅读,通过大量的阅读积累对其的认识,并在自己心里产生基础的概念

    • 在有了一定的基本知识体系之后再去阅读是为了接受新的、不同的思想,并将其拆解开放到自己的知识体系中。

      • 如果以哲学家为例,在了解了其基本观念之后,逐渐添加我是否支持其观点,有没有反驳他的观点,我能不能找到佐证。

      • 又如果是一门技术,新产生的技术解决了之前的什么问题,又会产生什么新的问题,这个技术细节为什么要这样实现,有没有更好的实现方式。

主动获取信息

  • rss 源是一种被动接受信息的工具。

  • 搜索,总结体系,实践,放到知识库中。

  • [[主动学习]],有针对性的获取信息,不仅可以避免自己陷入信息的汪洋,也可以扩展自己的认知边界,将新的、不同的理论纳入到自己的知识体系,不断地完善自己零散的思维模式。最关键的是,当不断阅读自己的感兴趣的内容时,会自发的产生兴奋的状态,并且可以不断往外延伸出不同的主题。


@高效阅读法

[[Abstract]]

  • 本田直之,明治大学商学院产业经营系毕业,美国雷鸟(Thunderbird)国际管理研究所经营学硕士(MBA),日本品酒协会认定葡萄酒顾问、世界遗产学会会员、一级小型船舶操纵士。

    • 曾任职于花旗银行等公司,参与企划巴克集团(BUCKS GROUP)的运营,协助该公司在日本的店头市场(JASDAQ)挂牌上市。现任杠杆效益顾问有限公司董事长兼执行长,参与日美的创投企业投资管理,同时提供以少出力而获得丰硕成果的杠杆经营的建议。兼任日本财务学会董事、法人顾问会计董事、美国环球视野科技公司董事。
  • 内容简介:

  • 读书是一种自我投资,而且没有比这更划算的投资,比起投资任何报酬率好的金融商品来说,读书所带来的回报确实更多。阅读术是为了有效率阅读商业书而产生的“技法”。每个月出版的商业书数量超过百本,还有之前出版过的大量书籍,想要追上全部的书籍是不可能的,藉由本书多读的技巧,从大量的书中找出最合适自己的读物,把阅读商业书当成投资,有策略的实行,就能创造出100倍的回报。

[[Attachments]]

杠杆阅读术(即商业书的多读法则)

第 1 章 何谓多读商业书?

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:: 30
      hl-color:: yellow
  • 速读和多读差异

    • 多读了几本书, 并不是什么了不起的事 。仅仅做 “ 输入”的动作 ,只不过是自我满足而已 。 如何能输出”使用, 才是决定胜负的关键。
      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:: 57
        hl-color:: yellow
    • 多读书是投资, 而且是世间稀有的投资(因为报酬率一定是正数) 。 也就是说,投资金额越多 ,赚得 越多; 读得越多,能够回收的金额也变得越多 。尽量多读书才是获利。
      ls-type:: annotation
      hl-page:: 58
      hl-color:: yellow

  • 我知道读书的重要性,但为何要持续一年读400本以上呢?
    ls-type:: annotation
    hl-page:: 55
    hl-color:: green

    • 靠读书更新自己的“常识”

第 2 章 选书就是挑选投资标的

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:: 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:: 85
          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

第 3 章 一曰一本, 有策略地读通商业书

ls-type:: annotation
hl-page:: 116
hl-color:: yellow

  • 在第三章“一日一本 ,有策略地读通商业书”中, 整理出营造实践多读的环境 ,以及活用 “80/20法则”的 要点;也就是介绍这些有效而且不需要训练的读书方法。
    ls-type:: annotation
    hl-page:: 11

  • 读书的流程

    • [:span]
      ls-type:: annotation
      hl-page:: 118
      hl-color:: yellow
  • 在开始渎之前 , 有非做不可的重要工作 。那就是 ,读每一本书前 , 都要明确读此书的目的。
    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

        • 举例来说, 出门前你想着:“今天一整天, 我会见到几个红色的东西呢?”于是 ,走在街道上你会惊讶:“世上充满了这么多红色的东西! ”红色的海报、文字招牌 、红花等等, 所有红色的东西都进入眼帘。当然, 并不是过了一个晚上,红色的东西就暴增 。而只是你产生意识后,这东西就自然进入你的眼里。 附带一提的是, 彩色浴的 “浴”, 英文是“bath”, 也就是被颜色浸润的意思 。
          ls-type:: annotation
          hl-page:: 121
          hl-color:: yellow
      • 熟练使用“彩色浴 ”效果 ,就算你快速翻阅书本 ,眼睛也能停在目的所在之处。
        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:: green
    • 给自己的目标暗示, 会在读书的时候不断出现在脑海中 ,碰到时就立即透过折角 、 画线、 在书页四周做笔记的方法记下(后面会再详加说明)。
      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

      • 如果没有限期, “什么时候读完都可以 ”的话, 恐怕连一半都读不到。 因为人没有被逼迫时, 很难发挥更大的潜力。
        ls-type:: annotation
        hl-page:: 130
        hl-color:: green
  • 掌握 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:: 140
        hl-color:: green
    • 此外 , 有的书在每一章的开始或结束的地方,会把这章的内容做成“摘要 ”条列出来( 本书也是如此 )。 由于精华集结在此 , 所以先读它也可以,这也是一个方法 。
      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

第 4 章 不要读完就算了

ls-type:: annotation
hl-page:: 164
hl-color:: yellow

  • 不要读完后就放着不管了,读完之后所需要的 ,就是第四章 “不要读完就算了!”所要介绍的内容, 也就是本书能成为活用在商场上的最终书籍的“杠杆效益笔记”的制作方法, 以及利用空间时间反复浏览这些笔记,让自己能够达到直觉反应的程度的方法 , 并且说明今后如何学以致用。
    ls-type:: annotation
    hl-page:: 11

  • 评价读书是否有效益

    • 应该以 “只有多少精华能成为自己的东西 ” “有多少东西能运用在现实的商业上 ”来作评价
      ls-type:: annotation
      hl-page:: 168
      hl-color:: yellow
  • 要把好不容易读完的内容变成自己的东西 ,难道没有最好的方法吗?
    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

    • 笔记分类

      • 主题类

        • [:span]
          ls-type:: annotation
          hl-page:: 181
          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

    • 我会例外地读第二遍的书,在我一年读的 400本书中, 大概占5%,也就是大约20本。由于这20本是相当好的书, 所以我会不断跟周围的人推荐 。之后,自己反复去读。
      ls-type:: annotation
      hl-page:: 188
      hl-color:: yellow
  • 商业书推荐

    • 人性的弱点

    • 基业长青

  • 杠杆阅读术里强调的是 , 把重点浓缩后 ,反复多读几次书中的精华 。 也就是说, 把书本读完之后 ,也还要持续阅读。实践书中的精华 , 然后再加上自己的解释, 例如"利用这个观念可以让事情进行得顺利 ” “这个稍微不适合自己 ”, 或是“ 把这个这样做,还不错”。这样一来,书中的精华刻印在脑里 ,并实际地做做看 , 因而产生书籍费用的一百倍价值。
    ls-type:: annotation
    hl-page:: 193
    hl-color:: yellow

  • 利用书架分类

    • [:span]
      ls-type:: annotation
      hl-page:: 197
      hl-color:: yellow
  • 靠实践活用知识
    ls-type:: annotation
    hl-page:: 199
    hl-color:: yellow

    • 把笔记的内容加以实践、 活用 ,逐渐做到能够做出直觉反应的程度。
      ls-type:: annotation
      hl-page:: 203
      hl-color:: yellow

A Survey of Transformers

[[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

    • 将 Transformer 应用到具体的下游任务中。

背景知识

模型使用形式

  • Encoder-Decoder

  • Encoder only

    • classification or sequence labeling
  • Decoder only

    • sequence generation

      • language modeling

根据对原始 Transformer 的改进分类:architecture modification, pre-training, and applications

  • architecture modification

    • Module Level

      • [[Attention]]

        • 挑战

          • 计算复杂度,受序列长度影响

          • 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

        • 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

              • 移除 pe
        • LayerNorm

          • Placement of Layer Normalization

            • post-LN

            • pre-LN 保证 skip 链接路上没有其他操作

          • Substitutes of Layer Normalization

            • 可学习参数效果不好,

            • AdaNorm

            • scaled l2 normalization

            • PowerNorm

          • Normalization-free Transformer

            • ReZero 可学习残差模块替代 LN
        • 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

          • hidden sequence pooling and up-sampling
        • DeLighT

          • DeLighT block
      • Strengthening Cross-Block Connectivity

        • 针对 decoder 解决问题

        • Transparent Attention

        • Feedback Transformer

          • 使用前一步所有层的信息
      • [[Adaptive Computation Time]]

        • 解决之前模型中层数固定

        • 三种方法

          • [[Universal Transformers]]dynamic halting

            • 达到停止条件的 token 不再改变
          • CCT

            • 跳层
      • Transformers with Divide-and-Conquer Strategies

        • 将 LM 任务中长文本拆分成多个片段

        • Recurrent Transformers 上一个 T 输出信息输入到下一个输入

          • Transformer-XL 上一个输出和下一个输入 concat 在一起

        • Hierarchical Transformers 多个结果聚合

          • Hierarchical for long sequence inputs

            • sentence Transformer and document Transformer
          • Hierarchical for richer representations 更丰富的表示

            • 字母级别表示和词级别表示
      • Exploring Alternative Architecture

        • NAS
    • PRE-TRAINED TRANSFORMERS

    • APPLICATIONS OF TRANSFORMER

      • CV

        • [[ViT]]
    • CONCLUSION AND FUTURE DIRECTIONS

      • 理论分析

      • 更好全局交互机制

      • 处理多种类数据的框架

[[Layer Normalization]]


AFM

AFM(Attentional Factorization Machine), 在 FM 的基础上将 Attention 机制引入到交叉项部分,用来区分不同特征组合的权重。

y^AFM(x)=w0+i=1nwixi+pTi=1nj=i+1naij(vivj)xixj\hat{y}_{A F M}(\mathbf{x})=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\mathbf{p}^{T} \sum_{i=1}^{n} \sum_{j=i+1}^{n} a_{i j}\left(\mathbf{v}_{i} \odot \mathbf{v}_{j}\right) x_{i} x_{j}

单独看上面公式中的第三项结构:

Embedding Layer 与 NFM 里面的作用一样,转化特征。

Pair-wise Interaction Layer 是将特征两两交叉,如果对这一步的结果求和就是 FM 中的交叉项。

Attention 机制在 Attention-based Pooling 层引入。将 Pair-wise Interaction Layer 中的结果输入到 Attention Net 中,得到特征组合的 score aij{a_{i j}^{\prime} },然后利用 softmax 得到权重矩阵 aij{a_{ij}}

aij=hTReLU(W(vivj)xixj+b)aij=exp(aij)(i,j)Rxexp(aij)\begin{aligned} a_{i j}^{\prime} &=\mathbf{h}^{T} \operatorname{Re} L U\left(\mathbf{W}\left(\mathbf{v}_{i} \odot \mathbf{v}_{j}\right) x_{i} x_{j}+\mathbf{b}\right) \\ a_{i j} &=\frac{\exp \left(a_{i j}^{\prime}\right)}{\sum_{(i, j) \in \mathcal{R}_{x}} \exp \left(a_{i j}^{\prime}\right)} \end{aligned}

最后将 Pair-wise Interaction Layer 中的二阶交叉结果和权重矩阵对应相乘求和得到 AFM 的交叉项。

Question

  • AFM 如何引入 Attention 机制?

    • 根据 <vi,vj>xixj<v_i, v_j>x_i x_j 计算交叉特征的权重

@麦肯锡精英高效阅读法

Who

  • [[赤羽雄二]],麦肯锡韩国分公司创始人。

Why

  • 学习精英阅读的方法和技巧

  • 了解别人的阅读经历

What

  • 为什么要读书

    • 网络上的信息不具备系统性。

    • 网络上无法获得涉及事物本质的深层次的知识。

    • 能够理解他人情绪、体谅他人的人,绝不会贸然做出盲目的判断,首先会努力去理解现场和对方的情况。

How

  • 如何挤出时间来读书

    • 最好的办法就是尝试在不同的时间就寝和起床,以了解自己最低程度的睡眠时间。建议大家在不影响睡眠的基础上,创造读书的时间。

    • 在时间表中添加读书时间

    • 只在有需要时读书:30 岁之前读 300 本书,之后每年读 50 本书。

    • 用社交网络召集读书伙伴:设置 deadline 和其他人分享

  • 如何专注读书

    • 坚持读完一本书之后再阅读下一本书 why 主题阅读时如何解决?

    • 买书之后即刻开始阅读

    • 不在阅读时做笔记

    • 即使有不理解的地方,也不要重读:阅读关键在于不重读。就是说,即便有不理解的地方,也不要翻回去重读。比起重读,把握全书的主旨更为重要。

    • 读完之后立即整理笔记

  • [[A4 纸整理笔记]]:将A4纸横放,左上角写主题,右上角写日期,每页写4~6行,每行写20~30个字。在一分钟内将想到的事情全都写在纸上,每天写20~30页纸。

    • 书中重要的内容:言之有理的内容,表达出色的内容,体现作家洞察力于智慧的内容
  • [[读书档案]]:每月读 4 本书,一年就可以写出 48 篇,集中放在一个地方保存。

    • 读这本书的目的

      • 基于好奇心和求知欲去阅读一本书
    • 读书后的感受

    • 阅读后会采取哪一些行动

    • 3 个月之后要做些什么,有什么样的改变?

      • 每 3 个月评估做的怎么样(◎非常好、○勉强完成目标、△不太好,没有成果、×完全没有做好)
  • 读书后写博客:限制读书时间,用更多的时间输出

    • 极简方法:确定题目后,思考文章的内容和结构,再确定小标题。每个小标题需要写1~2行的内容。

    • 确定一个自己最关注的主题。

    • 事先决定文章的提纲。

    • 举出具有代表性的事例。

    • 使用定时器,催促自己完成。

  • 提高信息敏感度

    • 问题意识打造高深见解和洞察力

    • 阅读优秀作家的全部作品

    • 延后阅读畅销书

  • 如何获得演讲的机会

    • Step 1:以5年后的目标为基础,思考“一年后想要成为什么样的人”“想得到什么样的评价”“想在什么场合做一个怎样的演讲”“演讲的题目是什么”“哪些人曾经做过此类演讲,是否能和他们竞争”等问题,将这些问题总结在一张纸上。

    • Step 2:在读书的同时,将数十个相关领域的关键词登录到谷歌资讯上,每天阅读相关报道,不断补充自己掌握的知识(第五章会详细介绍)。

    • Step 3:^列出20个左右要写在自己博客上的题目^。这时,可以参考Step 1中整理的“演讲的题目”,列出一些能够向策划演讲的社区骨干、事务所以及研讨会策划公司的负责人宣传自己的博客题目。

    • Step 4:每周写1~2篇博客。原本就是自己的专业或相近领域,由于每天阅读一定数量的报道,所以能够不断整理自己所掌握的知识,然后再写成3000~4000字的博客。

Think

  • 阅读其他人的博客或这微博之后,尝试给其他人留言。 发条 twitter 介绍我为什么要去看

Todo

  • 每次读完一本书写一篇[[读书档案]],可以问自己 3WH2T,可能 What 和 How 很难区分。

    • 读书档案是一种写博文的方法

    • 写作和总结的练习

  • 如果没有时间写长文章来分享自己的感受,可以使用 Twitter 进行简短的分享。 豆瓣 300 字评论总结主要内容。

  • 每天至少阅读 1 小时

出版后记

  • 书从多个角度分析了“为何优秀的人再忙也要读书,并且把书中的内容活用在工作和生活中”这个问题。

  • 越是忙碌的人就越能有效地掌控自己的时间,充分思考目的后再开始读书,从而做到“主动读书”。总之,就是要自己做出判断,合理分配时间,找到适合自己的读书法。

  • 在这本书中,作者详细介绍了一套系统、实操性高的读书技巧。不仅能够教你在工作之余如何合理规划时间,确保用来读书的时间,还能教你如何利用A4纸整理书中要点,牢记书中内容。更能教你如何在读过书后建立“读书档案”,设定行动目标,切实地将书中的内容转化为自身的知识。


AdamW

[[L2 Regularization]] 和 [[Weight Decay]] 在 Adam 这种自适应学习率算法中并不等价

使用 Adam 优化带 L2 正则损失并不有效

  • 正常权重衰减是对所有权重都采用相同的系数进行更新,本身比较大的权重对应的梯度也会比较大,惩罚也越大。

  • Adam 计算步骤中减去项会除以梯度平方的累积,使梯度大的减去项偏小,从而大梯度的权重不会像解耦权重衰减那样得到正则化。

红色部分 Adam + L2 regularization,line 12 中 L2 部分会被二阶梯度调整,梯度变化快的方向上,调整之后的值比较小,这个方向上正则化更少。

  • θtθt1aβ1mt1+(1β1)(ft+λθt1)V^t+ϵ\theta_t \rightarrow \theta_{t-1}-a \frac{\beta_1 m_{t-1}+\left(1-\beta_1\right)\left(\nabla f_t+\lambda \theta_{t-1}\right)}{\sqrt{\hat{V}_t}+\epsilon}

  • 分子右上角的 λθt1\lambda \theta_{t-1} 向量各个元素被分母 V^t\sqrt{\hat{V}_t} 项调整。

    • 梯度变化快的方向上,V^t\sqrt{\hat{V}_t} 有更大的值,从而使调整后的 λθt1V^t\frac{\lambda \theta_{t-1}}{\sqrt{\hat{V}_t}} 更小

作者提出以绿色的方式来在 Adam 中正确引入 weight decay ,使用相同的参数来正则化所有的权重,完成梯度下降与 WD 的解耦。

AdamWeightDecayOptimizer 通过 [[Weight Decay]] 参数控制

[[BERT]] 中使用 AdamW

都9102年了,别再用Adam + L2 regularization了 - 知乎


ARIMA

适用情形:平稳的时间序列

平稳性和差分

[[平稳性]]:平稳的时间序列的性质不随观测时间变化而变化,具有 趋势性或季节性 的时间序列是非平稳的。

  • 白噪声序列是平稳的,也是 随机不可 预测的。
  • 平稳的时间序列的ACF会 快速下降到接近0
  • [[单位根检测]]是一种常用的判断数据是否平稳的方法。

[[差分]] 计算了观测值之间的差值,衡量的是两者间的 变化/斜率 ,经过一次或多次差分后可以得到平稳的时间序列

  • 在点预测时只需要进行 差分的逆运算 就行,分布预测的情况会更复杂一些。
    一种常用的变换是对数变化,它可以用于平稳时间序列的方差,在时间图中方差可以理解为 上下波动 的程度。
    [[延迟算子]]:延迟算子表示时间序列的延迟,由于符合代数变换的规则,可以方便地表示差分的组合。图 1.11显示了几种常见的差分/组合的延迟算子表示。#card
    image.png

步骤 #card

  • 对序列进行 ADF 检验,观察序列是否平稳

    • 对于非平稳的时间序列要先进行 d 阶差分,转化为平稳时间序列
  • 对平稳的时间序列分别求 ACF 和PACF,两个图求出最佳阶数 p、q

    • 拖尾指序列以指数率单调递减或震荡衰减,而截尾指序列从某个时点变得非常小

+ 平衡预测误差与模型复杂度

  + AIC 准则全称是最小化信息量准则(Akaike Information Criterion)

    + $A I C=-2 \ln (L)+2 K$

    + L 模型的极大似然函数

    + K 模型的参数个数

  + BIC(Bayesian InformationCriterion)贝叶斯信息准则

    + $B I C=-2 \ln (L)+K \ln (n)$

      + AIC 拟合误差受到样本容量的影响,但是参数个数的惩罚因子却和样本容量没有关系
  • 根据 p d q 得到模型,对模型的结果进行校验

Alfred

提高使用率的第一步,整理默认搜索支持常见的(谷歌、百度、知乎、微博、淘宝、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

See Also


Andy Matuschak

#People

[[Evergreen notes]] 的网站而火

  • 阅读 My morning writing practice
    下来的体验,笔记的标题可以是另外笔记的内容,这不是刻意打造出来,真的把方法论融入到骨髓里面。

    • 像自己这样,用关键字做为标题,无法达到高度有效的链接。

    • 每一篇笔记没有必要太长,Roam 提供很多工具可以让你进行不同层次的引用。

    • 每天坚持去写!

§Note-writing systems

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 卡片流程

  • 导出效果

The mnemonic medium can be extended to one’s personal notes 回顾个人笔记

Orbit


Anki

简单而强大的 flashcard 软件,可以实现知识的[[Spaced Repetition]]。

一些可以思考的问题

  • 什么是需要制作卡片记忆的内容?

  • 观察不同时间段anki回顾的正确率区别,早晚会有区别吗?

  • 如何衡量卡片是不是原子级别的?平均回顾时间低于10s

使用记录

  • logseq 同步卡片

  • 复制过程中发现需要修改的卡片,搁置卡片等到能用电脑再修改。

    • 电脑端使用快捷键 -

    • 移动端,复习界面设置显示搁置按钮

选项

  • 步伐:一张卡片学几次

记忆难点(Leech)

  • 8 次遗忘,会被暂停

[[Note2Anki]]


Anki 卡片状态

已暂停 :-> 以后会不出现
已搁置 :-> 第二天再学习


Attention

ci=j=1Txαijhjc_{i}=\sum_{j=1}^{T_{x}} \alpha_{i j} h_{j}

  • αij=exp(eij)k=1Txexp(eik)\alpha_{i j}=\frac{\exp \left(e_{i j}\right)}{\sum_{k=1}^{T_{x}} \exp \left(e_{i k}\right)} 是隐藏状态 hjh_j 的权重

    • 用 softmax 得到一个强度表征

    • 为什么需要使用 softmax 做归一化 #card #incremental

      • 避免 attention score 数值过大,导致优化不稳定(数值小的部分)

      • 保证 score 非负

eij=a(si1,hj)e_{i j}=a\left(s_{i-1}, h_{j}\right) 是注意力打分机制

  • 代表 :-> 解码器状态 si1s_{i-1} 和解码器状态 hjh_j 之间的匹配程度

  • 常用的注意力计算方式

    • 加性模型 :-> s(xi,q)=vTtanh(Wxi+Uq)s \left(\mathbf{x}_{i}, \mathbf{q}\right) =\mathbf{v}^{\mathrm{T}} \tanh \left(W \mathbf{x}_{i}+U \mathbf{q}\right)
      • qkv 矩阵较大时效果超越 dot production
    • 点积模型 :-> s(xi,q)=xiTqs\left(\mathbf{x}_{i}, \mathbf{q}\right) =\mathbf{x}_{i}^{\mathrm{T}} \mathbf{q}
      • 不需要额外参数,但是两个矩阵大小需相同
    • 缩放点积模型 :-> s(xi,q)=xiTqds\left(\mathbf{x}_{i}, \mathbf{q}\right) =\frac{\mathbf{x}_{i}^{\mathrm{T}} \mathbf{q}}{\sqrt{d}}
    • 双线性模型 :-> s(xi,q)=xiTWqs\left(\mathbf{x}_{i}, \mathbf{q}\right) =\mathbf{x}_{i}^{\mathrm{T}} W \mathbf{q}
      聚焦式(focus)注意力:
  • 自上而下的有意识的注意力,主动注意——是指有预定目的、依赖任务的、主动有意识地聚焦于某一对象的注意力。

 Attention (Query, Source) =i=1Lx Similarity (Query, Keyi)Valuei\text{ Attention (Query, Source) }=\sum_{i=1}^{L_{x}} \text{ Similarity (Query, Key}_{i} ) * \text{Value}_{i}

流程可视化

为什么要用 attention

  • 参数少,速度快,能缓解神经网络模型复杂度。解决 RNN 不能并行计算问题

  • 效果显著

按计算区域划分

  • soft-attention(global attention) :-> query 对所有 key 求相似度权重,得到 m*n 的 attention score
    image.png

    • att((K,V),q)=i=1Nαivi=i=1Nexp(s(ki,q))jexp(s(kj,q))vi\begin{aligned} \operatorname{att}((K, V), \mathbf{q}) &=\sum_{i=1}^{N} \alpha_{i} \mathbf{v}_{i} \\ &=\sum_{i=1}^{N} \frac{\exp \left(s\left(\mathbf{k}_{i}, \mathbf{q}\right)\right)}{\sum_{j} \exp \left(s\left(\mathbf{k}_{j}, \mathbf{q}\right)\right)} \mathbf{v}_{i} \end{aligned}
  • 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


BERT

[[@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)

    • 预训练任务包含判断 segment A 和 segment B 之间的关系
  • 模型结构 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 预训练

    1. 产出产品,例如 word2evc 的 embedding
    1. 做为骨架接新结构

[[ELMo]]

  • 使用 LSTM 预测下一个单词

[[GPT]]

  • Transformer

  • 单向

-w1304

贡献性

  • 双向信息重要性

模型输入:

    1. Token emb
    1. Segment emb(A B) 针对 QA 或者两个句子的任务
    1. Position emb

训练方式

  • [[Masked-Language Modeling]] :->mask 部分单词,80 % mask,10 % 错误单词, 10% 正确单词

    • 目的 :-> 训练模型记忆句子之间的关系。
      • 减轻预训练和 fine-tune 目标不一致给模型带来的影响
  • [[Next Sentence Prediction]] :-> 预测是不是下一个句子

    • 句子 A 和句子 B 有 50% 的概率是上下文

    • 解决后续什么问题 :-> QA 和自然语言推理
      image.png
      occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTczNDYxNjMzODQyMV8wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6MzY3LjEzMDExNTk3NDg1MjYsInRvcCI6NTkuNDE3NTUwMDkwNDM3Mzk1LCJ3aWR0aCI6NjIzLjU5MTg3MjM5Mzc2MDksImhlaWdodCI6MTE4LjgzNTEwMDE4MDg3NDc2LCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjEwODEuOTAzNDAxNTY2MDE5LCJ0b3AiOjY1LjA2OTA2NDM1NDU0MTcsIndpZHRoIjo2NjUuMjAzOTI0MjY0NDI2LCJoZWlnaHQiOjkwLjM5NTU1NzkzMTAxMTA3LCJhbmdsZSI6MCwiY0lkIjoyfV19fQ==
      [[激活函数]] [[GELU]]

  • 和 [[GPT]] 一致,为什么?

优化器

  • 不完整版 adam

  • fine tune 时可能不稳定,需要换成正常版 adam

fine tune

  • 根据任务调整输入和增加预测结构,使用相关数据训练

  • 使用 fine tune 比将bert做为特征放到模型中效果要好

    1. 双句分类
    1. 单句分类
    • CLS 后接 softmax
    1. 预测一个 start 和 end embedding,然后和 T 计算 softmax 取概率最大的做为开始和结束的位置
    1. 实体标注

研究取不同的 embedding 效果

缺陷

  • 不擅长生成类任务(机器翻译、文本摘要)

[[Ref]]


AUUC

[[UPlift Model]] 目标是学习个体潜在弹性 τ=Y(1)Y(0)\tau=Y(1)-Y(0)
,没有标签。

计算过程

  • 数据集 D=(Yiobs ,WiD=\left(Y_i^{\text {obs }}, W_i\right., score i)\left._i\right)

    • W 是样本所在的组,1 为实验组,0 为空白组

    • Y_obs 是观测到的样本响应信号

    • socre 是样本的 uplift 值

  • 按 socre 从大到小排序,第 k 个的 uplift 值

    • u(k)=RT(D,k)NT(D,k)RC(D,k)NC(D,k)u(k)=\frac{R^T(D, k)}{N^T(D, k)}-\frac{R^C(D, k)}{N^C(D, k)}

      • RT(D,k)=YiobsI(Wi=1)R^T(D, k)=\sum Y_i^{o b s} \mathbb{I}\left(W_i=1\right) 排在前 k 个样本中属于实验组的人的响应之和

      • RC(D,k)=YiobsI(Wi=0)R^C(D, k)=\sum Y_i^{o b s} \mathbb{I}\left(W_i=0\right) 空白组的人的响应之和

      • NT(D,k)=I(Wi=1)N^T(D, k)=\sum \mathbb{I}\left(W_i=1\right) 前 k 实验组人数

      • NC(D,k)=I(Wi=0)N^C(D, k)=\sum \mathbb{I}\left(W_i=0\right) 前 k 空白组人数

      • 避免实验组和对照组用户数量差别较大导致指标不可靠

      • 全量人群的 [[Average Treatment Effect]]

    • 含义:前 k 个样本中实验组平均产生的价值 - 前 k 个样本中空白组平均产生的价值

  • 计算 AUUC=Snu(n)A U U C=\frac{S}{n * u(n)}

    • S=k=1n(u(k)k)S=\sum_{k=1}^n(u(k) * k)

      • (u(k)k)(u(k) * k) 代表前 k 个人产生的 uplift 值

Ref

  • 实现 [[causalml]]

    • lift.plot x=k, y=u(k)

    • gain.plot x=k, y= k*u(k)

  • 弹性模型的评测指标AUUC - 知乎

    • 画 [[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值不再是“收益”,更像是“花销”。

  • [[@DiDi Food中的智能补贴实战漫谈]]

image.png


Bayes theorem

[[Bayesian]]概率:概率很难求,求反概率就很容易。

P(θX)=P(Xθ)P(θ)P(X)P(\theta|X) = \frac{P(X|\theta)P(\theta)}{P(X)}

  • posterior=likehoodpriorevidenceposterior = \frac{likehood * prior}{evidence}

  • posterior 后验概率 P(θX)P(\theta|X) :<-> 通过样本 X 得到 theta 的概率

  • likehood 似然函数 P(Xθ)P(X|\theta) :<-> 通过参数 theta 得到样本 X 的概率

  • prior [[先验概率]] P(θ)P(\theta) :<-> 在试验尚未发生前,对参数 θ\theta 的估计

    • 客观先验概率 :<-> 利用过去历史资料计算出来得到的先验概率
    • 主观先验概率 :<-> 凭主观经验来判断而得到的先验概率
  • evidence :<-> 样本 x 发生的概率
    [[极大似然估计]]

  • 核心思想:当前发生的事件是概率最大的事件,给定数据集,使得该数据集发生的概率最大求模型中的参数。

    • 最大化似然函数 p(Xθ)=x1xnp(xiθ)p(X \mid \theta)=\prod_{x_1}^{x_n} p(x_i \mid \theta)

    • 对似然函数取对数变成对数似然函数方便计算

  • 计算似然估计只关注当前的样本(当前已经发生的事情,不考虑事情的先验情况)

[[最大后验估计]]

贝叶斯估计

See

Ref


Beam Search

[[NLP]] 中比较常用

参数 B 控制 beam width

翻译任务中:第一次选取概率最高的 B 个词语。第二次在这 B 个词语上进行扩展下一个单词,然后选取概率最高的 B 个词组,以此类推,直到结束。B=1 时相当于贪心。

image.png

[[Seq2Seq]] 中应用在 decode 部分

[[Transformer]] 解决实际预测环节如何构造一个理想输出

[[Ref]]


Bernoulli Distribution

f(x)=px(1p)1xf(x)=p^x(1-p)^{1-x}

E(x)=xf(x)=0(1p)+p=pE(x)=xf(x)= 0 * (1-p) + p= p
D(x)=p(1p)D(x)=p(1-p)
抛一次硬币

求解唯一的参数 μ\mupp

  • 根据似然函数

    • p(Dμ)=n=1Np(xnμ)=n=1Nμxn(1μ)1xnp(\mathcal{D} \mid \mu)=\prod_{n=1}^N p\left(x_n \mid \mu\right)=\prod_{n=1}^N \mu^{x_n}(1-\mu)^{1-x_n}
  • 求对数似然函数

    • lnp(Dμ)=n=1Nlnp(xnμ)=n=1N{xnlnμ+(1xn)ln(1μ)}\ln p(\mathcal{D} \mid \mu)=\sum_{n=1}^N \ln p\left(x_n \mid \mu\right)=\sum_{n=1}^N\left\{x_n \ln \mu+\left(1-x_n\right) \ln (1-\mu)\right\}
  • 对对数似然求导,令结果等于 0

    • μML=1Nn=1Nxn\mu_{\mathrm{ML}}=\frac{1}{N} \sum_{n=1}^N x_n

样本的均值是伯努利分布的[[充分统计量]] sufficient statistic
ls-type:: annotation
hl-page:: 89
hl-color:: yellow
(分布的参数 μ\mu 可以由该统计量估计得到)


Beta 分布

Beta(μa,b)=Γ(a+b)Γ(a)Γ(b)μa1(1μ)b1\operatorname{Beta}(\mu \mid a, b)=\frac{\Gamma(a+b)}{\Gamma(a) \Gamma(b)} \mu^{a-1}(1-\mu)^{b-1}

E[μ]=aa+b\mathbb{E}[\mu]=\frac{a}{a+b}
var[μ]=ab(a+b)2(a+b+1)\operatorname{var}[\mu]=\frac{a b}{(a+b)^2(a+b+1)}

例子 [[@PRML Note 前十一章]] 2-006
ls-type:: annotation
hl-page:: 62
hl-color:: purple
以及 ((654bb13c-db71-49d4-ad0e-123ec812c258))

  • [[二项分布]] 概率函数

    • p(mN,μ)=CNmμm(1μ)Nmp(m \mid N, \mu)=C_N^m \mu^m(1-\mu)^{N-m}
  • 结合 Beta 先验分布,根据[[贝叶斯公式]]后验分布有

    • p(μm,N,a,b)p(mN,μ)p(μa,b)=CNmμm(1μ)NmΓ(a+b)Γ(a)Γ(b)μa1(1μ)b1μm+a1(1μ)Nm+b1\begin{aligned} p(\mu \mid m, N, a, b) & \propto p(m \mid N, \mu) p(\mu \mid a, b) \\ & =C_N^m \mu^m(1-\mu)^{N-m} \frac{\Gamma(a+b)}{\Gamma(a) \Gamma(b)} \mu^{a-1}(1-\mu)^{b-1} \\ & \propto \mu^{m+a-1}(1-\mu)^{N-m+b-1}\end{aligned}

      • n 和 m 都是已知

      • 超参数 a 和 b 是先验中时间发生的次数和不发生的次数,a+b就是有效观察次数

      • 根据这个公式可以看出先验对后验的影响

  • 根据 p(μm,l,a,b)=Γ(m+a+l+b)Γ(m+a)Γ(l+b)μm+a1(1μ)l+b1p(\mu \mid m, l, a, b)=\frac{\Gamma(m+a+l+b)}{\Gamma(m+a) \Gamma(l+b)} \mu^{m+a-1}(1-\mu)^{l+b-1} 后验分布也服从 Beta 分布

    • 根据 E[μ]=aa+b\mathbb{E}[\mu]=\frac{a}{a+b}
      得到事件发生的概率期望等于事件发生次数除以总次数

    • 二项分布中 p(x=1D)p(x=1 \mid D) 预测的分布就是 E[μD]\mathrm{E}[\mu \mid D]

      • p(x=1D)=E[μD]=m+aN+a+b=m+am+a+l+bp(x=1 \mid D)=\mathrm{E}[\mu \mid D]=\frac{m+a}{N+a+b}=\frac{m+a}{m+a+l+b}

      • 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 取值越集中。根据 var[μ]=ab(a+b)2(a+b+1)\operatorname{var}[\mu]=\frac{a b}{(a+b)^2(a+b+1)}
      a和趋于无穷时,u 的方差趋于 0。对应试验次数越多,u 的取值越集中,不确定(方差)越小。

      • 下图是 beta 分布概率密度曲线

image.png

+ [\[\[试验次数和后验分布的关系\]\]](/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


Box-Cox transformation

标准变换

  • y(λ)={yiλ1λ, 如果 λ0;ln(yi), 如果 λ=0.y(\lambda)=\left\{\begin{array}{l}\frac{y_i^\lambda-1}{\lambda}, \text { 如果 } \lambda \neq 0 ; \\ \ln \left(y_i\right), \text { 如果 } \lambda=0 .\end{array}\right.

选择 λ\lambda 使得变换后的样本正态性最好

常用 λ\lambda 值,y(λ)=yiλy(\lambda)= y_i^{\lambda}

  • λ=2,y(λ)=yi2\lambda = 2, y(\lambda)= y_i^2

  • λ=0.5,y(λ)=yi\lambda = 0.5, y(\lambda)= \sqrt {y_i}

  • λ=0.5,y(λ)=1yi\lambda = -0.5, y(\lambda)= \frac{1}{\sqrt {y_i}}

  • λ=1,y(λ)=1yi\lambda = -1, y(\lambda)= \frac{1}{y_i}

Ref


Building a Second Brain

CODE

  • Capture

    • 记录哪些信息:不要被动和随意的去接受信息,建立自己关注的领域。在关注领域提出最多 12 个带解决的问题或疑惑。
  • Organize

  • Distill

  • Express

    • Intermediate Packet

CBOW

全称 :-> continuous bag-of-word
输入词经过线性变化后,词向量进行累加求和作为隐藏层。

经过softmax得到概率分布向量,进而计算概率的交叉熵实现参数的训练。


BN 和 LN

归一化目的是将具有 相同性质的数据 转化成 标准正态分布 ,其结果不会破坏 数据之间的可比较性
LN 的操作可以类比于从一个句子中找到一个中心词,计算所以词和中心词的关系。

为什么处理不定长序列场景需要 LN ? #card

  • 使用 BN padding 部分特征 pooling, 会扰乱正常非 padding 部分特征

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]]

  • RNN为什么不适合做BN? - 知乎

    • BN 需要记录均值和方差

Batch Normalization

缓解神经网络“内部协方差漂移”([[Internal Covariance Shift]], ICS)

  • How Does Batch Normalization Help Optimization?

对每个隐藏层输入进行 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)

  • offset 和 scale 是参数,分别初始化为 0 和 1
  • variance_epsilon 很小的一个值,防止除零
    批归一化也会降低模型的拟合能力,比如 sigmoid 激活函数中,批量归一化后数据整体处于函数的非饱和区,破坏之前学到的连接权重。引入 offset 和 scala 是为了能还原成最初的输入,与之前的网络层解耦。

μi=1Mxi,σi=1M(xiμi)2+ϵ\mu_{i}=\frac{1}{M} \sum x_{i}, \quad \sigma_{i}=\sqrt{\frac{1}{M} \sum\left(x_{i}-\mu_{i}\right)^{2}+\epsilon}

  • 对每个维度的特征计算均值和标准差

image.png

算法流程

image.png
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTcyNDE3MjAzMTgxN18wLnBuZyI6eyJjb25maWciOnsiaGlkZUFsbFRlc3RPbmUiOnRydWV9LCJlbGVtZW50cyI6W3sibGVmdCI6MTkxLjUxNTUyOTA3NzA4ODUzLCJ0b3AiOjE4OS41OTQ0MTY2NTQ0MjUyMywid2lkdGgiOjEzMS4xMTE5ODc5MjE3NDAxNCwiaGVpZ2h0IjoxMTEuMDQ2MzYzNjc5NTEyNjQsImFuZ2xlIjowLCJjSWQiOjF9LHsibGVmdCI6MjM3LjYyNjk0ODU1ODAzOTU0LCJ0b3AiOjI5My41MjM4MzU2MzQwMjc1Mywid2lkdGgiOjIyNS41NTcwNjM5NjcwNjExNywiaGVpZ2h0Ijo4OS43NDU0MTY3MDE4ODkyMSwiYW5nbGUiOjAsImNJZCI6Mn0seyJsZWZ0IjoyNDguMTgyNTc0NzA0MjgxMywidG9wIjozODEuOTEwMzMxMTI3MTkxMzQsIndpZHRoIjoyNDIuMjIzODQyMDkyNzA2MTUsImhlaWdodCI6NzUuMTAwMTE2Njg3NjUwMDcsImFuZ2xlIjowLCJjSWQiOjN9LHsibGVmdCI6MjY2LjUxNjAzMDY0MjQ5MDcsInRvcCI6NDUxLjA3ODgwMTY1ODU3NzEsIndpZHRoIjoyNzguODkwNzUzOTY5MTI0OTQsImhlaWdodCI6NTguOTE0MTUzMDI3MTIyODksImFuZ2xlIjowLCJjSWQiOjR9LHsibGVmdCI6NjAzLjY0ODM4NDc1Njg5NTQsInRvcCI6MTk1LjAyMjI3MzI2Mjk1NTIsIndpZHRoIjoxOTcuOTYzMzQ3MDEzMjc0NTYsImhlaWdodCI6NTQuNDEyOTk1NjA2OTAwNjQsImFuZ2xlIjowLCJjSWQiOjV9LHsibGVmdCI6NTg3LjkyNzU4NTQ5NDI5NTQsInRvcCI6MjkzLjg0NDM0ODI0MTY1MzcsIndpZHRoIjoyMzYuMDcxNjU2Nzg4NzMyNTUsImhlaWdodCI6NDUuNTQ4NjI2MzI2NTA1NzcsImFuZ2xlIjowLCJjSWQiOjZ9LHsibGVmdCI6NjI3LjUzNjE2NDM5MTM4MDgsInRvcCI6MzczLjczOTY1NTI2MDY1MzU0LCJ3aWR0aCI6MTU4LjQsImhlaWdodCI6NDMuNDQ0NjUyNjE4NzA3ODM1LCJhbmdsZSI6MCwiY0lkIjo3fSx7ImxlZnQiOjYxOS40MjY5ODM2MTU4MTI5LCJ0b3AiOjQ0NC41MzkyOTM0MTA5MDQyNCwid2lkdGgiOjE3NS4yOTUwOTc2MjkxMTY5OCwiaGVpZ2h0Ijo0My45ODU0NDY0NzUwMDc5NiwiYW5nbGUiOjAsImNJZCI6OH1dfX0=
原理

    1. 加快网络训练和收敛的速度:每层数据的分布一致
    1. 防止梯度爆炸和梯度消失
    1. BN 防止过拟合:minibatch 中的样本被关联在一起,一个样本的输出取决于样本本身,也取决于同属一个batch的其他样本。

[[Batch Normalization/前向和反向传播]]

[[Batch Normalization/维度理解]]

如何得到预测时 BN 层使用的均值和方差?

    1. 训练时,保留每组 mini-batch 训练数据在网络每一层的均值和方差
    • 均值、方差是基于所有批次的期望计算所得
      • E[x]EB[μB]E[x] \leftarrow E_{B}\left[\mu_{B}\right]
      • Var[x]mm1EB[σB2]\operatorname{Var}[x] \leftarrow \frac{m}{m-1} E_{B}\left[\sigma_{B}^{2}\right]
    1. moving statistics [[Batch Normalization/Moving average]]

为什么BN层一般用在线性层和卷积层后面,而不是放在非线性单元后

  • BN 层希望得到 0-1 高斯分布 的数据

  • 非线性单元之后的数据分布 不一定对称

  • 实践中 BN 放在 ReLU 后面 #card

    • Normalization 一般是在输入层之前对数据处理,Batch-Normalization 可以视作对传给隐藏层的输入的normalization。
  • 放在 tanh 或 sigmoid 之前,可以 避免进入饱和区,缓解梯度衰减问题
    BN 和 [[ReLU]] 的顺序关系?

  • [[ResNet]] :-> Skip -> BN -> RELU -> Conv -> BN -> RELU -> Conv -> Add

    • [[Identity Mappings in Deep Residual Networks]]

image.png

  • BN-ReLU
    • 特点 :-> BN 后输入数据更接近 0 均值,或减轻数据落入负区间梯度消失现象,或更好展现 ReLU 的单侧抑制作用进行特征选择
  • ReLU-BN
    • 特点 :-> 激活后再 Norm,保证下一层的输入是零均值的。
      [[Batch Normalization/多卡同步]]

[[Batch Normalization 为何有效]]

[[Ref]]


Ch2 Probaility Distributions

[[伯努利分布]] 一次二值实验

[[多项分布]] k 种取值

[[高斯分布]]

  • [[参数估计]]

    • [[极大似然估计]]
  • [[高斯共轭先验]]

    • 均值共轭先验是高斯分布

    • 方差

      • 一维高斯方差的共轭先验是逆Gamma分布

      • 多维高斯协方差阵的共轭先验是逆Wishart分布

  • 无信息先验及其他

[[指数族分布]] 一定可以找到共轭先验,且共轭先验形式确定。

  • 非参模型:不能由有限个参数决定,对新 x 计算可以用之前全部的训练数据

    • 参数控制模型复杂度

    • [[K-Means Clustering]] 中 K 代表中心点数量

根据数据集 X 建模 P(x)

  • [[密度估计]] density estimation

    • [[独立同分布]]i.i.d independent and identically distributed
  • 参数化

  • 非参数化


Chrome

[[快捷键]]

    • 删除地址栏联想内容:按向下箭头键以突出显示相应内容,然后按 Shift + fn + Delete 键

黑暗模式控制

  • 关闭 defaults write com.google.Chrome NSRequiresAquaSystemAppearance -bool YES

  • 打开 defaults write com.google.Chrome NSRequiresAquaSystemAppearance -bool NO

插件


CTR

指标

  • CVR 转化率

    • SSB: Sample Selection Bias,训练时集合是点击的样本,正样本为转换的,负样本为未转化。预测时空间为全体样本,存在 bias

DART

主要思想 :-> 每次新加的树要拟合并不是之前全部树 ensemble 后的负梯度,而是随机抽取一些树 ensmeble 后的负梯度。

  • 解决 GBDT over-specialization 问题

    • 问题现象 :-> 前面迭代树对预测值的贡献比较大,后面的树会集中预测一小部分样本的偏差
    • 常规方法 :-> Shrinkage
      算法流程图
      image.png
  • S1 :-> 训练数据集

  • T1 :-> 使用 S1 数据训练得到决策树

  • 针对决策树 2 到 N #card #incremental

    • 从 M 中随机抽取决策树集合 D,M^\hat{M} 是 M 和 D 的差集

    • 利用 M^\hat{M} 计算样本负梯度,得到数据集 St

    • 利用 St 训练 Tt

    • 调整 Tt 的权重

      • 负梯度只有 M^\hat{M} 树得到,实际上这个少的负梯度由 Tt 和 D 中的树共同拟合,所以需要对 T_t 缩小 D+1 倍
    • 调整 D 中其他树的权重

[[lightgbm 使用记录]] Early stopping is not available in dart mode


DIEN

亮点

    1. 引入辅助 Loss:利用 GRU 的 hidden state 与下一个点击的商品做一个
    1. 一般模型把用户行为直接当成兴趣,dien 认为用户兴趣是隐藏在行为中,需要去挖掘

image.png

  • 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]]


DCN

在 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

  • 每一层都是由 x0x_0 和前一层的输出 xlx_l 交叉学习残叉。

  • ResNet 的引入可以将网络做的更深。

  • 特点:有限高阶、自动叉乘、参数共享

  • xl+1=x0xlTwl+bl+xl=f(xl,wl,bl)+xl\mathbf{x}_{l+1}=\mathbf{x}_{0} \mathbf{x}_{l}^{T} \mathbf{w}_{l}+\mathbf{b}_{l}+\mathbf{x}_{l}=f\left(\mathbf{x}_{l}, \mathbf{w}_{l}, \mathbf{b}_{l}\right)+\mathbf{x}_{l}

  • 图中可以看到随着层数的增加,参数 w 会线性增加。

Deep NetWork

  • Cross Network 中的参数量太少,不能学习高维的非线性特征。

Analysis

  • Cross 的设计最后包含了每个特征的从 1 阶到高阶的特征组合。与 FM 不同每个特征组合的参数部分共享,所以能降低参数量,比 FM 有更好的泛化性和鲁棒性。比如 FM 可以解决 xi 和 xj 没有同时出现过的情况,但是 Cross 能处理 xi 和 xj 都没有出现过的情况 ……


DIN

[[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]]

    • vU(A)=f(vA,e1,e2,,eH)=j=1Ha(ej,vA)ej=j=1Hwjejv_{U}(A)=f\left(\boldsymbol{v}_{A}, \boldsymbol{e}_{1}, \boldsymbol{e}_{2}, \ldots, \boldsymbol{e}_{H}\right)=\sum_{j=1}^{H} a\left(\boldsymbol{e}_{j}, \boldsymbol{v}_{A}\right) e_{j}=\sum_{j=1}^{H} w_{j} \boldsymbol{e}_{j}

      • 历史行为和候选广告做叉乘反映两者的 相关性 ,早期版本使用 embedding 差。
      • 和传统的 attention 相比,没有使用 softmax 去进行归一化,用来表达用户信息的强烈程度? #card
        • 赋予和候选广告相关的历史兴趣更高的weight
  • 商品特征包括 goods_id shop_id cate_id(分类)

  • 网络结构 #card
    image.png
    [[mini-batch aware regularization]]

[[data adaptive activation function]]

Attention 权重可视化 #card
image.png

[[Group AUC]]

问题

  • DIN 模型提出的动机是什么?是否适合自己公司当前的场景和数据特点?#card

  • DIN 模型的模型结构是什么?具体实现起来有那些工程上的难点?#card

    • 用户对应行为序列的获取
  • DIN 模型强调的注意力机制是什么?#card

    • 候选商品和用户行为序列的关系
  • [[为什么在推荐系统中引入注意力机制能够有效果上的提升?]]#card

    • 动态权重分配,替代平均池化。长短期分配

    • 引入行为序列表达用户兴趣

    • 可解释性与鲁棒性

  • DIN 模型将用户和商品进行了 Embedding,在实际使用中,应该如何实现 Embedding 过程?#card

  • 与DIN类似的模型有哪些,是否适合当前的使用场景。#card
    [[Ref]]

  • 详解 Deep Interest Network: 为阿里创造更多广告收入 - 知乎

  • 推荐系统中的注意力机制——阿里深度兴趣网络(DIN) - 知乎


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)


Dynamic Pricing

定价:预估 + 决策

  • 去偏(uplift、因果、单调性、parameterized model)表征(seq/时空/GNN)预估准确性(uncertainty、拒绝器、calibration)多目标、长期价值

  • 决策:流控(系统、时效、大规模)、calibration、constrained RL

image.png


DeepWalk

DeepWalk: Online Learning of Social Representations


Effie

[[Markdown]] 写作软件

简洁而不简陋

  • 简单、简洁是通过复杂逻辑设计实现

  • 极简绝不是直截了当地做减法,而应当是在幕后完成更多的设计和开发工作,让前台「暴露」给使用者的部分在完成功能使命的前提下尽最大可能地精简。

文件不用命名就能保存

文章和大纲混排

  • 大纲可以变成思维导图

功能描述

  • 「不觉已春深,物我两相忘。」

  • 「桐花诗八韵,思绪一何深。」

  • 「无穷如天地,不竭如江海。」

  • 「著叶满枝翠羽盖,开花无数黄金钱。」


Eugene Yan

Amazon 的工程师,偏向机器学习系统实现

eugeneyan.com

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]]


Evergreen notes

#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)"


Farnam Street

#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


Feature Engineering

模型用来逼近 特征上限
[[特征设计原则四象限]]
[[特征设计]]

[[特征选择]]

  • 特征值之间的方差小,代表其 识别能力较弱

[[数据清洗]] 对异常数据进行清洗,最常见的异常有空值异常(缺省值处理)、数值溢出(数值异常处理)。

[[特征变换]]

使用方式

特征重要性分析和[[特征选择]]

特征抽取

  • 线性判别分析[[Fisher]]

  • [[PCA]]

  • [[自编码器]]

[[深度学习不需要特征工程?]]

Explicit Semantic Cross Feature Learning via Pre-trained Graph Neural Networks for CTR Prediction

  • 使用 GNN 构造 (用户特征,物料特征) 的交叉特征

  • 预估输入特征的 xtr

Ref

  • @探讨特征工程的方法论

    • [[类似 automl 的特征字典]]

    • 基于业务逻辑去做特征工程

    • 特征重要性表的特征工程思路

      • 利用 xgb/lgb 输出特征重要性,对重要性高的特征交叉

      • 通过 embedding 对物品进行泛化

  • 工业级推荐系统中的特征工程 - 知乎 (zhihu.com)

    • 误区

      • 深度学习不需要特征工程?

        • 模型可以学习 row-based 的特征变换,很难学习 column-based 特征变换(counting,tf-idf)
      • [[AutoML]] 工具取代特征工程?

      • 特征工程没有技术含量?

    • 搜广推场景下的特征工程

      • high-cardinality 属性表示位特征时的挑战

      • 对特征进行统计,分桶,然后再交叉


GBDT

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)}$$

加法模型

  • F(x;w)=m=1Mαmhm(x;wm)=m=1Mft(x;wt){F(x;w)=\sum^{M}_{m=1} \alpha_m h_m(x;w_m) = \sum^{M}_{m=1}f_t(x;w_t)}

  • 其中,x 为输入样本,h 为分类回归树,w 是分类回归树的参数,α{\alpha} 是每棵树的权重。

  • GBDT 算法可以看成是由 k 棵树组成的加法模型

    • y^i=k=1Kfk(xi),fkF\hat{y}_i=\sum_{k=1}^K f_k\left(x_i\right), f_k \in F

流程

  • 通过最小化损失函数求解最优模型:F=argminFi=1NL(yi,F(xi)){F^* = argmin_F \sum^N_{i=1}L(y_i, F(x_i))}

  • 输入: (xi,yi),T,L{(x_i,y_i),T,L}

    1. 初始化:f0(x){f_0(x)}
      1. 求解损失函数最小
      1. 随机初始化
      1. 训练样本的充分统计量
    1. 对于 t=1toT{t = 1 to T}
    • 2.1 计算负梯度(伪残差): yi~=[L(yi,F(xi))F(x)]F(x)=Fm1(x),i=1,2,...,N{ \tilde{y_i} = -[\frac{\partial L(y_i, F(x_i))}{\partial F(x)}]_{F(x)=F_{m-1}(x)} ,i=1,2,...,N}

    • 2.2 根据 yi~{\tilde{y_i}} 学习第 m 棵树: w=argminwi=1N(yi~ht(xi;w))2{w^*=argmin_{w} \sum_{i=1}^N(\tilde{y_i} - h_t(x_i;w))^2}

      • 最小化问题中,如果有解析解,直接带入。否则,利用泰勒二阶展开,Newton Step 得到近似解。
    • 2.3 line searcher 找步长:ρ=argminρi=1NL(yi,Ft1(xi)+ρht(xi;w)){\rho^* = argmin_\rho \sum_{i=1}^{N}L(y_i, F_{t-1}(x_i)+\rho h_t(x_i;w^*))}

    • 2.4 令 ft=ρht(x;w){f_t=\rho^*h_t(x;w*)},更新模型:Ft=Ft1+ft{F_t=F_{t-1}+f_t}

    1. 输出 FT{F_T}

[[GBDT/Loss]]

[[GBDT/Question]]

Ref

  • [[gbdt 时间序列]]


GBDT/Loss

流程

[[Gaussian Distribution]]

  • 损失函数 (yif(xi))2{(y_i - f(x_i))^2}

  • 负梯度 yif(xi){y_i - f(x_i)}

  • 初始化 yim{\frac {\sum y_i}{m}}

  • 叶节点估计

[[AdaBoost]]

  • 损失函数 e(2y1)f(x),y{1,0}{e^{-(2y-1)f(x)}, y\in \{1,0\}}

    • 也可以是 eyf(x),y{1,1}{e^{-yf(x)}, y\in \{1,-1\}}
  • 负梯度 (2y1)e(2y1)f(x){(2y-1)e^{-(2y-1)f(x)}}

  • g=(2y1)e(2y1)f(x){g=-(2y-1)e^{-(2y-1)f(x)}}, h=(2y1)2e(2y1)f(x)=e(2y1)f(x){h=(2y-1)^2e^{-(2y-1)f(x)}=e^{-(2y-1)f(x)}}

  • 初始化 F0=12logP(y=1x)P(y=1x){F_0=\frac{1}{2} \log \frac{\sum P(y=1|x)}{\sum P(y=-1|x)}}

  • 叶节点估计 gh=(2y1)e(2y1)f(x)e(2y1)f(x)=2y1{-\frac{g}{h}=\frac{(2y-1)e^{-(2y-1)f(x)}}{e^{-(2y-1)f(x)}}=2y-1}

[[Bernoulli Distribution]]

  • gbdt 代码中 y{0,1}{y\in \{0,1\}}

    • logistics Regression 与对数损失函数转化

    • y=12,y{0,1}{y^*=\frac{1}{2}, y^*\in \{0,1\}}

    • eyF(x)+eyF(x)=eF(x)+eF(x),y{1,1}{e^{yF(x)}+e^{-yF(x)}=e^{F(x)}+e^{-F(x)}, y\in \{-1,1\}}

    • ylogp(x)+(1y)log(1p(x))=1+y2logeF(x)eF(x)+eF(x)+1y2logeF(x)eF(x)+eF(x){y^*\log p(x)+(1-y^*) \log (1-p(x))=\frac{1+y}{2}\log \frac{e^{F(x)}}{e^{F(x)}+e^{-F(x)}}+\frac{1-y}{2}\log \frac{e^{-F(x)}}{e^{F(x)}+e^{-F(x)}}}

    • =1+y2logeF(x)+1y2logeF(x)+1+y2log1eF(x)+eF(x)+1y2log1eF(x)+eF(x)=yF(x)+log1eF(x)+eF(x){=\frac{1+y}{2}\log e^{F(x)}+\frac{1-y}{2}\log e^{-F(x)} +\frac{1+y}{2}\log \frac{1}{e^{F(x)}+e^{-F(x)}}+\frac{1-y}{2}\log \frac{1}{e^{F(x)}+e^{-F(x)}}=yF(x)+\log \frac{1}{e^{F(x)}+e^{-F(x)}}}

    • =logeyF(x)eyF(x)+eyF(x)=log(1+e2yF(x)){=\log \frac{e^{yF(x)}}{e^{yF(x)}+e^{-yF(x)}}=\log(1+e^{-2yF(x)})}

  • 对数损失函数 log(1+e2yf(x)),y{1,1},F(x)=12logP(y=1x)P(y=1x){\log(1+e^{-2yf(x)})}, y\in \{-1,1\}, F(x)=\frac{1}{2} \log \frac{P(y=1|x)}{P(y=-1|x)}

  • 负梯度 2y1+e2yf(x){\frac{2y}{1+e^{2yf(x)}}}

  • 初始化 F0=logP(y=1x)P(y=1x){F_0= \log \frac{\sum P(y=1|x)}{\sum P(y=-1|x)}}

  • 叶节点估计 xiRjmyi~xiRjmyi~(2yi~){\frac{\sum_{x_i \in R_{jm}}\tilde{y_i}}{\sum_{x_i \in R_{jm}}|\tilde{y_i}|(2-|\tilde{y_i}|)}}

  • single Newton-Raphson

    • log(1+e2yf(x)){log(1+e^{-2yf(x)})}

    • 一阶导数 g=2yi1+e2yiFm1(x){g=-\frac{2y_i}{1+e^{2y_iF_{m-1}(x)}}}

    • 二阶导数 h=4yi2e2yiFm1(x)(1+e2yiFm1(x))2{h=\frac{4y_i^2e^{2y_iF_{m-1}(x)}}{(1+e^{2y_iF_{m-1}(x)})^2}}

    • θ=gh=yi~yi~(2yi~){\theta = -\frac{g}{h}=\frac{\tilde{y_i}}{|\tilde{y_i}|(2-|\tilde{y_i}|)}}

    • yi~(2yi~)=2yi1+e2yiFm1(x)(22yi1+e2yiFm1(x))=2yi(21+e2yiFm1(x)2yi)(1+e2yiFm1(x))2=4yi+4yie2yiFm1(x)4yi2(1+e2yiFm1(x))2=4yi2e2yiFm1(x)(1+e2yiFm1(x))2{|\tilde{y_i}|(2-|\tilde{y_i}|)=|\frac{2y_i}{1+e^{2y_iF_{m-1}(x)}}|(2-|\frac{2y_i}{1+e^{2y_iF_{m-1}(x)}}|)=\frac{|2y_i|(2|1+e^{2y_iF_{m-1}(x)}|-|2y_i|)}{(1+e^{2y_iF_{m-1}(x)})^2}=\frac{|4y_i+4y_ie^{2y_iF_{m-1}(x)}|-4y_i^2}{(1+e^{2y_iF_{m-1}(x)})^2}=\frac{4y_i^2e^{2y_iF_{m-1}(x)}}{(1+e^{2y_iF_{m-1}(x)})^2}}

[[Poisson Distribution]]

  • 概率密度函数:f(y;μ)=μyy!eμ{f(y;\mu)=\frac{\mu ^y}{y!}e^{-\mu }}

  • 对数似然函数:l(y;μ)=i=1myilogμiμilog(yi!){l(y;\mu) = \sum^{m}_{i=1} y_i\log \mu_i - \mu_i - \log(y_i!)}

  • 损失函数:L(yi,F(xi))=i=1mehW(x)yilog(hW(xi)){L(y_i, F(x_i)) = \sum^{m}_{i=1}e^{h_W(x)} - y_i\log (h_W(x_i))}

  • 负梯度:yi~=[L(yi,F(xi))F(x)]F(x)=Fm1(x)=yieFm1(xi){ \tilde{y_i} = -[\frac{\partial L(y_i, F(x_i))}{\partial F(x)}]_{F(x)=F_{m-1}(x)} = y_i-e^{F_{m-1}(x_i)}}

  • 初始化 log(i=1myim){\log(\frac {\sum^{m}_{i=1} y_i}{m})}

  • 叶节点估计 log(i=1myi~i=1meFm1(xi)){\log(\frac {\sum^{m}_{i=1} \tilde{y_i}}{\sum^{m}_{i=1} e^{F_{m-1}(x_i)}})}

[[Laplace Distribution]] MAE

  • 损失函数 i=1myiF(xi){\sum^{m}_{i=1} |y_i-F(x_i)|}

  • 负梯度 yi~=[L(yi,F(xi))F(x)]F(x)=Fm1(x)=sign(yiF(xi)){ \tilde{y_i} = -[\frac{\partial L(y_i, F(x_i))}{\partial F(x)}]_{F(x)=F_{m-1}(x)} = sign(y_i-F(x_i))}

  • 初始化 median(y){median(y)}

  • 叶节点估计 median(yi~){median(\tilde{y_i})}

MAPE

  • 损失函数 i=1myiF(xi)yi{\sum^{m}_{i=1} \frac{|y_i-F(x_i)|}{y_i}}

  • 负梯度 yi~=[L(yi,F(xi))F(x)]F(x)=Fm1(x)=sign(yiF(xi))yi{ \tilde{y_i} = -[\frac{\partial L(y_i, F(x_i))}{\partial F(x)}]_{F(x)=F_{m-1}(x)} = -\frac{sign(y_i-F(x_i))}{y_i}}

  • 初始化 medianw(y){median_w(y)}

  • 叶节点估计 medianw(yi~){median_w(\tilde{y_i})}

  • 证明:

    • 对损失函数求完偏导之后的结果是

      • L(yi,F(xi))F(x)=yi~<01yi+yi~>=01yi{\frac{\partial L(y_i, F(x_i))}{\partial F(x)}= \sum_{\tilde{y_i}<0} - \frac{1}{y_i} +\sum_{\tilde{y_i}>=0} \frac{1}{y_i}}
    • 叶节点要估计一个值 λ{\lambda},使损失函数最小,即可以转化为

      • L(yi,F(xi)+λ)F(x)=yi~+λ<01yi+yi+λ~01yi=0{\frac{\partial L(y_i, F(x_i)+\lambda)}{\partial F(x)}= \sum_{\tilde{y_i}+\lambda<0} - \frac{1}{y_i} +\sum_{\tilde{y_i+\lambda}\geqslant 0} \frac{1}{y_i}}=0
    • 对残差进行从小到大排序,找到一个 yp~{\tilde{y_p}} 值,满足

      • i=0p1yi12i=0m1yi{\sum_{i=0}^{p} - \frac{1}{y_i} \geqslant \frac{1}{2}\sum_{i=0}^{m} \frac{1}{y_i}}

[[SMAPE]]

  • 解析解不好求,还是直接用 XGB 的二阶泰勒展开方便

  • 损失函数 i=1myiF(xi)yi+F(xi)2{\sum^{m}_{i=1} \frac{|y_i-F(x_i)|}{\frac{y_i + F(x_i)}{2}}}

  • 负梯度 yi~=[L(yi,F(xi))F(x)]F(x)=Fm1(x)=4yisign(yiF(xi))(yi+F(xi))2{\tilde{y_i} = -[\frac{\partial L(y_i, F(x_i))}{\partial F(x)}]_{F(x)=F_{m-1}(x)} = -\frac{ 4 * y_i * sign(y_i - F(x_i))}{(y_i + F(x_i))^2}}

Ref


GAT

两种方式

  • Global graph attention

    • 每个顶点 i 都对图上任意顶点进行 attention 计算

    • 相当于不考虑图结构

  • Mask graph attention

    • 只在相邻顶点上计算

GAL graph attentional layer

  • attention 系数 ei,j=a(Whi,Whj)e_{i, j}=a\left(\mathbf{W} \overrightarrow{\mathbf{h}}_{i}, \mathbf{W} \overrightarrow{\mathbf{h}}_{j}\right)

    • 共享参数 W 相当于对顶点特征进行增维

    • 站在顶点 i 的角度看顶点 j 对它的重要性

  • masked attention 机制,只计算顶点 i 和其他相邻点的系数

  • αi,j=softmaxj(ei,j)=exp(LeakyReLU(a[Whi,Whj]))kNiexp(LeakyReLU(a[Whi,Whk])))\alpha_{i, j}=\operatorname{softmax}_{j}\left(e_{i, j}\right)=\frac{\exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}} \cdot\left[\mathbf{W} \overrightarrow{\mathbf{h}}_{i}, \mathbf{W} \overrightarrow{\mathbf{h}}_{j}\right]\right)\right)}{\left.\sum_{k \in \mathcal{N}_{i}} \exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}} \cdot\left[\mathbf{W} \overrightarrow{\mathbf{h}}_{i}, \mathbf{W} \overrightarrow{\mathbf{h}}_{k}\right]\right)\right)\right)}

  • 每个顶点最终输出 hi=σ(jNiαi,jWhj)\overrightarrow{\mathbf{h}}_{i}^{\prime}=\sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i, j} \mathbf{W} \overrightarrow{\mathbf{h}}_{j}\right)

  • multi-head attention

    • hi(K)=k=1Kσ(jNiαijkWkhj)h_{i}^{\prime}(K)=\|_{k=1}^{K} \sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i j}^{k} W^{k} h_{j}\right)

[[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

        • alearn (i,j)=exp(β×cos(Wxi,Wxj))Σk neigh (i)exp(β×cos(Wxi,Wxj))a_{\text {learn }}(i, j)=\frac{\exp \left(\beta \times \cos \left(W x_i, W x_j\right)\right)}{\Sigma_{k \in \text { neigh }(i)} \exp \left(\beta \times \cos \left(W x_i, W x_j\right)\right)}

      • 完全利用学习 GAT

        • alearn (i,j)=exp(LeakyReLU(w[Wxi,Wxj]))Σkneigh(i)exp(LeakyReLU(w[Wxi,Wxk]))a_{\text {learn }}(i, j)=\frac{\exp \left(\operatorname{LeakyReLU}\left(w\left[W x_i, W x_j\right]\right)\right)}{\Sigma_{k \in n e i g h(i)} \exp \left(\operatorname{LeakyReLU}\left(w\left[W x_i, W x_k\right]\right)\right)}
    • GNN 让模型关注到 Garph 中最重要的节点/节点中最重要的信息从而提高信噪比。

      • GAT 利用节点之间的关系,区分联系的层级,增强任务中需要的有效信息。
  • GAT 在同质图上学不到任何有用的 attention 值

    • Cora 机器学论文,7类

    • citeseer 科学论文,6类

    • 非同质 PPI

      • 节点蛋白质,边表示蛋白质之间的相互作用
    • 退化成 GCN

Ref


GCN

核心思想

  • GCN 本质用来提取拓扑图的空间特征

  • 利用『边的信息』对『节点信息』进行『聚合』从而生成新的『节点表示』。

Non Euclidean Structure 拓扑图

为什么需要图卷积神经网络?

  • CNN 研究对象是具备 Euclidean Domains 的数据,特征是他们具有规则的空间结构,可以用一维或二维矩阵来表示。

  • CNN 的平移不变性在非矩阵结构数据不适用

    • 平移不变性

      • 输入怎么变形输出都不变
    • 平移可变性

      • 目标检测,物体从图片左侧移到右侧,坐标发生改变。

      • R-FCN,网络变深平移可变性变差。物体在输入上的小偏移,经过多层 pooling 后在小的 feature map 上感知不到。

将 [[CNN]] 扩展到图上,如何在图上实现卷积的各个特性?

  • 权重共享

  • 局部性

    • 第一代 GCN 没有 local 性质,卷积核的运算矩阵在所有位置上都有非 0 元素

    • 第二代的运算矩阵在和当前顶点邻接的位置都是非 0 元素

  • 多尺度

为什么需要 [[Laplacian matrix]]

  • 对称矩阵,可以进行特征分解

  • 拉普拉斯矩阵只在中心顶点和一阶相连的顶点上有非 0 元素

  • 由于卷积在傅里叶域的计算相对简单,为了在graph上做傅里叶变换,需要找到graph的连续的正交基对应于傅里叶变换的基,因此要使用拉普拉斯矩阵的特征向量。

如何把卷积推广到 Graph 上

  • (fh)G=U(h^(λ1)h^(λn))UTf(f * h)_{G}=U\left(\begin{array}{lll}\hat{h}\left(\lambda_{1}\right) & & \\ & \ddots & \\ & & \hat{h}\left(\lambda_{n}\right)\end{array}\right) U^{T} f
  • [[Laplacian matrix]]分解 可以写成 L=UΛUTL=U \Lambda U^{T}

[[Spectral Networks and Deep Locally Connected Networks on Graphs]] 图上扩展卷积

  • 基于空域的卷积构建 Spatial Construction

  • 基于谱域的卷积构建 Spectral Construction

    • 第一代 GCN

      • youtput =σ(Ugθ(Λ)UTx)y_{\text {output }}=\sigma\left(U g_{\theta}(\Lambda) U^{T} x\right)

        • gθ(Λ)=(θ1θn)g_{\theta}(\Lambda)=\left(\begin{array}{lll}\theta_{1} & & \\ & \ddots & \\ & & \theta_{n}\end{array}\right)
    • Spectral graph theory 借助于图的拉普拉斯矩阵的特征值和特征向量来研究图的性质

[[Convolutional neural networks on graphs with fast localized spectral filtering]]

  • 第二代 GCN

  • h^(λi)\hat{h}\left(\lambda_{i}\right) 设计成 j=0Kαjλlj\sum_{j=0}^{K} \alpha_{j} \lambda_{l}^{j}

  • youtput =σ(Ugθ(Λ)UTx)y_{\text {output }}=\sigma\left(U g_{\theta}(\Lambda) U^{T} x\right)

    • gθ(Λ)=(j=0Kαjλ1jj=0Kαjλnj)=j=0KαjΛjg_{\theta}(\Lambda)=\left(\begin{array}{llll}\sum_{j=0}^{K} \alpha_{j} \lambda_{1}^{j} & & \\ & \ddots & \\ & & \sum_{j=0}^{K} \alpha_{j} \lambda_{n}^{j}\end{array}\right) =\sum_{j=0}^{K} \alpha_{j} \Lambda^{j}

    • Uj=0KαjΛjUT=j=0KαjUΛjUT=j=0KαjLjU \sum_{j=0}^{K} \alpha_{j} \Lambda^{j} U^{T}=\sum_{j=0}^{K} \alpha_{j} U \Lambda^{j} U^{T}=\sum_{j=0}^{K} \alpha_{j} L^{j}

  • 最终

    • youtput =σ(j=0K1αjLjx)y_{\text {output }}=\sigma\left(\sum_{j=0}^{K-1} \alpha_{j} L^{j} x\right)

[[Semi-Supervised Classification with Graph Convolutional Networks]] 利用 Chebyshev 多项式作为卷积核

  • H(l+1)=σ(D~12A~D~12H(l)W(l))H^{(l+1)}=\sigma ( \tilde{D} ^ {-\frac{1}{2}} \tilde{A} \tilde{D} ^ {-\frac{1}{2}} H^{(l)} W^{(l)})

GCN 缺点

  • 训练时需要整个图的结构信息,因此是 transductive 的(训练阶段与预测阶段都是基于同样的图结构)。无法处理 inductive 任务(动态图问题,训练在子图上进行,测试阶段需要处理未知的顶点)

  • 不能处理有向图,不容易实现分配不通的学习权重给不通的 neighbor

    • 拉普拉斯举证的特征分解需要拉普拉斯矩阵是对称矩阵

[[Ref]]


GBDT/Question

使用 Boosting 解决决策树算法 容易过拟合 的缺点
为什么使用决策树? #card

  • 决策树是基于 if-then 规则的集合,易于理解,可解释性强,预测速度快。

  • 需要更少的特征工程,可以不用做特征标准化,可以很好处理字段缺失的数据,自动组合多个特征。

树模型在Gradient boosting这种集成方式下有哪些独特的优势?

  • 样本权重 :-> 方便地将样本权重整合到训练过程中,不需要过采样的方法来调整样本权重。

    • 另外一种方式是 bagging,比如随机森林?

    • [[Adaboost]]

  • 通过 树的层数 来平衡 表达能力和泛化能力

  • 学习器角度 :-> 数据样本波动(采样)对决策树影响大,不同样本集合生成的决策树基分类器随机性比较大。不稳定学习器更适合作为基分类器。

  • 特征工程 :-> 使用不同类型的数据时,不需要做特征标准化/归一化,对数据缺失不敏感

  • 可解释性 :-> 模型可解释性好,学习模型可以输出特征的相对重要程度

  • 特征交叉 :-> 能够自动做多组特征间的特征交叉,具有很好的非线性
    为什么 GB 中使用的弱分类器不能是线性分类器? #card

  • 线性模型无法拟合的残差,无法使用另外一个线性模型去拟合。

  • 如何有多个线性模型,那么也可以将这些模型的系数相加,形成一个新的线性模型。

为什么高维稀疏特征时,lr 的效果会比 gbdt 好?

  • 训练高维稀疏特征时,模型容易 :-> 依赖某个特征。
    • lr 如何解决 :-> 通过正则项对权重比较大的特征进行惩罚,减轻过拟合。
    • 为什么 GBDT 不容易解决?:-> GBDT 惩罚项主要是树的深度和叶子节点的数量,也许 GBDT 只需要一个节点就能拟合,惩罚项比较小。
      GBDT 中的梯度是什么对什么的梯度?[[石塔西]] #card
  • Loss(y_i, F(x_i)) 对 F(x_i) 求导

m*n数据集,如果用GBDT,那么梯度是几维?m维?n维?m*n维?或者是与树的深度有关?或者与树的叶子节点的个数有关 [[石塔西]] #card

  • 每一轮对 m 个样本求梯度,所以梯度是 m 维

GBDT/XGBoost 解决过拟合的思路?

  • 正则化角度 #card

    • 在目标函数中添加正则化。

      • 叶子节点个数 + 叶子节点权重的 L2 正则化
    • CART 正则化剪枝

    • 控制树的深度和最小样本的数量

  • 采样角度 #card

    • 列采样,训练只使用部分特征

    • 子采样,每轮计算使用部分样本

  • early stopping

  • shrinkage :-> 调小学习率减少每棵树的影响,增加树的数量,为后面的训练留出更多的空间
    GBDT与[[随机森林]]模型相比有什么优缺点?

  • 相同点:最终的结果 由多棵树一起 决定

    • RF 决定方式 :-> 多数表决(取平均)
    • GBDT 决定方式 :-> 加权融合
  • 不同点

    • [[集成学习]] :-> GBDT 属于 boosting,随机森林属于 bagging
      • 方差与偏差角度 :-> GBDT 不断降低模型的偏差,RF 不断降低模型的方差
    • 训练样本 :-> RF 每次迭代有放回采样,GBDT 使用全部样本
    • 并行性 :-> RF 可以并行生成,GBDT 只能顺序生成
    • 数据敏感性 :-> RF 对异常值不敏感,GBDT 对异常值比较敏感
    • 泛化能力 :-> RF 不易过拟合,GBDT 容易过拟合

Feature Engineering/Time Series Feature

时间戳衍生

  • 时间特征:年月日、节假日、星期几、上午中午下午凌晨

  • 布尔特征:是否周末

  • 时间差特征

  • time encoding

    • 周期特征循环编码

      • 好处:相邻两天的 encoding 结果相似

      • [[sklearn]] functiontransformer

      • [[sklearn]] functiontransformer

1
2
3
4
def sin_transformer(period):
return FunctionTransformer(lambda x: np.sin(x / period * 2 * np.pi))
def cos_transformer(period):
return FunctionTransformer(lambda x: np.cos(x / period * 2 * np.pi))

时序值衍生

  • 寻找时间序列的趋势因素,季节性周期性因素

  • 滞后值 [[lag feature]]

    • 取过去 X 个时间步作为 feature

      • lag 之间的同比环比n阶差分
    • 昨天、上周同一天等数据高度相关

  • 滑动窗口统计 Rolling Window Statistics

    • 先前时间观察值的统计信息做为特征

    • 前 7 天数据的平均数、中位数、标准差、最大值、最小值

    • 过去数据被聚合成标量,也可以做比例、差值之类的运算

    • 滞后值 [[lag feature]]
      的滑动窗口为 1

  • 扩展窗口统计 Expanding Window Statistics

    • 统计整个序列的全部数据

序列属性衍生

  • 连续变量衍生

    • 其他连续变量特征

    • 股票收盘佳之外还成交量、开盘价等

  • 类别变量 Encoding

    • 类别少时可以用 one-hot encoding

    • 类别如果与顺序无关,放到树模型中会被当成是连续型处理

    • 与 y 做特征交互

      • 预测销量时,统计某个产品类别下的销量均值、标准差等

      • [[目标编码]]

Ref


GNN

任务分类

  • Graph-level task

  • Node-level task

  • Edge-level task

可以利用的信息

  • nodes,

  • edges,

  • global-context

    • master node or context vector

      • 和全部的点或边相连接

      • 解决 node 和 edge 信息传递速度太慢

  • connectivity

无监督的节点表示学习

图分类

  • 同质图 Homogeneity

    • 图中的节点类型和关系类型都仅有一种
  • 异质图

    • 图中的节点类型或关系类型多于一种
  • 属性图

    • 异质图基础上增加了额外的属性信息

问题

  • oversmoothing

Ref

+ [\[\[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) 对邻居的位置不敏感

  + 权重和两个顶点向量相关,和位置无关

GMM

解决高斯分布的单峰性,引入多个高斯模型加权平均拟合数据

几何角度

  • p(x)=k=1KαkN(μk,Σk),α=1p(x)=\sum _{k=1}^{K} \alpha _k N( \mu _k, \Sigma _k), \sum \alpha = 1

生成模型角度

  • 利用离散变量 z 来选择来自哪一个高斯分布

  • p(x)=zp(x,z)=k=1Kp(x,z=k)=k=1Kp(z=k)p(xz=k)p(x)=\sum\limits_zp(x,z)=\sum\limits_{k=1}^Kp(x,z=k)=\sum\limits_{k=1}^Kp(z=k)p(x|z=k)

  • 得到 $$p(x)=\sum\limits_{k=1}^Kp_k\mathcal{N}(x|\mu_k,\Sigma_k)$$
    [[MLE]] 求解

  • 求解上面的 px

  • θMLE=argmaxθlogp(X)=argmaxθi=1Nlogp(xi)=argmaxθi=1Nlogk=1KpkN(xiμk,Σk)\theta_{MLE}=\mathop{argmax}\limits_{\theta}\log p(X)=\mathop{argmax}_{\theta}\sum\limits_{i=1}^N\log p(x_i)=\mathop{argmax}_\theta\sum\limits_{i=1}^N\log \sum\limits_{k=1}^Kp_k\mathcal{N}(x_i|\mu_k,\Sigma_k)

  • log 中有连加号存在,无法求出解析解。
    [[EM]] 求解

  • EM 目标求解:θ(t+1)=argmaxθZlog[p(X,Zθ)]p(ZX,θ(t))dZ=argmaxθEzx,θt[logp(X,Zθ)]\theta ^{(t+1)} = \arg \max _{\theta} \int _Z \log [p(X,Z|\theta)]p(Z|X, \theta ^{(t)})dZ = \arg \max _{\theta} E _{z|x,{\theta ^t}} [\log p(X,Z|\theta)]

  • E-Step

    • Q(θ,θt)=z[logi=1Np(xi,ziθ)]i=1Np(zixi,θt)Q(\theta,\theta^t)=\sum\limits_z[\log\prod\limits_{i=1}^Np(x_i,z_i|\theta)]\prod \limits_{i=1}^Np(z_i|x_i,\theta^t)\\

+ 对第一个累加号展开,第一项为: + $$\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

    • Q=k=1Ki=1N[logpk+logN(xiμk,Σk)]p(zi=kxi,θt)Q=\sum\limits_{k=1}^K\sum\limits_{i=1}^N[\log p_k + \log \mathcal{N}(x_i|\mu_k,\Sigma_k)]p(z_i=k|x_i,\theta^t)

    • pkt+1=argmaxpkk=1Ki=1N[logpk+logN(xiμk,Σk)]p(zi=kxi,θt) s.t. k=1Kpk=1p_k^{t+1}=\mathop{argmax}_{p_k}\sum\limits_{k=1}^K\sum\limits_{i=1}^N[\log p_k+\log \mathcal{N}(x_i|\mu_k,\Sigma_k)]p(z_i=k|x_i,\theta^t)\ s.t.\ \sum\limits_{k=1}^Kp_k=1

      • 化简 $$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)$$

      • pkL=i=1N1pkp(zi=kxi,θt)+λ=0\frac{\partial}{\partial p_k}L=\sum\limits_{i=1}^N\frac{1}{p_k}p(z_i=k|x_i,\theta^t)+\lambda=0\\

\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 问题上的区别

  • θMLE=argmaxθlogp(X)=argmaxθi=1Nlogp(xi)=argmaxθi=1Nlogk=1KpkN(xiμk,Σk)\theta_{MLE}=\mathop{argmax}\limits_{\theta}\log p(X)=\mathop{argmax}_{\theta}\sum\limits_{i=1}^N\log p(x_i)=\mathop{argmax}_\theta\sum\limits_{i=1}^N\log \sum\limits_{k=1}^Kp_k\mathcal{N}(x_i|\mu_k,\Sigma_k)

  • Q=k=1Ki=1N[logpk+logN(xiμk,Σk)]p(zi=kxi,θt)Q=\sum\limits_{k=1}^K\sum\limits_{i=1}^N[\log p_k + \log \mathcal{N}(x_i|\mu_k,\Sigma_k)]p(z_i=k|x_i,\theta^t)

  • 极大似然需要计算 $$P(X)$$,EM 计算 $$P(X,Z)$$。$$P(X) = \sum _Z P(X,Z)$$,每次单独考虑 $$P(X,Z)$$,避免在 log 中求和。

E 和 M 具体的含义还没有整理!


Git/Hooks

Hooks 可以实现在 git 命令后,触发额外的脚本。初始化 git 项目时,会在 .git/Hooks 目录中生成一些 sample 文件。

举个例子,这个站点的 md 源文件放在 writing/notes 目录中,站点对应的项目是 xiang578/gru。每一次更新笔记后,需要手动将文件从 writing/notes 复制到 gru/docs,然后再 push 到 github 中部署。

  • 新建脚本 gru/.git/post-commitpost-commit 代表这个脚本会在 commit 时触发,脚本代码如下:
1
2
3
4
5
6
7
8
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.

tmp=../gru/
cd $tmp
cp -rf ../writing/notes/* docs/.

Ref


Git/submodule

增加新的子库

  • git submodule add url

子库更新到最新版本

  • git submodule update --remote

新项目初始化所有子库

  • git submodule init

  • git submodule update


Git/代理

直接使用 [[Clash]] 终端代理命令,然后使用 https 下载

设置代理

1
2
3
git config --global http.proxy socks5://127.0.0.1:7890
git config --global https.proxy socks5://127.0.0.1:7890
git config --global http.sslVerify false

取消代理

1
2
git config --global --unset http.proxy 
git config --global --unset https.proxy

通过 .ssh/config 配置

1
2
3
#ssh .ssh/config
Host github.com bitbucket.org
ProxyCommand nc -x 127.0.0.1:7890 %h %p

GraphSAGE

Inductive Representation Learning on Large Graphs

  • [[Inductive Learning]]

GraphSAGE 是一种 inductive 的顶点 embedding 方法

aggregator functions 融合目标节点领域的特征,需要具有对称性

  • mean-aggregator 邻居先求平均,然后 concat 当前节点过全连接

    • hN(v)kMEANk({huk1,uN(v)})\mathbf{h}_{\mathcal{N}(v)}^{k} \leftarrow MEAN _{k}\left(\left\{\mathbf{h}_{u}^{k-1}, \forall u \in \mathcal{N}(v)\right\}\right)

    • hvkσ(WkCONCAT(hvk1,hN(v)k))\mathbf{h}_{v}^{k} \leftarrow \sigma\left(\mathbf{W}^{k} \cdot \operatorname{CONCAT}\left(\mathbf{h}_{v}^{k-1}, \mathbf{h}_{\mathcal{N}(v)}^{k}\right)\right)

      • 将领域融合的特征和节点本身的特征进行拼接,通过神经网络更新每个节点的特征。

      • 局部频域卷积的一个线性近似

    • gcn aggregator 结点和邻居先求平均,然后过全连接

      • hvkσ(WMEAN({hvk1}{huk1,uN(v)})\mathbf{h}_{v}^{k} \leftarrow \sigma\left(\mathbf{W} \cdot \operatorname{MEAN}\left(\left\{\mathbf{h}_{v}^{k-1}\right\} \cup\left\{\mathbf{h}_{u}^{k-1}, \forall u \in \mathcal{N}(v)\right\}\right)\right.

      • 和上一个区别在于当前节点信息什么时候和邻居节点融合,mean 是在 nn 层融合,gcn 是先求平均。

  • lstm

    • 非对称,通过邻居随机排列来调整对无序集的支持
  • pooling aggregator

    • hN(v)(k)=max({σ(Wpool hu(k1)+bpool )uN(v)})\overrightarrow{\mathbf{h}}_{\mathcal{N}(v)}^{(k)}=\max \left(\left\{\sigma\left(\mathbf{W}_{\text {pool }} \overrightarrow{\mathbf{h}}_{u}^{(k-1)}+\overrightarrow{\mathbf{b}}_{\text {pool }}\right) \mid u \in \mathcal{N}(v)\right\}\right)

    • 领域内每个顶点的特征向量通过全链接神经网络独立计算,然脏通过一个逐元素的最大池化来聚合领域信息

如何定义损失函数?

  • 监督学习 [[Cross Entropy]]

  • 无监督学习

    • JG(zu)=log(σ(zuzv))QEvnPn(v)log(σ(zuzvn))J_{\mathcal{G}}\left(\mathbf{z}_{u}\right)=-\log \left(\sigma\left(\mathbf{z}_{u}^{\top} \mathbf{z}_{v}\right)\right)-Q \cdot \mathbb{E}_{v_{n} \sim P_{n}(v)} \log \left(\sigma\left(-\mathbf{z}_{u}^{\top} \mathbf{z}_{v_{n}}\right)\right)

    • 顶点 u 和顶点 v 是在长度为 l 的 random walk 上共现的顶点。

      • 相邻顶点的表示类似,负采样不类似
    • Pn(v)P_n(v) 负采样的分布函数

邻域

  • 均匀采样得到固定大小的领域 N(v)\mathcal{N}(v), 确保每个 batch 的计算代价是固定的。

    • 顶点 v 在每一层采样不同的领域,在不同层的领域大小都不同。

    • 实验中 2 层,且两次领域数乘积小于 500

[[Ref]]


Informer/Code

encoder 输入

  • feature 特征张量 (336,7) + 时间特征张量 (336,4)

decoder 输入

  • feature 特征张量 (336+168,7) + 时间特征张量 (336+168,4)

  • 168 是一次需要预测的长度

Encoder

  • forward

ProbAttention

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
def forward(self, queries, keys, values, attn_mask):
import ipdb; ipdb.set_trace()
B, L_Q, H, D = queries.shape # [32, 336, 8, 64]
_, L_K, _, _ = keys.shape # [32, 336, 8, 64]

queries = queries.transpose(2,1) # [32, 8, 336, 64]
keys = keys.transpose(2,1) # [32, 8, 336, 64]
values = values.transpose(2,1) # [32, 8, 336, 64]

U_part = self.factor * np.ceil(np.log(L_K)).astype('int').item() # c*ln(L_k)
# self.factor=5 and np.log(L_K)=5.82 -> 6
# so, U_part = 5 * 6 = 30

u = self.factor * np.ceil(np.log(L_Q)).astype('int').item() # c*ln(L_q)
# u = 30

U_part = U_part if U_part<L_K else L_K # 30
u = u if u<L_Q else L_Q # 30

scores_top, index = self._prob_QK(queries, keys, sample_k=U_part, n_top=u)
# 上面这个方法最重要!
# [32, 8, 30, 336] and [32, 8, 30] 这是8个heads,每个head下都是选择了前30的query tokens(各自选择的)
# 含义:(1) scores_top, i.e., Q_K是类似原始transformer中的Q*K^T
# (2) index, i.e., M_top则是说,是32个序列,每个序列下8个heads,
# 每个head下M得分靠前的top-30的query的indices(索引)

# add scale factor
scale = self.scale or 1./sqrt(D) # 1./sqrt(64) = 1./8 = 0.125
if scale is not None:
scores_top = scores_top * scale # Q*K^T/sqrt(D)

# get the context
context = self._get_initial_context(values, L_Q)
# [32, 8, 336, 64]

# update the context with selected top_k queries
context, attn = self._update_context(context, values, scores_top, index, L_Q, attn_mask)
# [32, 8, 336, 64], None (如果attn!=None,那么其shape为:[32, 8, 336, 336])

import ipdb; ipdb.set_trace()
return context.transpose(2,1).contiguous(), attn
# [32, 336, 8, 64]

_get_initial_context

  • V(B,H,L,E) 求平均变成 V(B,H,E),然后再复制成和原来大小相同的矩阵

_update_context

  • 更新 index 指定 30 个位置的值,其他值是 _get_initial_context 初始化的平均结果

_prob_QK

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def _prob_QK(self, Q, K, sample_k, n_top): # n_top: c*ln(L_q)
# Q [B, H, L, D]
B, H, L_K, E = K.shape # torch.Size([32, 8, 336, 64])
_, _, L_Q, _ = Q.shape # torch.Size([32, 8, 336, 64])

# calculate the sampled Q_K
K_expand = K.unsqueeze(-3).expand(B, H, L_Q, L_K, E)
# [32, 8, 336, 64] -> [32, 8, 1, 336, 64] -> [32, 8, 336, 336, 64]
# expand之后,K_expand[0][0][0][0] = K_expand[0][0][1][0] 都是64维度的向量了

index_sample = torch.randint(L_K, (L_Q, sample_k)) # real U = U_part(factor*ln(L_k))*L_q
# sample_k=30, 这相当于从336里面选择30个
# index_sample.shape = [336, 30],
# L_K是指定最大值(exclusive),最小值default=0(inclusive), 形状为(L_Q, sample_k)

K_sample = K_expand[:, :, torch.arange(L_Q).unsqueeze(1), index_sample, :]
# 起初的K_expand的shape为:[32, 8, 336, 336, 64]
# :, :, [336, 1], [336, 30], : [why???]
# K_sample.shape = [32, 8, 336, 30, 64]

Q_K_sample = torch.matmul(Q.unsqueeze(-2), K_sample.transpose(-2, -1)).squeeze(-2)
# [32, 8, 336, 1, 64] * [32, 8, 336, 64, 30] -> [32, 8, 336, 1, 30] -> [32, 8, 336, 30]

# find the Top_k query with sparisty measurement
M = Q_K_sample.max(-1)[0] - torch.div(Q_K_sample.sum(-1), L_K)
# 上面这个实现的就是论文中的那个非常nb的关于query的重要度的公式了,Equation (4)
# M.shape = [32, 8, 336]

M_top = M.topk(n_top, sorted=False)[1]
# [0]=values, [1]=indices
# M_top.shape = [32, 8, 30],相当于336个queries里面选择了30个top-k query tokens

# use the reduced Q to calculate Q_K
Q_reduce = Q[torch.arange(B)[:, None, None], # [32, 1, 1]
torch.arange(H)[None, :, None], # [1, 8, 1]
M_top, :] # factor*ln(L_q)
# 起初Q.shape = [32, 8, 336, 64], reduce之后,就是
# Q_reduce.shape = [32, 8, 30, 64]

Q_K = torch.matmul(Q_reduce, K.transpose(-2, -1)) # factor*ln(L_q)*L_k
# [32, 8, 30, 64] * [32, 8, 64, 336] -> [32, 8, 30, 336]
# 30个query tokens,和336个key tokens的dot product values

return Q_K, M_top
# [32, 8, 30, 336] and [32, 8, 30] 这是8个heads,每个head下都是选择了前30的query tokens(各自选择的)
# 含义:Q_K是类似原始transformer中的Q*K^T
# M_top则是说,是32个序列,每个序列下8个heads,每个head下M得分靠前的top-30的query的indices(索引)

Ref


Importance Sampling

[[Monte Carlo]],[[近似求定积分]]

  • f(x) 在 [a,b] 上的积分很难直接求,利用采样的方法进行计算。

  • abf(x)dx=baNi=1Nf(xi)\int_{a}^{b} f(x) d x=\frac{b-a}{N} \sum_{i=1}^{N} f\left(x_{i}\right)

假设需要估计期望 Exp[f(x)]E_{x \sim p}[f(x)]pp 表示采样变量 xx 的分布

  • Exp[f(x)]E_{x^{\sim} p}[f(x)] :-> p(x)f(x)dx1Ni=1Nf(xi)\int p(x) f(x) d x \approx \frac{1}{N} \sum_{i=1}^N f\left(x_i\right)

    • 如果分布 pp 很难积分 :-> 通过 pp 采样来进行期望的估计
    • 如果 pp 采样很麻烦 :-> 用更简单的已知分布 qq 来代为采样
  • qq 分布下计算期望公式 :-> Exp[f(x)]=Exq[p(x)q(x)f(x)]E_{x^{\sim} p}[f(x)]=E_{x^{\sim} q}[\frac{p(x)}{q(x)}f(x)]
    重要性采样对估计的 [[方差与均值]] 影响 :-> 均值一致,但方差并不能确定一致

  • 已知期望计算方差公式 :-> Var(x)=E(x2)[E(x)]2\operatorname{Var}(x)=E\left(x^2\right)-[E(x)]^2

    • 原分布p方差定义为 :-> Varxp[f(x)]=Exp[f(x)2](Exp[f(x)])2\operatorname{Var}_{x^{\sim}p}[f(x)]=E_{x^{\sim}p}\left[f(x)^{2}\right]-\left(E_{x^{\sim}p}[f(x)]\right)^{2}

    • 新分布q方差 :-> Varxq[f(x)p(x)q(x)]=Exq[(f(x)p(x)q(x))2](Exq[f(x)p(x)q(x)])2{\operatorname{Var}_{x \sim q}\left[f(x) \frac{p(x)}{q(x)}\right]=E_{x \sim q}\left[\left(f(x) \frac{p(x)}{q(x)}\right)^{2}\right]-\left(E_{x \sim q}\left[f(x) \frac{p(x)}{q(x)}\right]\right)^{2}}

      • 最终方差 :-> Varxq[p(x)q(x)f(x)]=Exp[p(x)q(x)f(x)2](Exp[f(x)])2\operatorname{Var}_{x^{\sim} q}\left[\frac{p(x)}{q(x)} f(x)\right]=E_{x^{\sim} p}\left[\frac{p(x)}{q(x)} f(x)^2\right]-\left(E_{x^{\sim} p}[f(x)]\right)^2
        • 如何推导出最终方差 #card
          • Exq[(p(x)q(x)f(x))2]=(p(x)q(x)f(x))2q(x)dx=p(x)q(x)f(x)2p(x)dx=Exp[p(x)q(x)f(x)2]E_{x^{\sim} q}\left[\left(\frac{p(x)}{q(x)} f(x)\right)^2\right]=\int\left(\frac{p(x)}{q(x)} f(x)\right)^2 q(x) d x=\int \frac{p(x)}{q(x)} f(x)^2 p(x) d x=E_{x^{\sim} p}\left[\frac{p(x)}{q(x)} f(x)^2\right]
          • (Exq[p(x)q(x)f(x)])2=(Exp[f(x)])2\left(E_{x^{\sim} q}\left[\frac{p(x)}{q(x)} f(x)\right]\right)^2=\left(E_{x^{\sim} p}[f(x)]\right)^2
  • 根据 原分布p方差定义为 :-> Varxp[f(x)]=Exp[f(x)2](Exp[f(x)])2\operatorname{Var}_{x^{\sim}p}[f(x)]=E_{x^{\sim}p}\left[f(x)^{2}\right]-\left(E_{x^{\sim}p}[f(x)]\right)^{2}
    和 ((66dc826d-6ba6-4a23-bf77-ce297d3e25d3))

    • 当分布 p、q 越接近, 其方差就越接近 ,而如果两者差距很大时, 则方差差别很大
    • [[Importance Weight]] :<-> p(x)q(x)\frac{p(x)}{q(x)}
    • 在采样次数较少时,基于重要性采样得到的样本并不能 很好反映变量的原始分布 ,从而产生较大误差。
      image.png

[[Ref]]

[[李宏毅@强化学习]]

[[PPO]] 中实现

  • 在每次策略更新之前,使用旧策略采集的一批轨迹数据。

  • 对于每个轨迹数据点,计算新策略在旧策略下的采样概率比率,即重要性采样比率。比率的计算可以根据具体的策略表示形式进行推导。

  • 根据重要性采样比率,对采样的数据点计算重要性采样权重,用于校正策略梯度的估计。权重的计算通常是将比率取倒数,并进行归一化处理。

  • 使用校正后的重要性采样权重来计算策略梯度,并进行策略更新。

[[PPO 基本训练流程]]


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 是多头独立参数

      • 每个头使用不同的值,仅凭注意力权重无法表明特定特征的重要性 Given that different values are used in each head, attention weights alone would not be indicative of a particular feature’s importance.
        ls-type:: annotation
        hl-page:: 9
        hl-color:: yellow
  • Attention score 使用方式 #card

    • 计算多头 attention score 加权后的 V(求平均), employ additive aggregation of all heads
      ls-type:: annotation
      hl-page:: 9
      hl-color:: yellow

    • 原始方法中是 concat

#card InterpretableMultiHead (Q,K,V)=H~WH(\boldsymbol{Q}, \boldsymbol{K}, \boldsymbol{V})=\tilde{\boldsymbol{H}} \boldsymbol{W}_H 公式

  • H~=A~(Q,K)VWV={1/Hh=1mHA(QWQ(h),KWK(h))}VWV=1/Hh=1mH Attention (QWQ(h),KWK(h),VWV)\begin{aligned} \tilde{\boldsymbol{H}} & =\tilde{A}(\boldsymbol{Q}, \boldsymbol{K}) \boldsymbol{V} \boldsymbol{W}_V \\ & =\left\{1 / H \sum_{h=1}^{m_H} A\left(\boldsymbol{Q} \boldsymbol{W}_Q^{(h)}, \boldsymbol{K} \boldsymbol{W}_K^{(h)}\right)\right\} \boldsymbol{V} \boldsymbol{W}_V \\ & =1 / H \sum_{h=1}^{m_H} \text { Attention }\left(\boldsymbol{Q} \boldsymbol{W}_Q^{(h)}, \boldsymbol{K} \boldsymbol{W}_K^{(h)}, \boldsymbol{V} \boldsymbol{W}_V\right)\end{aligned}

Initialization

影响模型的收敛速度和模型质量。

[[Batch Normalization]] 可以有效降低深度网络对 weight 初始化的依赖。非线性计算之前,输出值有较好的分布。BN 强行将输出值做一次高斯变换和线性变换。

常量初始化

高斯分布初始化

  • tf.truncated_normal 按两倍标准差截断

  • tf.random_normal

[[正交初始化]]

不同方法的均值和方差

  • [[He Initialization]] :<-> 0 均值,标准差为 sqrt(2 / fan_in)
  • [[Xavier Initialization]] :<-> 0 均值,标准差为 sqrt(2 / (fan_in + fan_out))
    card-last-score:: 5
    card-repeats:: 1
    card-next-schedule:: 2023-07-23T14:52:57.521Z
    card-last-interval:: 4

See Also

  • [[神经网络参数全部初始化为0]] 不可行

Ref


KL Divergence

作用:衡量 两个分布之间的距离
为什么不对称 :-> 计算两个分布之间的不同,从分布 A 的角度看分布 B 的相似程度
特点

  • 1.非负性::<-> KL(PQ)0\mathrm{KL}(\mathrm{P} \| \mathrm{Q}) \geq 0
  • 2.非对称性 :<-> KL(PQ)KL(QP)K L(P \| Q) \neq K L(Q \| P)
  • 3.当且仅当 P=QP=Q 时 :<-> KL(PQ)=0K L(P \| Q)=0
    一个分布相比于另外一个分布的信息损失。

DKL(AB)=iPA(xi)log(PA(xi)PB(xi))=iPA(xi)log(PA(xi))PA(xi)log(PB(xi))D_{K L}(A \| B)=\sum_{i} P_{A}\left(x_{i}\right) \log \left(\frac{P_{A}\left(x_{i}\right)}{P_{B}\left(x_{i}\right)}\right)=\sum_{i} P_{A}\left(x_{i}\right) \log \left(P_{A}\left(x_{i}\right)\right)-P_{A}\left(x_{i}\right) \log \left(P_{B}\left(x_{i}\right)\right)

A和B的交叉熵 = A与B的KL散度 - A的熵。

  • DKL(AB)=H(A,B)H(A){D_{K L}(A \| B)=H(A, B)-H(A)}
    机器学习模型学到的分布和真实数据的分布越接近越好,但是现实中只能让模型学到的分布和训练数据的分布尽量相同,即 KL 散度最小。

  • 熵 H(A) 是不依赖 B 的常数,固定 A,根据上面的公式最小化 KL 相当于最小化 H(A, B)。

  • 由于训练数据是固定的,H(A) 不变。

  • 如果 A 是固定的,关于 B 的优化 KL 散度等于优化交叉熵。

P 真实样本的分布,Q模型预测样本的分布,如果 Q 越接近 P,散度就越小。散度的值非负。

  • P 是未知分布,Q 是已知分布

  • D(pq)=xp(x)logp(x)q(x)=Ep(x)(logp(x)q(x))D(p \| q)=\sum_{x} p(x) \log \frac{p(x)}{q(x)}=E_{p(x)}\left(\log \frac{p(x)}{q(x)}\right)
    [[@百面机器学习]]

  • KL 距离不是真正的距离,不满足 三角形不等式交换律
    KL散度理解 - 知乎

  • 如何证明 KL 散度大于等于 0 #card

    • KL(PQ)=P(x)lnP(x)Q(x)dx=P(x)lnQ(x)P(x)dxP(x)(Q(x)P(x)1)dx=Q(x)P(x)dx=0\begin{aligned} \mathrm{KL}(P \| Q) & =\int P(x) \ln \frac{P(x)}{Q(x)} d x \\ & =-\int P(x) \ln \frac{Q(x)}{P(x)} d x \\ & \geq-\int P(x)\left(\frac{Q(x)}{P(x)}-1\right) d x \\ & =-\int Q(x)-P(x) d x \\ & =0\end{aligned}

    • 推导中第三行利用不等式 ln(x)x1ln(x) \le x-1

    • 最后一行 Q(x)Q(x)P(x)P(x) 都是概率密度函数,所以积分值都等于1

  • 最小化 Kullback-Leibler 散度等价于最大化似然函数


L1和L2正则的先验分布

[[MAP]] 公式 :-> logP(x,w)P(w)=logP(x,w)+logP(w){\log P(x,w)P(w) = \log P(x,w) + \log P(w)}

  • [[L2 Regularization]] 中参数先验分布 [[Normal Distribution]]
    + P(wj)P(w_j) :-> 1σ2πe(wj)22σ2\frac{1}{\sigma \sqrt{2 \pi}} e^{-\frac{(w_j)^{2}}{2 \sigma^{2}}}
    + logP(w)=logjP(wj)=logj[12πσe(wj)22σ2]\log P(w)=\log \prod_{j} P\left(w_{j}\right)= \log \prod_{j}\left[\frac{1}{\sqrt{2 \pi} \sigma} e^{-\frac{\left(w_{j}\right)^{2}}{2 \sigma^{2}}}\right] :<-> 12σ2jwj2+C-\frac{1}{2 \sigma^{2}} \sum_{j} w_{j}^{2}+C
  • [[L1 Regularization]] 中参数先验分布 [[Laplace Distribution]]
    + P(wj)P\left(w_{j}\right) :-> 12aewja\frac{1}{\sqrt{2 a}} e^{\frac{\left|w_{j}\right|}{a}}
    + logP(w)=logjP(wj)=logj[12aσewja]\log P(w)=\log \prod_{j} P\left(w_{j}\right)=\log \prod_{j}\left[\frac{1}{\sqrt{2 a} \sigma} e^{-\frac{w_{j}}{a}}\right] :<-> 12ajwj+C-\frac{1}{2 a} \sum_{j}\left|w_{j}\right|+C
    id:: 3c341e2e-412f-4ca1-a4cb-d8175fdb21ad

L1 和 L2 正则

梯度角度

  • L1 当w大于0时,更新的参数w变小;当w小于0时,更新的参数w变大

  • L2 正常的更新参数多了一项 $$\frac{w}{n}$$,当w趋向于0时,参数减小的非常缓慢,因此L2正则化使参数减小到很小的范围,但不为0。

解空间角度

image.png

  • 上图的图形给出一个直观的解释,但是需要思考细节

    • 黄色的范围是参数的空间,向 0 收缩。

    • 两个圆的交点,就是我们需要求的参数。

  • L1 正则中交点有更大概率在坐标轴上,大量参数是 0 :<-> 求解出现的参数比较稀疏。

  • [[为什么加入正则是定义一个解空间的约束?]]

    • [[KKT]]: mini=1N(yiwTxi)2\min \sum_{i=1}^N\left(y_i-w^T x_i\right)^2 加入正则等价于增加 :-> 一个不等式约束条件 s.t. w22m\|w\|_2^2 \leq m
      • 拉格朗日函数 :-> i=1N(yiwTxi)2+λ(w22m)\sum_{i=1}^{N}\left(y_{i}-w^{\mathrm{T}} x_{i}\right)^{2}+\lambda\left(\|w\|_{2}^{2}-m\right)
        • 最优解 ww^*λ\lambda^* 满足 :-> w(i=1N(yiwTxi)2+λ(w22m))=0\nabla_w\left(\sum_{i=1}^N\left(y_i-w^{* T} x_i\right)^2+\lambda^*\left(\left\|w^*\right\|_2^2-m\right)\right)=0
          • λ\lambda^* 限制条件 :-> λ0\lambda^* \geq 0
          • ww^* 对应 :-> L2正则项的优化问题的最优解条件
          • λ\lambda 对应 :-> L2正则项前面的正则参数
          • w 的 L2 范数 不能大于 m
      • L1 和 L2 的解空间区别体现在 对应 KKT 问题的不等式条件 不同
        贝叶斯先验 [[L1和L2正则的先验分布]]
  • 高斯分布 w 在极值点处平滑,w 在附近取不同值的可能性是接近的。L2 正则让 w 更接近于 0 但不会取 0。
    image.png

  • [[Laplace Distribution]] 0 点处是一个尖峰,参数 w 取值为 0 概率更大。

    • 可以用于稀疏权值矩阵,用于特征选择,实现参数稀疏化。

image.png
带不同正则化目标函数对比

image.png
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTcyNjc1MDU3MTA0NV8wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6Mjk3Ljg0NDAwNDYwMDM0NDEsInRvcCI6OTcuMjkyMzQxMjYyMTA2MjUsIndpZHRoIjo0Ny42OTE1NTY2OTYzMjc3MywiaGVpZ2h0Ijo1MC41OTYzNjk5MzMyNzM5OSwiYW5nbGUiOjAsImNJZCI6MX0seyJsZWZ0IjozNTQuODQ1NzU5MDY4Mjk2MiwidG9wIjoyNDMuNzk2NDM0NjExNzQyMTQsIndpZHRoIjo0OS42ODg2MDY4NzY1ODQwMDQsImhlaWdodCI6MzcuNTkyMDQyMjg0MTYzOTk1LCJhbmdsZSI6MCwiY0lkIjoxfV19fQ==


LC2363. 合并相似的物品

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
vector<vector<int>> mergeSimilarItems(vector<vector<int>>& items1, vector<vector<int>>& items2) {
map<int, int>a;
for(auto item:items1) {
a[item[0]] = item[1];
}
for(auto item:items2) {
if (a.find(item[0]) == a.end()) {
a[item[0]] = 0;
}
a[item[0]] += item[1];
}
vector<vector<int>> ans;
for(auto aa=a.begin();aa!=a.end();aa++) {
ans.push_back(vector{aa->first, aa->second});
}
return ans;
}
};

LSTM

结构

  • 遗忘门 forget gate :<-> Γft=σ(Wf[at1,xt]+bf)\Gamma_f^{\langle t\rangle}=\sigma\left(W_f\left[a^{\langle t-1\rangle}, x^{\langle t\rangle}\right]+b_f\right)

    • 取值范围在 0 到 1

    • 功能 :-> 控制上一个 cell 的状态 ct1c^{t-1},有多少信息进入当前状态 ctc^{t}

  • 更新门 update gate :<-> Γut=σ(Wu[at1,xt]+bu)\Gamma_u^{\langle t\rangle}=\sigma\left(W_u\left[a^{\langle t-1\rangle}, x^{\langle t\rangle}\right]+b_u\right)

    • 功能 :-> 控制输入 xx,有多少信息进入当前状态 ctc^{t}
  • c~(t)\tilde{c}^{(t)} :-> c~(t)=tanh(WC[at1,xt]+bC)\tilde{c}^{(t)}=\tanh \left(W_C\left[a^{\langle t-1\rangle}, x^{\langle t\rangle}\right]+b_C\right)

  • ct=Γftc(t1+Γutc~tc^{\langle t\rangle}=\Gamma_f^{\langle t\rangle} \circ c^{(t-1\rangle}+\Gamma_u^{\langle t\rangle} \circ \tilde{c}^{\langle t\rangle}

  • 输出门 output gate :<-> Γo(t)=σ(Wo[at1,xt]+bo)\Gamma_o^{(t)}=\sigma\left(W_o\left[a^{\langle t-1\rangle}, x^{\langle t\rangle}\right]+b_o\right)

    • 作用 :-> 控制当前状态 ctc^{t} 有多少信息进入 cell 的输出
  • 新的 ata^{\langle t\rangle} 计算方式:-> at=Γottanh(ct)a^{\langle t\rangle}=\Gamma_o^{\langle t\rangle} \circ \tanh \left(c^{\langle t \rangle}\right)
    image.png
    occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTcyMzk5MDQxOTk3NF8wLnBuZyI6eyJjb25maWciOnsiaGlkZUFsbFRlc3RPbmUiOnRydWV9LCJlbGVtZW50cyI6W3sibGVmdCI6MzQwLjM5MDM4Mjc3MTYxMjA1LCJ0b3AiOjUxMS4yNzA4NDgyMjA0NTgsIndpZHRoIjoxMjYuNjQzNDg4NDM3ODk3MDIsImhlaWdodCI6NjAuMDcwNzg4OTk5NzMzMzk1LCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjY5Mi40NDI4NTY5OTEyMDIsInRvcCI6NTE3LjU3MDYzMjMyMDcxMzgsIndpZHRoIjoxMjcuNDkxNDkxMTY5MTE0NDEsImhlaWdodCI6NDQuOTcyNzM1NDkzOTk5MzksImFuZ2xlIjowLCJjSWQiOjV9LHsibGVmdCI6NDc2LjQ4NTUyNjQ2MDQ5OTU2LCJ0b3AiOjUxNi42NjU2NTUyNzI5MSwid2lkdGgiOjEzNC40MzQ1MTUwMDAxMzgwNSwiaGVpZ2h0Ijo1MS43Nzk2NjAyMDAwNTE0NywiYW5nbGUiOjAsImNJZCI6Mn0seyJsZWZ0Ijo3OTUuODU2NzMwODU0NTY1NiwidG9wIjoxMzUuNjE0NDIxMjgxNjY2ODYsIndpZHRoIjoxNTUuNjQ4MDYwNDk5MTg2MzksImhlaWdodCI6NjkuMzMzNTA3MjI2MzI1MiwiYW5nbGUiOjAsImNJZCI6M30seyJsZWZ0Ijo1ODEuNzEzNzUzODYzODIxOSwidG9wIjo1MTQuMDExODM4MzkxMzAwOSwid2lkdGgiOjY2LjQ2ODU1MDMyMzY3OTc4LCJoZWlnaHQiOjQ5LjU5MTgzODA0NzYwMzIzLCJhbmdsZSI6MCwiY0lkIjo0fSx7ImxlZnQiOjMwNy4zNzU3NTA1OTQxOTE5LCJ0b3AiOjQzOS45ODU2NzIyMjU1NTMsIndpZHRoIjo4MC4xODAyNjA1ODQ2OTQ5NSwiaGVpZ2h0Ijo1NS4yMzA1MDc5ODE0MzQwNywiYW5nbGUiOjAsImNJZCI6Nn0seyJsZWZ0Ijo0NTguMTE3ODI1NzAyNjgwOTMsInRvcCI6NDUyLjQyNTUwMDc4ODk2NTgsIndpZHRoIjo1MS4xNzc5MjQ4MjcxOTY5OSwiaGVpZ2h0Ijo0Ny44NDAyNDc5OTExNjM4MzUsImFuZ2xlIjowLCJjSWQiOjd9LHsibGVmdCI6NTk1LjIzNDc3NTY4MTMwMzYsInRvcCI6NDQ0Ljg2NzUyNjAzMjg4MzgsIndpZHRoIjo1NC40MjU1MDU2NDk3ODg4NywiaGVpZ2h0Ijo0Ny45NjUyODU2NzE5OTQ3MSwiYW5nbGUiOjAsImNJZCI6OH0seyJsZWZ0Ijo2NjMuOTgyNTIzMzQzNzE2NSwidG9wIjo0NzEuNzA1MDM3MzM3MTMyODYsIndpZHRoIjo2Ni45MTk5OTk5MzU2ODU4NCwiaGVpZ2h0IjozNi43NjQ1MTMyNTIyNzM3OSwiYW5nbGUiOjAsImNJZCI6OX0seyJsZWZ0IjoxNDM0LjY2MTY5OTgzOTU4MDcsInRvcCI6NDMxLjg4MjY3Mjk4MDY2MTgsIndpZHRoIjo1MTAuNDI5MTc2MTI1ODU3MSwiaGVpZ2h0Ijo1ODEuMTI3NTA4NzM2NTQyOCwiYW5nbGUiOjAsImNJZCI6M31dfX0=
    使用饱和的非线性函数

  • 为什么 :-> 在输入达到一定值后,输出就不会发生明显变化

  • [[sigmoid]] 阈值 0-1 :-> 模拟开关的关闭程度,用于各种门

    • 现代神经网络中门控的选择
  • [[Tanh]] 阈值 -1 到 1,梯度的阈值为 0~1 :-> 生成记忆

    • 0 中心

    • 输入在 0 附近相比 Sigmoid 函数有更大的梯度

  • 为什么不使用 relu :-> 只能输出大于 0 的部分,前向传播容易发生信息爆炸性增长。

Ref


LLM

[[QWen]]

[[LLaMA]]

[[GLM]]

[[Kimi]]

[[deepseek]]

[[MiniMax]]

[[Mistral]]


Laplacian matrix

图的矩阵表示

L=DAL=D-A

  • L 是 Laplacian 矩阵

  • D 是顶点的度矩阵,对角线上的元素依次是各个顶点的度

  • A 是图的邻接矩阵

常用拉普拉斯矩阵

  • Combinatorial Laplacian

    • L=DAL=D-A

    • 方阵,主对角线出度,-1 代表两点一阶连通

    • D1D^{-1} 顶点是度的倒数

    • D1AD^{-1} A 归一化,最后每行和为 1

    • D~12A~D~12\tilde{D} ^ {-\frac{1}{2}} \tilde{A} \tilde{D} ^ {-\frac{1}{2}} 利用对称矩阵的形式归一化 renormalization

  • 对称归一化的拉普拉斯矩阵(Symmetric normalized Laplacian)

    • Lsys=D1/2LD1/2L^{s y s}=D^{-1 / 2} L D^{-1 / 2}
  • 随机游走归一化拉普拉斯矩阵(Random walk normalized Laplacian)

    • Lrw=D1LL^{r w}=D^{-1} L

无向图的拉普拉斯矩阵性质

  • [[半正定]]

  • 只在中心顶点与一阶相连的顶点上有非0元素

  • 对称,可以进行特征分解 L=UΛU1L=U \Lambda U^{-1}

    • Λ\Lambda 是 n 个特征值构成的对角阵

    • [[特征值]]

    • 可以写成 L=UΛUTL=U \Lambda U^{T}


LazyAdam

NLP 之类的任务,每个 batch 采样到的词有限,每次更新对 embedding 的梯度估计是稀疏的,对 momentum-based 的 Optimizer,现在所有框架实现都会用当前的 momentum 去更新所有的词,即时这些词在连续的几十步更新都没有被采样到,这可能会使 embedding 过拟合。

LazyAdam 仅更新当前 batch 中出现的稀疏变量索引的移动平均累加器,而不是更新所有索引的累加器。

Ref


Learning Rate Decay

训练集的损失下降到一定程度后不在下降,training loss 一直在一个范围内震荡,遇到这种情况可以适当降低学习率。

常用方法

  • 线性衰减,每过 5 个 epochs 学习率减半

  • [[指数衰减]]

    • decayed_learning_rate=learning_rate*decay_rate^(global_step/decay_steps)

[[Adam]] 自适应的优化方法还需要学习率衰减吗?


Learning to Rank

[[Point Wise]]

  • 全局相关性

  • 没有对先后顺序的优劣做惩罚

  • 将 Ranking 算法转化成回归、分类或序列回归

[[Pair Wise]] 二分类

  • 多个 pair 排序问题,比较不同文章的先后顺序

  • 目标

    • 减少误分类 doc pair 的比例
  • 问题

    • 考虑出现的相对位置,但是没有考虑文档在搜索列表中的位置。

      • 排在搜索结果前面的文章更为重要,如果排在靠前的文章出现判断错误,代价明显高于排在后面的文档
    • 不同查询相关文档数量差异大

  • 方法

    • RankNet

    • [[GBRank]]

      • L(f;xu,xv,yu,v)=12(max{0,yu,v(f(xv)f(xu))})2L\left(f ; x_{u}, x_{v}, y_{u, v}\right)=\frac{1}{2}\left(\max \left\{0, y_{u, v}\left(f\left(x_{v}\right)-f\left(x_{u}\right)\right)\right\}\right)^{2}

        • 关注逆序部分

        • 逆序 loss 为正,正序 loss 为零

[[List Wise]]

  • 考虑整体序列,针对 Ranking 评价指标进行优化

  • 方法

    • AdaRank

    • SoftRank

    • [[LambdaMART]]

    • LambdaRank

      • 蓝色表示相关文档,右侧的图片中,虽然指标下降,但是从直觉上来说并不好。

指标

  • MAP(Mean Average Precision)

    • AP=j=1niP(j)yi,jj=1niyi,jA P=\frac{\sum_{j=1}^{n_{i}} P(j) \cdot y_{i, j}}{\sum_{j=1}^{n_{i}} y_{i, j}}

    • P(j)=k:πi(k)yi,kπi(j)P(j)=\frac{\sum_{k: \pi_{i}(k)} \leqslant y_{i, k}}{\pi_{i}(j)}

    • MAP=q=1QAveP(q)QMAP=\frac{\sum_{q=1}^{Q} \operatorname{AveP}(q)}{Q}

      • 所有 query 的 ap 值取平均
    • 例子

      • 假设query_1有4个相关的document,分别被模型排在1,2,5,7位,那么query_1的AP就是(1/1+2/2+3/5+4/7) / 4;

query_2有5个相关的document,分别被模型排在2,3,6,29,58位那么query_2的MAP就是(1/2+2/3+3/6+4/29+5/58) / 5,但通常情况下,我们的 %5B公式%5D 不会取到58,只会关注排名靠前的document,因此排在29与58的document可以视为没有被模型检索出来,假设取m %5B公式%5D ,则query_2的AP是(1/2+2/3+0+0+3/6+0+0)/5。

  + 对以上两个query取平均即可得出MAP。
  • [[NDCG]]

Ref

  • Learning to Rank for Information Retrieval

  • FM模型在LTR类问题中的应用 [[杨镒铭]]

    • L=log(y~ij)=log(1+exp((y~(xi)y~(xj)))L=-\log \left(\tilde{y}_{i j}\right)=\log \left(1+\exp \left(-\left(\tilde{y}\left(x_{i}\right)-\tilde{y}\left(x_{j}\right)\right)\right)\right.


Large language model

[[Word Embedding]]

[[位置编码]]

[[Transformer]]

模型

  • [[GPT]]

  • [[LLaMA]]

  • [[QWen]]

  • [[GLM]]

  • [[Kimi]]

  • [[deepseek]]

  • [[MiniMax]]

  • [[Mistral]]

强化学习

  • [[LLM 中强化学习讨论]]

其他

  • [[NLP 数据增强方法]]


LeetCode

注意事项

  • 统计单词数直接 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];});

    • lambda 里面的参数需要是引用,如果是拷贝构造,在 n=1e5 时会超时。
  • 枚举子集 | CP Wiki n 个元素的子集枚举 $$O(3^n)$$ 复杂度

    • 枚举 i 的子集
      • (j - 1) 将 j 最右边的 1 变成 0,得到小于 j 最大的一个二进制数
      • (j - 1) & i 保证一定是 i 的子集
1
2
3
4
5
for (int i = 1; i < (1 << n); ++i) {
for (int j = i; j; j = (j - 1) & i) {
// ...
}
}
  • 0x3f3f3f3f 的十进制是1061109567,是10^9级别的,自身相加不会超过 int 范围,可以 memset 初始化

  • [[vector]] 取指定位置的迭代器

1
2
3
4
vector<int>::iterator it;
it = a.begin()+4;
it = advance(a.begin(), 4);
it = next(a.begin(), 4);
  • 位运算的优先级

    • a+b^c
      • 先算 a+b
  • ?=: 运算符优先级

    • (a[i]^b[k]) + i==0?0:dp[i-1][j]
      • 加法优先级大于 ?=:
  • __builtin_popcount

    • 统计一个 int 中 1 的个数
  • 二进制表示中最低位

    • n & (n - 1)

      • 该位运算技巧可以直接将 n 二进制表示的最低位 1 移除
    • n & (-n)

      • 该位运算技巧可以直接获取 n 二进制表示的最低位的 1
  • set、tuple、map 一起使用

1
2
3
4
5
6
7
8
9
10
11
set<tuple<int, int, int>>use;

// 插入元素
use.emplace({1, 2, 3});

// 删除第一个元素
use.erase(use.begin());

//访问
auto p = *use.begin();
int x = std::get<0>(p);

复盘

补题


Lesson 7B - The Curate Session - Source Curation

链接:7B The Curate Session Source Curation (youtube.com)

想法

  • 快速判断需不需要读一份资料,和你当前研究的主题有没有关系?

Goals #card

  • 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.

      • 你在 Zotero 中有数百个来源,却不知道如何全部处理。
  • Solution: When in doubt… curate.

Source Curation

  • And Page Title on DNP, 开始一个番茄钟完成整理。

  • 导入 Book

    • 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

  • Structural Notes

    • 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

In Summary

  • The Source Curation process serves a few purposes #card
    • 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.

        • 如果你确实阅读了来源,获取的信息将成为收集过程的坚实起点。

Lesson 8C - The Building BLOCKS (Pt 3)

Block to Page Connections

  • On Page 页面上三种链接方式

    • A Block is referenced and becomes part of a paragraph in an Output Page 一个区块被引用并成为输出页面中段落的一部分 #card

      • Example: This Block only appears ON the page in a Summary/Detail or Output Page. This is an example of a block like this. Because it is an example, it serves an important purpose to this page.
    • A journal response Block on your DNP #card
      image.png

    • A Block is a note from a specific source and it lives on your Source Page #card
      image.png

    • 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%处。这是一个角色思考和制定解决方案的时刻。

image.png

+ 

Block to Block Connections #card

  • Nesting (Very Important)

    • Relationships

    • Thought Process

  • Tagging (Important)

  • Serendipity (Less Important, but extremely powerful)


Life Long Learning/tree

[[XGBoost]] 支持两种方式

  • 把原来的模型作为新的训练的初始模型

    • 无法解决在新数据上训练后对老数据的遗忘问题

    • tests/python/test_training_continuation.py

  • process_type: update

    • refresh

    • prune

  • 当前迭代树的基础上增加新树,原树不变

  • 当前迭代树结构不变,重新计算叶节点权重,同时也可增加新树

[[LightGBM]]

  • train 中设置参数 keep_training_booster=rueinit_model 为上一轮的结果

Ref


Life Log

美国著名管理学家 [[Jim Collins]] 分享记笔记的方法

通过三列表格记录自己的每一天

  • 第 1 列包含一天的描述

    • 早起,2小时的创意工作,与妻子共进早餐,

    • 5小时的创意工作,锻炼,午睡,

    • 3小时的创意工作,与妻子共进晚餐,上床睡觉

  • 第 2 列那一天创造性工作的小时数

    • 过去 30 年里,每年工作超过 1000 小时

    • 每三个月,吉姆会计算他的速度,并确保在接下来的九个月里,他平均每年能达到1000个有创造力的小时。

  • 第 3 列列出一个数字记录当天的情绪

    • [-2, +2] 追踪当天整体情绪状态
  • 如何处理这些数据?

    • 他可能会检查过去5年中所有的 + 2天,看看他平均每天有多少创造性的工作时间

      • 情绪很好的日子,往往创造性时间也比较长;

      • 情绪很好的日子都“非常简单”,比如去攀岩,和真正爱的人在一起,或者完全独处。

    • 或者他会周期性地读一遍他对自己每天所做事情的描述

    • 然后,他会简单地尝试将更多关于 + 2 天的东西融入到他的生活中

  • Bug Log

    • 用第三人称的方式,你写下你在生活中遇到的情况中喜欢/不喜欢的东西,时刻牢记找到自己的 hedgehog

    • 你冷静客观地在书中做笔记,“观察那个叫[你的名字]的 bug ”

    • 举个例子,你可以这样写: The bug Jim 讨厌在会议上花时间

  • 如何实践?

    • 每天日历增加 Log 板块,按时间记录在做什么

    • 增加状态标签

[[少楠通过 flomo 写 life log]]


LightGBM

创新点

  • GOSS :-> [[Gradient-based One-Side Sampling]] 单边梯度抽样算法

  • 分裂方法 :-> [[Histogram-based Algorithm]]

  • EFB :-> [[Exclusive Feature Bundling]]
    带深度限制的 [[Leaf-wise 叶子生长策略]]

  • level-wise 生长策略不加区分对待同一层的叶子,很多叶子分裂增益较低,没有必要进行搜索和分裂。容易进行多线程优化。

  • [[Level-wise 叶子生长策略]]不加区分对待同一层的叶子,很多叶子分裂增益较低,没有必要进行搜索和分裂。容易进行多线程优化。

  • 每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环

    • 分裂次数相同的情况下,leaf-wise 可以降低更多误差,得到更好的精度。

    • 通过树最大生长深度,避免过度拟合

类别特征最优分割

  • 时间复杂度 :-> O(klog(k))O(k\log(k))

  • 每一次切分尽可能分成两个数量接近的集合

  • 具体实现

    • [[目标编码]] 枚举分割点前,直方图按每个类别的label均值进行排序,然后按均值的结果依次枚举最优分割点
      • 需要大量的约束和正则化解决过拟合问题

并行

  • 特征并行 :-> 每台机器保存所有训练数据,找到最佳划分方案后,本地执行重分区。避免[[XGBoost]]中不同机器同步划分方案。

  • 数据并行 :-> Reduce scatter 把直方图合并的任务分摊到不同机器,利用 直方图做差加速

  • 投票并行

    • Parallel Voting Decision Tree, PV-tree

缓存优化

  • xgb pre-sorted算法导致 Cache-miss 问题

[[Ref]]


Life Long Learning

为什么需要持续学习?

  • [[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

  • Ri,jR_{i,j}: 训练 task i 后 task j 的效果

    • i > j j 是否被遗忘?

    • i < j 任务 i 能否被迁移到任务 j

  • 指标

    • Accuracy =1Ti=1TRT,i=\frac{1}{T} \sum_{i=1}^{T} R_{T, i}

    • Backward Transfer =1T1i=1T1RT,iRi,i=\frac{1}{T-1} \sum_{i=1}^{T-1} R_{T, i}-R_{i, i}

      • 评估遗忘程度(下降程度)

      • 一般结果小于 0

    • Forward Transfer =1T1i=2TRi1,iR0,i=\frac{1}{T-1} \sum_{i=2}^{T} R_{i-1, i}-R_{0, i}

为什么会发生 [[Catastrophic Forgetting]] #card

  • 不同任务损失最小的参数空间可能不同

解决方法

  • Selective Synaptic Plasticity

    • Regularization-based Approach

    • 思路:保留模型先前学习到的重要参数,只改变不重要的参数学习新任务。

    • L(θ)=L(θ)+λibi(θiθib)2L^{\prime}(\boldsymbol{\theta})=L(\boldsymbol{\theta})+\lambda \sum_{i} b_{i}\left(\theta_{i}-\theta_{i}^{b}\right)^{2}

      • θib\theta ^b_i 之前学习到的参数

      • bib_i 评估 θib\theta ^b_i 对前面模型的重要性

        • bi=0b_i = 0 会出现 [[Catastrophic Forgetting]]

        • bi 过大会出现新任务学习不好 intransigence

        • bi 由人为设定,如果由模型学习,bi=0 后一项损失最小。

        • 如何选择?

          • 训练完模型后,如果改变某个参数对模型影响大,设置 bi 很小。反之,设置 bi 很大
      • 例子

        • SGD 代表之前的方法,学习 B 和 C 后,A 的效果明显下降。

        • L2 代表 bi=1b_i = 1,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的数据量)
  • Additional Neural Resource Allocation

    • 增加额外神经元资源分配

    • progressive neural networks

  + 不动已经训练好的模型参数,将它做为下一个模型某些层的输入,再增加模型学习新任务的参数。

+ PackNet

  + 不增加神经元数量,每个任务只使用部分模型参数

+ Compacting, Picking, and Growing (CPG)

  + 上面两种方法结合
  • Memory Reply

    • Generating Data

      • 生成器生成之前任务的 pseudo-data 加到新任务数据中,然后一起训练。

[[Life Long Learning/tree]]

Ref


LightGBM/Code

源码

  • [[LightGBM/training]]

    • 加强拟合

      • 增大 max bin

      • 小 learning rate 和大 num iterations

      • 大 num leaves

      • 大训练集

      • dart

    • 减少拟合

      • 小 max bin

      • 小 num leaves

  • 损失函数

    • MAPE

      • hessians 设置为 1
    • MAE

      • hessians 设置为 1
    • WeightedPercentileFun


LightGBM/Question

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 的分裂策略区别?

  • XGBoost :-> level-wise 分裂策略
    • 缺点 :-> 对每一层所有节点做无差别分裂,可能有些节点增益非常小,对结果影响不大,但是 xgb 也进行分裂,带来无必要的开销。
  • LightGBM :-> leaf-wise 分裂策略
    • 缺点? :-> 在当前所有叶子节点选择分裂收益最大的节点进行分裂,一直递归,容易过拟合。
      类别特征最优分割
      的原理是什么? #card
  • 每一次切分尽可能分成两个数量接近的集合

类别特征最优分割
如何实现? #card

  • [[目标编码]] 枚举分割点前,直方图按每个类别的label均值进行排序,然后按均值的结果依次枚举最优分割点

histogram 算法相对于 exact 算法有什么内存优势?

  • 排序后对梯度是顺序访问,可以进行 cache 优化

  • 直方图算法的内存消耗 :-> ( #data* #features * 1Bytes )

    • 不需要额外存储排序的结果,可以只保存特征离散化后的值。一般用 8 位整型存储。
  • xgboost 的 exact 算法内存消耗为 :-> (2 * #data * #features* 4Bytes)

    • 既要保存原始feature的值,也要保存这个值的顺序索引,这些值需要32位的浮点数来保存。

[[Histogram-based Algorithm]] 在 选择好分裂特征后,计算分裂收益时 相比于 exact 算法有计算优势

  • 预排序算法需要 遍历所有样本的特征值 ,时间为 #data

  • [[Histogram-based Algorithm]] 需要 遍历分桶桶 ,时间为 #bin
    lgb 相对于 xgb 有什么改进 #card

  • 内存需求小,xgb pre-sorted 决策树,lgb 基于 histogram 的决策树算法

  • 计算速度快,决策树算法主要包括寻找分割点与数据分割两步。pre-sorted 算法和 histogram 算法在寻找分割点上的时间复杂度是一致的。histogram 所有特征共享一张索引,pre-sorted 一个特征对应一张索引。histogram 随机访问性能好。

  • 通信代价小,适用于分布式计算


Logistic Regression

逻辑回归,能融合多种特征。

y=f(Wx+b),y{0,1},fy=f(W^x+b), y \in \{0, 1\}, f 是 link function
线性分类

  • 硬分类 :<-> 直接输出输出对应的分类 y{0,1}y \in \{0, 1\}

    • 线性判别分析[[Fisher]]

    • [[感知机]]

  • 软分类 :<-> 产生不同类别的概率 y[0,1]y \in [0, 1]

    • 概率生成式(连续),类别先验 [[Gaussian Discriminant Analysis]] GDA [[Naive Bayes Classifier]]

      • P(y=0x),P(y=1x)P(y=0|x), P(y=1|x) 的大小关系
    • 概率判别式(离散) Logisitic Regression

      • 直接对 $$P(Y|X)$$ 建模

逻辑回归

  • 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]] f(z)=11+exp(z)(0,1.0)f(z)=\frac{1}{1+exp(-z)} \in (0, 1.0)

      • 阶跃函数不连续,sigmoid函数光滑,处处可导

      • 数据取值范围从正无穷压缩到 0-1

    • 两类联合概率比值的对数

    • odds 几率代表事件发生和不发生的比值 $$\frac{p}{1-p}$$

    • 对数几率的线性回归

  • P(y=0x)=11+exp(wTx)P(y=0|x)=\frac{1}{1+\exp(-w^Tx)}

  • P(y=1x)=exp(wTx)1+exp(wTx)P(y=1|x)=\frac{\exp(-w^Tx)}{1+\exp(-w^Tx)}

  • 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))$$

    • 等价于 Cross Entropy
  • 多分类

    • softmax regression

    • 参数冗余

  • 多标签:每个标签设计一个分类器

在推荐系统中,LR 当成是一个分类问题处理,通过预测正样本的概率对物品进行排序。将推荐问题转化为预估问题。另外也能使用 [[Pair Wise]]

优点

  • 数学含义:用户是否点击广告是一个经典的掷偏心硬币问题,显然符合伯努利分布

  • 可解释性强

  • 工程化较为简单

[[面试]]

  • LR归一化问题

    • 什么情况可以不归一化 :-> 最小二乘法
    • 什么情况必须归一化 :-> 梯度下降算法
    • [[Wide&Deep]]
  • 提到LR损失函数要能知道交叉熵,为什么是它,以它为损失函数在优化的是一个什么东西,知道它和KL散度以及相对熵的关系

  • 提到LR的求解方法,比如SGD,知道SGD和BGD的区别,知道不同的GD方法有什么区别和联系,二阶优化算法知道什么,对比offline learning和online learning的区别

  • 提到调参,知道模型不同超参数的含义,以及给定一个特定情况,大概要调整哪些参数,怎么调整

  • 提到LR的正则,知道l1l2的原理,几何解释和概率解释

  • LR的分布式实现逻辑是怎么样的,数据并行和模型并行的区别,P-S架构大概是怎么一回事

  • LR作为一个线性模型,如何拟合非线性情况?

    • 特征侧比如离散化,交叉组合,模型比如引入kernel,又可以推广到FM等model上
  • LR 如何解决低维不可分

    • 通过核函数将特征从低维空间转换到高维空间,高维空间中线性可分的几率会变高

Log-Normal Distribution

一个随机变量的对数服从 [[正态分布]],则该随机变量服从对数正态分布。

  • 对于一条路线的 ETA 来说,有一个无人可及的最小时间,然后是少数一些非常快的司机,接下来是普通司机最具代表性的完成时间形成一个高峰,最后是尾部一长串的“掉队者”。

ln(Y)N(μ,σ2)\ln (Y) \sim N\left(\mu, \sigma^2\right)

[[概率密度函数]]

  • flgN(x;μ,σ)=1xσ2πe(lnxμ)22σ2f_{\lg -N}(x ; \mu, \sigma)=\frac{1}{x \sigma \sqrt{2 \pi}} e^{-\frac{(\ln x-\mu)^2}{2 \sigma^2}}

期望

  • E(x)=eμ+σ22E(x)=e^{\mu+\frac{\sigma^2}{2}}

方差

  • D(X)=(eσ21)e2μ+σ2D(X)=\left(e^{\sigma^2}-1\right) e^{2 \mu+\sigma^2}

Loss Function

MSE/MAE/ [[Huber Loss]]

  • 假设误差服从某种特定分布,然后通过 MLE 推导最终 loss 形式。

  • MSE 反向传播梯度 (y(i)θTx(i))x(i)-\left(y^{(i)}-\theta^T x^{(i)}\right) x^{(i)}

    • MSE 梯度容易受到异常值影响。异常样本 label 非常大时,y(i)θTx(i)y^{(i)}-\theta^T x^{(i)} 的值也会非常大,将模型带偏。

      • 反过来离群点会影响业务时,应该使用 MSE。
  • MAE 反向传播梯度 y(i)θTx(i)y(i)θTx(i)x(i)-\frac{y^{(i)}-\theta^T x^{(i)}}{\left|y^{(i)}-\theta^T x^{(i)}\right|} x^{(i)}

    • 使用 MAE 损失时,梯度始终相同。在接近最小值的时候减少学习率。
  • MSE 和 MAE (L2 损失和 L1 损失)

      1. 平方差更容易求解,绝对误差对离群点更加鲁棒。
      1. pb 如果只预测一个值,最小化 MSE 倾向于均值,最小化 MAE 倾向于中位数。对于异常点,中位数比平均值更鲁棒。(简单可以证明)

[[ZILN]] [[Log-Normal Distribution]]

  • LTV 分布,首次购买后产生的价值,0 代表只购买一次

  • LZILN(x;p,μ,σ)=1x=0log(1p)1x>0(logpLLognormal (x;μ,σ))L_{Z I L N}(x ; p, \mu, \sigma)=-\mathbf{1}_{x=0} \log (1-p)-\mathbf{1}_{x>0}\left(\log p-L_{\text {Lognormal }}(x ; \mu, \sigma)\right)

    • x 是 label

    • p 预估购买概率

    • 预估金额 LLognormal (x;μ,σ)=log(xσ2π)+(logxμ)22σ2L_{\text {Lognormal }}(x ; \mu, \sigma)=\log (x \sigma \sqrt{2 \pi})+\frac{(\log x-\mu)^2}{2 \sigma^2}

    • 网络结构

[[Weighted Logistics Regression]] 预估用户观看时长

  • 出处 [[@Deep Neural Networks for YouTube Recommendations]]

  • [[Cross Entropy Loss]] 正样本以时长为权重,负样本权重为 1。模型能学习到观看视频的时间
    ,reweight 后,改变正负样本的比例。

    • cross entropy 最终预估的概率是正样本的比例。
  • label 为 T 的样本,相当于在分类任务重变为 T 个正样本。正样本总体比例变成 i=1kTiN+i=1kTik\frac{\sum_{i=1}^k T_i}{N+\sum_{i=1}^k T_i-k}

    • N 总样本,k 正样本,Ti 每个样本时长
  • LR 可以写成

    • 11+elogit =i=1kTiN+i=1kTik=PN+P\frac{1}{1+e^{- \text {logit }}}=\frac{\sum_{i=1}^k T_i}{N+\sum_{i=1}^k T_i-k}=\frac{P}{N+P}

    • PN=elogit \frac{P}{N}=e^{\text {logit }}

    • 上面推导如果不忽略 k

      • label为 T 的样本,把它当做 T 个正样本和一个负样本,为每个正样本多增加一个负样本。

      • 11+elogit=i=1kTiN+i=1kTik+k\frac{1}{1+e^{-\operatorname{logit}}}=\frac{\sum_{i=1}^k T_i}{N+\sum_{i=1}^k T_i-k+k}

  • reweight 之后相当于假设 label 服从参数为 p 的几何分布(失败概率),label T就是几何分布的 pdf 取 log 后提到前面的值,表示连续失败 T 次。

[[Bucketing with Softmax]] 对 label 的值域进行分桶,根据每个样本的 label 把样本分到某个桶里。回归任务转成多分类问题,使用 softmax 损失函数训练。

  • 线上预测时,用 softmax 预估的概率分布对每个桶做加权求和。

    • pred =i=1npivi=\sum_{i=1}^n p_i v_i
  • 如何确定分桶数量和每个桶大小?

    • 目标让每个分桶的样本均衡
  • 优化

    • 每个桶再套上 mse 等损失转化成分区间的 multi-task 建模
  • 分桶之后会丢失 laebl 之间的大小关系(label=50 分到 [0,10] 或 [51,100] 的损失没有区分性)。引入[[Label Smooth]]

    • 对 label 做变换时,不用 one-hot 而是转化成高斯分布等形式

[[ETA]]

  • 均值和中位数哪个大?均值大?

  • 对于 badcase 来说,哪个模型效果更好?

  • MSE 对异常值更加

  • MAPE 没有上界,对异常值敏感,训练出来的模型倾向于低估。(高估带来较大的惩罚)

  • SMAPE 有界(0-200),高估和低估的上界都是 200 。

Ref


Mac/重置隐私设置

问题

  • 钉钉提示没有麦克风权限,然后在系统设置页面相关选项下没有钉钉可以添加。

  • 重置相关设置,重启钉钉,发起会议,触发请求权限的弹窗。

重制 mac 上麦克风、摄像头、屏幕录制的权限

1
2
3
sudo tccutil reset Microphone
sudo tccutil reset Camera
sudo tccutil reset ScreenCapture

Manacher Algorithm

将在原串中加入特殊字符,比如#组成一个新的字符串,这样可以把所有奇数或偶数的字符串都变成奇数长度的字符串. 例如abba可以转化成$#a#b#b#a

用一个辅助数组P[i],代表以S[i]为中心的最长回文串向左或向右扩展的长度.最后max(P[i]-1)为最长回文串的长度

  • 当 mx - i > P[j] 的时候,以S[j]为中心的回文子串包含在以S[id]为中心的回文子串中,由于 i 和 j 对称,以S[i]为中心的回文子串必然包含在以S[id]为中心的回文子串中,所以必有 P[i] = P[j],见下图。


当 P[j] > mx - i 的时候,以S[j]为中心的回文子串不完全包含于以S[id]为中心的回文子串中,但是基于对称性可知,下图中两个绿框所包围的部分是相同的,也就是说以S[i]为中心的回文子串,其向右至少会扩张到mx的位置,也就是说 P[i] >= mx - i。至于mx之后的部分是否对称,就只能一个一个匹配了。

  • 对于 mx <= i 的情况,无法对 P[i]做更多的假设,只能P[i] = 1,然后再去匹配了

Master How To Learn

链接: 新 All Posts - Master How To Learn旧 Posts – Master How To Learn

[[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

      • Anki parameters and settings: Steps, Graduating Interval, Easy Interval, Starting Ease, Easy bonus, Interval Modifier, Steps and New Interval for lapses.

Meta-Learner

T/S/X-Learner [[@Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning]]

  • 适用情形:#card

    • 随机干预实验的数据,对于非随机的观测数据,可以结合下文的表示学习,实际上很多表示学习的模型框架就是以 T-Learner 为基础。T/S/X-Learner 本质上也是利用相似单元的事实结果进行反事实估计,只不过是把相似单元的事实结果编码进模型参数里了。
  • [[S-Learner]]

  • [[T-Learner]]

  • [[S-Learner vs T-Learner]]

  • [[X-Learner]]

[[R-Learner]]


Mathematics

[[博弈论]]

  • [[纳什均衡]]

[[微积分]]

  • 极限

  • 导数

  • [[泰勒公式]] 用 多项式来近似 表示 函数在某点周围的情况

  • [[偏导数]]

  • 偏导数

  • 梯度

  • 链式法则

  • [[Jacobian 矩阵]] 以及 [[Hessian 矩阵]]

  • 向量与矩阵求导

[[线性代数]]

  • [[特征值]]与特征向量

  • 奇异值分解 [[SVD]]

  • [[迹]]

[[统计学]]

[[概率论]]

优化

  • [[对偶问题]]

See Also

  • [[Mathematics/Ref]]

MoCo

Summary

  • 填补 CV 领域有监督学习和无监督学习的差距

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

        • Auto-encoder
      • 判别式网络

        • eight position

          • 图片 9 等分,判断选出的图片位于中间图片的什么方向。
      • 对比学习损失:目标不固定,训练过程中不断改变

      • 对抗学习损失:衡量两个概率分布之间的差异

Method

  • 代理任务 instance discrimination 个体判别

+ 一张图片 $$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 的限制

      • 用队列大小限制字典大小

    • 基于动量的编码器

      • θkmθk+(1m)θq\theta_{\mathrm{k}} \leftarrow m \theta_{\mathrm{k}}+(1-m) \theta_{\mathrm{q}}

      • momentum encoder 由当前的编码器初始化得到

      • 动量 m=0.999 比较大是,动量编码器更新缓慢。尽可能保证队列的 key 由相似的编码器生成

  • 和之前方法对比

    • end-to-end 牺牲大

      • 负样本大小等于 batch size 大小
    • memory-bank 牺牲一致性

      • 采样得到负样本
    • moco

      • encoder 基于梯度更新

      • momentum encoder 基于 encoder 进行动量更新

  • 目标函数 [[InfoNCE]]

    • Lq=logexp(qk+/τ)i=0Kexp(qki/τ)\mathcal{L}_{q}=-\log \frac{\exp \left(q \cdot k_{+} / \tau\right)}{\sum_{i=0}^{K} \exp \left(q \cdot k_{i} / \tau\right)}

    • 计算 q 和 k 的点积判断两个样本之间的相似度

    • \tau$$ 控制分布图形,越大越关注困难样本

Experiments

  • 7 个检测 + 分割任务

  • linear protocol

    • 预训练模型,应用时只改变最后的全连接层。

    • backbone 做为特征提取器

    • 对比预训练的效果好不好

Conclusion

  • 1000 倍数据增加,moco 性能提升不高

  • 尝试NLP中其他代理任务 masked auto-encoding

    • [[Masked-Language Modeling]]

    • 见 [[Masked Autoencoders Are Scalable Vision Learners]]

  • 总结

    • 去构造一个大的字典,从而让正负样本能够更有效地去对比,提供一个稳定的自监督信号,最后去训练这个模型

Moonlander

官方提供[[轴体]]

  • 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

  • Key covers 盖在键位上,将键盘变成更小的布局。

image.png

image.png

Ref


Multi-Head Attention

DONE BERT 可解释性-从"头"说起 - 知乎 [[BERT]],不停的 mask 结构,判断对指标的影响。[[2021/06/16]]

  • 任务:query-title

    • 按 query-doc 相关程度分成 5 类

    • 用 BERT 做多分类

  • 研究各个头对模型的影响:通过将 attention = 0 来 mask 对应的头

    • 12 层,每层 12 个 head,共 144 个 head
  • 结论

    • 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 在一起。

 MultiHead (Q,K,V)= Concat ( head 1,, head h)WO where head i=Attention(QWiQ,KWiK,VWiV)\begin{aligned} \text { MultiHead }(Q, K, V) &=\text { Concat }\left(\text { head }_{1}, \ldots, \text { head }_{\mathrm{h}}\right) W^{O} \\ \text { where head }_{\mathrm{i}} &=\operatorname{Attention}\left(Q W_{i}^{Q}, K W_{i}^{K}, V W_{i}^{V}\right) \end{aligned}

WiQRd model ×dk,WiKRd model ×dk,WiVRd model ×dvW_{i}^{Q} \in \mathbb{R}^{d_{\text { model }} \times d_{k}}, W_{i}^{K} \in \mathbb{R}^{d_{\text { model }} \times d_{k}}, W_{i}^{V} \in \mathbb{R}^{d_{\text { model }} \times d_{v}}

论文中每一层有 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 输出。

    • 其意义是: decoder 的每个位置去查询它与 encoder 的哪些位置相关,并用 encoder 的这些位置的 value 来表示。
  • encoder self-attention:query,key,value 都来自前一层 encoder 的输出。这允许 encoder 的每个位置关注 encoder 前一层的所有位置。

  • decoder masked self-attention:query,key,value 都来自前一层 decoder 的输出。这允许 decoder 的每个位置关注 encoder 前一层的、在该位置之前的所有位置。

  • 第一种 QVV 模式,后面两种 VVV 模式


NFM

y^NFM(x)\hat{y}_{N F M}(\mathbf{x}) :-> w0+i=1nwixi+f(x)w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+f(\mathbf{x})

  • 第一项和第二项是线性回归

  • 引入第三项神经网络学习 :-> 数据之间的高阶特征

    • 网络输入 :-> FM 模型的二阶特征交叉结果
    • 与直接使用高阶 FM 模型相比 :-> 可以降低模型的训练复杂度,加快训练速度。
      NFM 的神经网络部分包含 4 层,分别是 Embedding Layer、Bi-Interaction Layer、Hidden Layers、Prediction Score。


tags:: #[[Model Architecture]]

Embedding Layer 层对输入的稀疏数据进行 Embedding 操作。最常见的 Embedding 操作是在一张权值表中进行 lookup ,论文中作者强调他们这一步会将 Input Feture Vector 中的值与 Embedding 向量相乘。

Bi-Interaction Layer 层是这篇论文的创新,对 embedding 之后的特征两两之间做 element-wise product,并将结果相加得到一个 k 维(Embeding 大小)向量。这一步相当于对特征的二阶交叉,与 FM 类似,这个公式也能进行化简:

  • fBI(Vx)=i=1nj=i+1nxivixjvj=12[(i=1nxivi)2i=1n(xivi)2]f_{B I}\left(\mathcal{V}_{x}\right)=\sum_{i=1}^{n} \sum_{j=i+1}^{n} x_{i} \mathbf{v}_{i} \odot x_{j} \mathbf{v}_{j} =\frac{1}{2}\left[\left(\sum_{i=1}^{n} x_{i} \mathbf{v}_{i}\right)^{2}-\sum_{i=1}^{n}\left(x_{i} \mathbf{v}_{i}\right)^{2}\right]
    Hidden Layers 层利用常规的 DNN 学习高阶特征交叉

Prdiction Layer 层输出最终的结果:

实验结果: ![](https://media.xiang578.com/15643059963915.jpg) tags:: #HOFM


Multi-Task Learning

基本网络框架 [[底层共享法]]
image.png
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTczNjE3NTMyNDk1N18wLnBuZyI6eyJjb25maWciOnt9LCJlbGVtZW50cyI6W3sibGVmdCI6MjY3Ljk5MzU1MDM0NDkxNjksInRvcCI6NjAyLjM4MzAxMDkzMDM5MjIsIndpZHRoIjozNDEuMTMyNDgzNDEzNjAxLCJoZWlnaHQiOjg3LjIzMzk3ODEzOTIxNTc2LCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjEyODcuMTM3ODQyNzI5Nzg5LCJ0b3AiOjYwMy44MTA5NTY5NDUzNjkzLCJ3aWR0aCI6Mjk5Ljk5MDY0NDI5MTI0MjIzLCJoZWlnaHQiOjg0LjM3ODA4NjEwOTI2MTI4LCJhbmdsZSI6MCwiY0lkIjoxfV19fQ==
结构

  • [[MMoE]]

  • CGC

  • ESSM

  • [[PLE]]

Optimization

  • Gradnorm

    • 考虑 Loss 量级和考虑不同任务的速度

    • Label loss 和 Gradient loss

  • Dynamic Weight Averaging

两大分支:“网络设计” 以及 “损失函数设计”

关键点

  • 任务需要有相关性

  • 任务之间可以共享低层表示

网络设计

  • TODO 参考 [[神经网络与深度学习]]

  • 网络如何小巧轻便,如何最大幅度的让不同的任务去共享信息。

  • Hard parameter sharing 底层共享参数,最上层有不同的任务。

    • Task 越多,单任务越不容易拟合

    • 底层难以学到试用于所有任务的表达,比如多任务:猫狗分类,猫汽车分类

  • Soft parameter sharing

    • 不同任务的参数空间需要添加限制,不然容易变成 single task learning
  • 层次共享

    • 图像中不同层次的表达能力不同:结构提取、语义提取
  • 共享-私有

  • Cross-Stitch Network、Multi-Attention Network、AdaShare、MTL+NAS 可以参考 “综述性质的文章Multi-task Learning and Beyond: 过去,现在与未来 - 知乎

损失函数设计

  • 如何分配不同任务损失函数的权重?

类似方向 [[Auxiliary learning]]

[[Ref]]


Naval Ravikant

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.

    • 独特的符号,独一无二的品牌,非你莫属。

Ref


Normalization

解决 [[Internal Covariance Shift]]

  • 本质是平滑 Loss,保持在梯度下降过程中的稳定。

连续特征的值分布不统一,会导致训练波动,影响收敛速度。
归一化:对不同特征维度的伸缩变换的目的是使各个特征维度对目标函数的影响权重是一致的,即使得那些扁平分布的数据伸缩变换成类圆形。

[[归一化方法]]

减少人为参数选择

缓解过拟合

减少梯度消失,加快收敛速度,提高训练精度

通过计算均值和方差的集合分成,输入 [N, C, H, W] 维度图片

  • 不同方法的区别在于神经元集合 S 的范围如何确定

image.png

  • [[Group Normalization]]

  • [[Batch Normalization]] 神经网络中间层进行归一化

    • C 维度上,计算 (N, H, W) 的统计量
  • [[Layer Normalization]] RNN 等序列模型

  • [[Instance Normalization]]

    • LN 相同对单个样本操作

    • IN 对同一层神经元中的同一个通道进行归一化

[[Weight Normalization]]

Ref


Obsidian/理念

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.


PARA

#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]]


PRML/2.24

varθ[θ]=ED[varθ[θD]]+varD[Eθ[θD]]\operatorname{var}_\theta[\boldsymbol{\theta}]=\mathbb{E}_{\mathcal{D}}\left[\operatorname{var}_\theta[\boldsymbol{\theta} \mid \mathcal{D}]\right]+\operatorname{var}_{\mathcal{D}}\left[\mathbb{E}_{\boldsymbol{\theta}}[\boldsymbol{\theta} \mid \mathcal{D}]\right]
左转根据方差定义拆开

  • varθ[θ]=Eθ[θ2]Eθ2[θ]\operatorname{var}_\theta[\boldsymbol{\theta}]=\mathrm{E}_{\boldsymbol{\theta}}\left[\boldsymbol{\theta}^2\right]-\mathrm{E}_{\boldsymbol{\theta}}^2[\boldsymbol{\theta}]

要证明 ED[varθ[θD]]+varD[Eθ[θD]]=Eθ[θ2]Eθ2[θ]\mathrm{E}_D\left[\operatorname{var}_{\boldsymbol{\theta}}[\boldsymbol{\theta} \mid \boldsymbol{D}]\right]+\operatorname{var}_D\left[\mathrm{E}_{\boldsymbol{\theta}}[\boldsymbol{\theta} \mid \boldsymbol{D}]\right]=\mathrm{E}_{\boldsymbol{\theta}}\left[\boldsymbol{\theta}^2\right]-\mathrm{E}_{\boldsymbol{\theta}}^2[\boldsymbol{\theta}]

  • 左边第一项

    • ED[varθ[θD]]=varθ[θD]p(D)dD=(Eθ[θ2D]Eθ2[θD])p(D)dD=Eθ[θ2D]p(D)dDEθ2[θD]p(D)dD=θ2p(θD)dθp(D)dDED[Eθ2[θD]]=θ2p(θ)dθED[Eθ2[θD]]=Eθ[θ2]ED[Eθ2[θD]]\begin{aligned} \mathrm{E}_D\left[\operatorname{var}_\theta[\boldsymbol{\theta} \mid D]\right] & =\int \operatorname{var}_\theta[\boldsymbol{\theta} \mid D] p(D) \mathrm{d} D \\ & =\int\left(\mathrm{E}_{\boldsymbol{\theta}}\left[\boldsymbol{\theta}^2 \mid D\right]-\mathrm{E}_{\boldsymbol{\theta}}^2[\boldsymbol{\theta} \mid D]\right) p(D) \mathrm{d} D \\ & =\int \mathrm{E}_{\boldsymbol{\theta}}\left[\boldsymbol{\theta}^2 \mid D\right] p(D) \mathrm{d} D-\int \mathrm{E}_{\boldsymbol{\theta}}^2[\boldsymbol{\theta} \mid D] p(D) \mathrm{d} D \\ & =\iint \boldsymbol{\theta}^2 p(\boldsymbol{\theta} \mid D) \mathrm{d} \boldsymbol{\theta} p(D) \mathrm{d} D-\mathrm{E}_D\left[\mathrm{E}_{\boldsymbol{\theta}}^2[\boldsymbol{\theta} \mid D]\right] \\ & =\int \boldsymbol{\theta}^2 p(\boldsymbol{\theta}) \mathrm{d} \boldsymbol{\theta}-\mathrm{E}_D\left[\mathrm{E}_{\boldsymbol{\theta}}^2[\boldsymbol{\theta} \mid D]\right] \\ & =\mathrm{E}_{\boldsymbol{\theta}}\left[\boldsymbol{\theta}^2\right]-\mathrm{E}_D\left[\mathrm{E}_{\boldsymbol{\theta}}^2[\boldsymbol{\theta} \mid D]\right]\end{aligned}
  • 左边第二项

    • varD[Eθ[θD]]=ED[Eθ2[θD]]ED2[Eθ[θD]]=ED[Eθ2[θD]]Eθ2[θ]\begin{aligned} \operatorname{var}_D\left[\mathrm{E}_\theta[\boldsymbol{\theta} \mid D]\right] & =\mathrm{E}_D\left[\mathrm{E}_\theta^2[\theta \mid D]\right]-\mathrm{E}_D^2\left[\mathrm{E}_\theta[\theta \mid D]\right] \\ & =\mathrm{E}_D\left[\mathrm{E}_\theta^2[\theta \mid D]\right]-\mathrm{E}_\theta^2[\theta]\end{aligned}
  • 两项相加

    • ED[varθ[θD]]+varD[Eθ[θD]]=Eθ[θ2]Eθ2[θ]\mathrm{E}_D\left[\operatorname{var}_{\boldsymbol{\theta}}[\boldsymbol{\theta} \mid \boldsymbol{D}]\right]+\operatorname{var}_D\left[\mathrm{E}_{\boldsymbol{\theta}}[\boldsymbol{\theta} \mid \boldsymbol{D}]\right]=\mathrm{E}_{\boldsymbol{\theta}}\left[\boldsymbol{\theta}^2\right]-\mathrm{E}_{\boldsymbol{\theta}}^2[\boldsymbol{\theta}]

Pair RDD

数据分区

  • 直行聚合或分组操作时,可以给定 saprk 的分区数

Position Representation

[[Position Encoding]] 和 [[Position Embedding]] 区别

  • 学习式,不可扩展

    • [[@Convolutional Sequence to Sequence Learning]]
  • 固定式

分类

  • absolute positions 绝对位置编码

  • relative positions 相对位置编码

    • 关注一定范围内的相对次序关系

Position Representation 结果 Concat 和 Add 的区别

  • 联系 :-> 三个 embedding 相加相当于三个原始的 one-hot 拼接再经过一个全连接网络。

  • concat 效果不会比 add 差,但是会增加参数量

Position Representation 信息到达上层之后为什么不好消失?#card

  • [[ResNet]] 机制,模型输入特征会直接传递到上层

  • 有一个 Transformer 版本每一个 encoder 输入都会加上 position embedding


Optimization/Question

不等式约束优化问题中局部最小值的必要条件是什么?

  • μ10,μ20\mu_{1} \geq 0, \quad \mu_{2} \geq 0

  • f(x)+μ1g1(x)+μ2g2(x)=0\nabla f\left(x^{*}\right)+\mu_{1} \nabla g_{1}\left(x^{*}\right)+\mu_{2} \nabla g_{2}\left(x^{*}\right)=0

  • μ1g1(x)+μ2g2(x)=0\mu_{1} g_{1}\left(x^{*}\right)+\mu_{2} g_{2}\left(x^{*}\right)=0

是否所有的优化问题都可以转化为对偶问题? #[[incremental]]
+

为什么深度学习不用二阶优化 #card

  • 计算复杂度,二阶导数计算是平方复杂度

  • 小批量的情况下,牛顿法对与二阶导数的估计噪音太大

梯度下降找到的一定是下降最快的方法? #card

  • 梯度目标函数在当前点的切平面上函数值变化最快的方向

对所有优化问题来说,有没有可能找到比现在已知算法更好的算法? #card

  • 没有免费的午餐定理

Positional Encoding

为什么使用

如何理解Transformer论文中的positional encoding,和三角函数有什么关系? - 知乎 (zhihu.com) #card

  • 如何构建一种位置编码?

    • 直接使用下标计数 PE= pos

      • 序列没有上限,后面的词可能位置编码非常大。
    • 使用文本长度对每个位置归一化 PE = pos/(T-1)

      • 不同长度文本的位置编码步长是不同的,长文本和短文本中两个相邻词的位置编码存在差异
    • 有界周期函数

  • 本质对位置信息进行建模,需要满足

    • 需要体现同一个单词在不同位置的区别

    • 相对次序关系,体现先后次序关系,编码差异不应该依赖于文本长度

    • 值域落在一定数值区间内

Ref


Positional Encoding/Sinusoidal

公式

  • PE(pos,2i)=sin(pos/100002i/d model )P E_{(p o s, 2 i)} =\sin \left(\operatorname{pos} / 10000^{2 i / d_{\text { model }}}\right)

  • PE( pos, ,2i+1)=cos( pos /100002i/d model )P E_{(\text { pos, }, 2 i+1)} =\cos \left(\text { pos } / 10000^{2 i / d_{\text { model }}}\right)

pos 代表位置编号,i 代表维度。不同维度对应不同波长的曲线,波长从 2pi 到 2000pi。选择这个看起来不是很直观的公式,主要是利用三角函数的特性实现 PEposPE_{pos} 线性表示 PEpos+kPE_{pos+k}

  • 波长比较长时,相邻字的位置编码之间的差异比较小

  • 不同维度上应该用不同的函数表示位置编码

  • 三角函数的周期性表示相对位置信息。位置 $$\alpha + \beta$$ 的向量可以表示成位置 $$\alpha$$ 和位置 $$\beta$$ 的组合

    • PE( pos +k,2i)=PE( pos, 2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)P E(\text { pos }+k, 2 i)=P E(\text { pos, } 2 i) \times P E(k, 2 i+1)+P E(p o s, 2 i+1) \times P E(k, 2 i)

    • PE( pos +k,2i+1)=PE( pos, 2i+1)×PE(k,2i+1)PE(pos,2i)×PE(k,2i)P E(\text { pos }+k, 2 i+1)=P E(\text { pos, } 2 i+1) \times P E(k, 2 i+1)-P E(p o s, 2 i) \times P E(k, 2 i)

  • 实现表达 relative position 的可能

  • 使用sin+cos后,还需要有正向和反向吗?

为什么公式中有一个魔法值 10000? #card

  • 2i = d_model = 512,周期为 2pi*10000

  • 确保循环周期足够大,以便编码足够长的文本。


Post Norm 和 Pre Norm 区别

image.png

  • [[Pre Norm]] :<-> xn+1=xn+f(norm(xn))x_{n+1}=x_{n}+f\left(\operatorname{norm}\left(x_{n}\right)\right)

    • 第二项的方差由于有 norm 不会随层数变化,x 的方差在主干上随层数累积。到达深层后,单层对主干的影响很小,不同层在统计上类似。

    • xn+2=xn+1+f(norm(xn+1))=xn+f(norm(xn))+f(norm(xn+1))xn+2f(norm(xn))x_{n+2}=x_{n+1}+f\left(\operatorname{norm}\left(x_{n+1}\right)\right)=x_{n}+f\left(\operatorname{norm}\left(x_{n}\right)\right)+f\left(\operatorname{norm}\left(x_{n+1}\right)\right) \approx x_{n}+2 f\left(\operatorname{norm}\left(x_{n}\right)\right)

    • 这样训练的深层模型更像是扩展模型宽度,相对好训练。

  • [[Post Norm]] :<-> xn+1=norm(xn+f(xn))x_{n+1}=\operatorname{norm}\left(x_{n}+f\left(x_{n}\right)\right)

    • 主干方差恒定,每层对 x 都有较大影响,没有从头到尾的恒等路径,梯度难以控制,更难收敛,训练出来效果好。

    • 突出残差分支

    • [[BERT]]训练时,需要 warmup

      • 输出层的期望梯度非常大,不稳定
      • [[Adam]] 和 [[SGD]] 都需要

pre 和 post 具体含义 #card

  • 先 norm 再残差 [[Pre Norm]] :<-> xn+1=xn+f(norm(xn))x_{n+1}=x_{n}+f\left(\operatorname{norm}\left(x_{n}\right)\right)

  • 先残差再 norm [[Post Norm]] :<-> xn+1=norm(xn+f(xn))x_{n+1}=\operatorname{norm}\left(x_{n}+f\left(x_{n}\right)\right)

[[DeepNet]]

Ref


Potential Outcome Framework

[[Potential Outcome Framework 专有名词]]

[[Treatment Effect]]

  • [[ITE]] 个体干预效果

  • [[ATE]] Average Treatment Effect,针对全体用户

    • [[CATE]] 条件,给定条件下的全体用户
  • [[ATT]] 实验组

[[Potential Outcome Framework 简化问题的三个假设]]

经典方法

  • [[Re-weighting methods]] 解决的问题是控制组和治疗组的分布不同

  • [[Matching methods]] 关键在于如何度量样本之间的相似性

  • Tree-based Method - [[Causal Forest]] 在分裂最大化 ITE 方差

  • [[Representation Learning Method]] 本质是对反事实进行预测

  • [[Meta-Learner]]


Problems

我的力扣主页: 算法花园,代码仓库:xiang578/acm-icpc

[[2025/04]]

[[2023/07]]

[[2023/03]]

  • [[LC1630. 等差子数组]] #[[Brute Force]]

  • [[LC887. 鸡蛋掉落]] #二分搜索 #动态规划 挺好一个题目,刚开始以为是一个简单的二分,然后找了几个小时都没有找到规律。然后想用 dfs 去解,又发现超时。

    • 几年前碰到过类似的题目,求最小满足题目条件的答案。很难直接计算,转化成二分结果+检验结果的方法去求解。

[[2022/01]]

  • 2045. 到达目的地的第二短时间

    • 记录一个第二次访问终点需要经过多少个点

    • 点数确定通过时间和等待时间都能算出来。

  • 2034. 股票价格波动 模拟 + 有限队列

  • 1332. 删除回文子序列 多读几遍题意,每次产出的是子序列而不是子串

  • 1345. 跳跃游戏 BFS

    • 简单题,写了快半个小时,先想清楚流程再写,不要边写变想。

    • 按 arr[i] 聚合数字,然后每个点只能访问一次,访问后删除。

  • 2029. 石子游戏 IX推荐 博弈论

    • 找规律,反正是类似于 1-(1-2)-...2-(2-1)-... 形式

    • 写不出简洁的规律,直接上了模拟……

  • 219. 存在重复元素 II

    • hash

    • 效率更高一些,滑动窗口内 hash

  • 539. 最小时间差

    • 按题意模拟,坑点在于时间是一个环,需要考虑左边和右边最近的时间。
  • 1220. 统计元音字母序列的数目 简单 DP

    • 数据忘记初始化导致浪费十多分钟看问题。
  • 382. 链表随机节点

    • python random.randint(st, ed)

    • 蓄水池抽样:遍历链表,假设当前遍历到第 i 个节点,以 1/i1/i 的概率选择第 i 个节点作为最后的答案。

  • 1716. 计算力扣银行的钱 简单模拟或求等差数列通项公式

  • 373. 查找和最小的K对数字

    • 暴力:两个数组最多前 1000 个数字组合,然后排序取前 k 个

    • 看题解

      • 使用优先队列,每次取出最小的数字 (ai,bj)(a_i, b_j) 后,往队列中 push (ai+1,bj)(a_{i + 1}, b_j)(ai,bj+)(a_i, b_{j+})
  • 334. 递增的三元子序列

    • 第一反应是用最长上升子序列的方法。

    • 仔细想了一下,对一个位置 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 的特殊情况

  • 238. 除自身以外数组的乘积

    • 空间复杂度 O(n)O(n) 写法:维护后缀乘积结果。

    • 空间复杂度 O(1)O(1) 写法:用返回数组保存前 0...i0...i 的乘积,然后逆序用一个变量保存 i+1..n1i+1..n-1 的乘积,然后可以根据这两个信息得到结果。

[[2021/09]]

  • 5847. 找到所有的农场组 暴力,一个格子是不是起点可以通过判断上边格子和左边格子得知。

  • 5848. 树上的操作 模拟,先想清楚然后再写

  • 5849. 好子集的数目 枚举所有合法组合的个数

  • 5866. 数组的最大公因数排序 [[并查集]] + [[素数筛]],有相同因子的数会在同一个集合中。

  • 5865. 访问完所有房间的第一天 漏看一个条件,实际上是傻逼题,还是错了好几次,1e9 相加会爆 int 以及返回答案前也需要取模。

  • 1977. 划分数字的方案数 挺复杂的,写了好几个小时,看题解才过…… n=3500,暗示是 O(n2)O(n^2) 的算法

    • 设以 nums[i…j] 为结尾的方案数是 dpi,jdp_{i,j}

    • 可以发现 dpi,j=k=2ij1i1dp[k][i1],dpi,j+1=dpi,j+dp2ij2,i1dp_{i,j}=\sum_{k=2*i-j-1}^{i-1}dp[k][i-1], dp_{i,j+1}=dp_{i,j} + dp_{2*i-j-2,i-1},维护一个前缀和。

    • 比较 nums[i…j] 和 nums[2*i-j-1…i-1] 大小,可以先预处理出以 i 和 j 开始的字符串的最大相同长度 lcp[i][j]。

  • LCP 42. 玩具套圈:r 比较小,可以暴力枚举,被抬一手还是没有写出来。。。需要注意细节。不要提交 debug。

  • LCP 43. 十字路口的交通

  • 36. 有效的数独:判断数独当前局面是否合法。

  • 37. 解数独:求解数独,上一题的进阶。

[[2021/08]]

2019 WF

  • Problem - J - Codeforces 500 个洞,50 个人。a[500][50],可以将 a[i][j] 用 l 替代,然后对 a[i] 求和,再从小到达排序,得到 i 的名次。问每个 i 最小的排名是多少?

Progressive Summarization

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

    1. DON’T APPLY ALL LAYERS TO ALL NOTES 不要在所有的笔记上都应用所有的图层
    1. USE RESONANCE AS YOUR CRITERIA 以共鸣为标准
    1. DESIGN A SYSTEM FOR THE LAZIEST VERSION OF YOURSELF 为自己设计一个用的最顺手的系统
    1. KEEP YOUR NOTES GLANCEABLE 让笔记保持一目了然

最后这一篇笔记并不符合[[Progressive Summarization]]原则。


Pytorch

[[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 架构


Prophet

y(t)=g(t)+s(t)+h(t)+ϵ(t)y(t) = g(t) + s(t) + h(t) + \epsilon(t)

  • 非线性增长项 + 周期项 + 节假日效应项 + 误差项

  • 利用极大似然估计从历史数据中拟合上述公式中的前三项

良好的短期趋势和周期性捕捉能力

Ref


Python/Decorator

最终返回嵌套函数的引用

  • 覆盖 __name____code__

不修改原函数,不修改调用方法。通过标记,^增强函数功能^

  • 为已经存在的对象(函数和类)添加额外的功能

  • 函数修饰器在导入模块时立即执行,被装饰函数只在明确调用时运行。

@ 装饰器[[语法糖]]

  • 等价于 add = timer(add)
1
2
3
4
5
6
7
8
9
def timer(func):
def wrapper(*arg, **kw):
### code
return func(*arg, **kw)
return wrapper

@timer
def add(arg):
pass

标准库中的装饰器

  • lru_cache 把耗时的函数结果保存起来

    • 字典存储结果,键是传入的定位参数和关键字参数
  • 单分派泛函数 functools.singledispatch PEP 443

    • Python 不支持重载方法或函数

    • 使用这个装饰器后根据第一个参数的类型执行对应的函数。

    • @singledispatch 标记基函数

    • @base_function.register(type)装饰专门的函数

      • type 使用抽象基类
  • @staticmathod

  • @classmethod

  • @property

叠放装饰器,按叠放顺序执行

1
2
3
4
@a
@b
@c
def f ():
  • 等价于 f = a(b(c(f)))

参数化装饰器


Q-Note

A Q-Note is a Question Note.

  • A [[Q-Note]] is used within your academic writing as an exploratory staging space for deeper thinking and connections between all other note types. :-> 用于深入思考和连接其他所有类型的笔记
  • A [[Q-Note]] sits at the Page level with the question as a title and prefaced with a Q. :-> 一个以 Q - 问题 为标题的 page
  • A [[Q-Note]] poses a question or a theory (used as the page title, prefaced by a Q that needs further support or exploration. :-> Q-Note 对应一个问题或理论,需要材料支持或进一步探索
  • A [[Q-Note]] is a page on it’s way to becoming an [[Z-Note]]. Q-Note’s make great outline line items for writing projects. :-> Q-Note 会成为 Z-note。Q-Note 也是写作的大纲、标题、章节

Python/queue

queue.Queue()

  • put

  • get

queue.LifoQueue()

  • 后进先出型队列,与普通栈结构类似

queue.PriorityQueue()

collections.deque 线程安全

  • rotate 旋转

asyncio

heapq

  • nlargest

  • nsmallest


R-Learner

论文出处:Quasi-Oracle Estimation of Heterogeneous Treatment Effects

适用情形:随机干预实验的数据

image.png

  • ex :-> 特征 x 对干预 w 的影响,也是 [[倾向性得分]]

  • m(x)=E(YX=x)m^*(x)=E(Y \mid X=x) :-> 基于特征 x 对目标 y 的影响 conditional mean outcome

  • m(x)=E(YX=x)=μ(0)(x)+e(x)τ(x)m^*(x)=E(Y \mid X=x)=\mu_{(0)}^*(x)+e^*(x) \tau^*(x) 拆解逻辑 #card

    • 条件期望响应结果 E(YX=x)E(Y \mid X=x) 可以表示为

      • 不施加干预时的条件期望响应结果 μ(0)(x)\mu_{(0)}^*(x)

      • 倾向性得分 e(x)e^*(x)(即条件干预概率)与干预效应 τ(x)\tau^*(x) (即 CATE)的乘积。

  • 观测结果 Yi=μ(0)(Xi)+Wiτ(Xi)+εiY_i=\mu_{(0)}^*\left(X_i\right)+W_i \tau^*\left(X_i\right)+\varepsilon_i 分解为 #card

    • 无干预时的条件响应结果 μ0(Xi)\mu_0^*(X_i)

    • 是否施加干预 WiW_i 与因果效应 τ(Xi)\tau^*(X_i) 的乘积

    • 残差 εi\varepsilon_i

  • 观测结果变换 Robinson’s transfomation #card

    • 两边分别减去条件响应结果 m(Xi)m^*(X_i)

    • 通过上述转化,我们会发现,假定我们已经有了 m(x)m^*(x) 以及 e(x)e^*(x) 的表达式,我们就可以通过最小化残差来估计得到 treatment effect τ(x)\tau^*(x) ,即我们前面提到的通过一个 loss 优化问题来估计得到因果效应。

  • 最终训练一个模型 τ(Xi)\tau(X_i) 最小化损失函数 τ()=argminτ{1n1n((Yim(Xi))(Wie(Xi))τ(Xi))2+Λ(τ())}\tau^*(\cdot)=\arg \min _\tau\left\{\frac{1}{n} \sum_1^n\left(\left(Y_i-m^*\left(X_i\right)\right)-\left(W_i-e^*\left(X_i\right)\right) \tau\left(X_i\right)\right)^2+\Lambda(\tau(\cdot))\right\} #card

    • 用权重为 (Wie(Xi))2\left(W_i-e^*\left(X_i\right)\right)^2 的样本 X 去拟合 τ(Xi)=Yim(Xi)Wie(Xi)\tau\left(X_i\right)=\frac{Y_i-m^*\left(X_i\right)}{W_i-e^*\left(X_i\right)}

    • 其中 Λ\Lambda 是模型τ(Xi)\tau(X_i) 参数的正则项,

    • e(Xi)e^*(X_i)m(Xi)m^*(X_i) 是事先训练好的模型,

    • 此时 τ(Xi)\tau(X_i) 的输出结果就是我们想要的 CATE。

优点

  • 将因果效应的估计问题转化为 损失函数的优化 问题,提供了一种一般性的因果效应的预测框架。
    缺点:#card

  • 1)预测效果非常依赖模型 e(Xi)e^*(X_i)m(Xi)m^*(X_i) ,但是这两个模型不一定能预测得准确。

  • 2)假设了潜在结果 YiY_i 的分解是一种线性关系,限制了模型对复杂数据的拟合能力。


RDD 持久化

持久化指将数据进行保存,避免数据丢失。

RDD 持久化并非将数据落盘,而是缓存数据,供后续计算使用。

Cache()

  • 底层是 persist(),没有指定参数,默认 MEMORY_ONLY

persist()

  • 使用指定的方式进行持久化

  • StorageLevel.

    • MEMORY_ONLY

      • 内存优先

      • RDD 分区空间不够,旧的分区会直接删除

    • MEMORY_AND_DISK_SER

      • 优先内存,内存不足到磁盘。

      • 节省重新计算的开销

    • MEMORY_ONLY_SER

      • 在内存存放序列化后的数据

        • 序列化存储能减少内存开销,反序列化会增大 cpu 开销
    • DISK_ONLY

  • SER

    • 序列化保存

Checkpoint

  • 将 RDD 中间结果二进制形式写入磁盘

  • 使用

    • sc.setCheckpointDir(“hdfs://hadoop102:9820/output/a”)

    • rdd.checkpoint()

    • 手动释放rddx.unpersist(true)

Question

  • RDD 持久化方式? #card

    • Cache()

    • persist()

  • memory_only 如果内存存储不了,会怎么操作? #card

    • 利用 [[LRU]] 的缓存策略把最老的分区从内存中移除

    • 下一次使用被移除的分区需要重新计算


RDD

共享内存模型

  • 只读的记录分区的集合

依赖关系

  • 窄依赖 narrow dependency

    • OneToOneDependency

    • 父 RDD 每个分区只被子 RDD 的一个分区所使用

    • 不需要 shuffle

    • map,union

  • 宽依赖 wide dependency/shuffle

    • 父 RDD 的每个分区可能被多个子 RDD分区所使用,会有 shuffle 产生

    • groupByKey

Partitioner 分区器

  • 定义如何分布数据

    • 一个 RDD 分成多少个分区,每个分区数据量多发,从而决定每个 Task 将处理哪些数据
  • 可使用分区器

    • [[HashPartitioner]] 给定的 key,计算 hashCode,对分区个数取余

    • [[RangePartitioner]] 尽量保证每个分区中的数据量均匀,且分区与分区之间是有序的。

      • rangeBounds
    • 自定义分区器

Question

  • RDD是弹性数据集,“弹性”体现在哪里呢?

    • 存储弹性

      • spark 计算产生的中间结果会保存在内存中,如果内存不足会自动存储在磁盘
    • 容错弹性

      • 计算过程中如果出错会自动重试

        • task 失败会重试

        • stage 失败会重试失败的分片

    • 计算弹性

      • 如果计算过程中数据丢失,会根据 RDD 的依赖关系重新计算得到数据
    • 分区弹性

      • RDD 会根据文件大小动态分区
  • 你觉得RDD有哪些缺陷?

    • 惰性计算,中间数据默认不保存,每次操作都会对数据集重复计算,某些计算量比较大的操作可能会影响系统的运行效率。
  • RDD分区和数据块有啥联系?


Raycast

每一个命令支持按 cmd + k 查看更多操作

设置

search

Quicklink 拼接链接并通过浏览器打开(实现在指定网站搜索关键词或跳转到指定页面)

  • 链接格式 https://www.baidu.com/s?wd={query},其中 query 对应需要搜索的关键词

  • 官方使用说明

Clipboard History 剪贴板历史管理

软件启动

  • 设置快捷键

  • 命令框

Snippets 文本片段

窗口管理

自定义脚本

  • 自动git add 和 git commit logseq文件夹

SuggestionsManage Fallback Commands 中设置

image.png

功能

  • [[Flight Tracker]]

插件

[[Alfred]] 对比

  • 免费,大部分功能可以直接使用,但是无法同步配置

  • Alfred 按版本付费

Ref


RNN

image.png
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTcyNzEwMTQwODE4OV8wLnBuZyI6eyJjb25maWciOnsiaGlkZUFsbFRlc3RPbmUiOnRydWV9LCJlbGVtZW50cyI6W3sibGVmdCI6MTU0NC4wNzUyNzMzNjA3MzQ0LCJ0b3AiOjUwMC42NTQzNTc4NTAwMzkxLCJ3aWR0aCI6NzIyLjE0MDMwMTkxMDIxMzEsImhlaWdodCI6MTA3LjMwMjU3NDYzMDExODY3LCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjE0NjUuNTcxNzQ2MTMzNjQ4NSwidG9wIjo2MTYuNjU1MTg4MjQ2MjkxNiwid2lkdGgiOjU1OS4xNDU3NzEwOTM3ODQ2LCJoZWlnaHQiOjk5LjMwMzA3NjczMDE3ODMsImFuZ2xlIjowLCJjSWQiOjJ9LHsibGVmdCI6NzAzLjQ4OTk5OTUyMTU3MjgsInRvcCI6Mzk2LjI5NzA3MzY4NDQxODI1LCJ3aWR0aCI6ODIuMDIwNTAzNjg3MzcxODQsImhlaWdodCI6NzEuNTY1NDQ4ODQ0OTE0MjMsImFuZ2xlIjowLCJjSWQiOjN9LHsibGVmdCI6ODI1LjUzMjQzMjk1ODM4MTMsInRvcCI6MTMxLjk4MTg1NjMyMTg0MjEsIndpZHRoIjoxNDcuODE2MDUxNjczNjU5MSwiaGVpZ2h0Ijo3MC44MDQyOTIyNzcyMjA3LCJhbmdsZSI6MCwiY0lkIjoyfV19fQ==
ht=tanh(Wxt+Uht1+b)h_{t}=\tanh \left(W x_{t}+U h_{t-1}+b\right)

  • dhtdθ=htht1dht1dθ+htθ\frac{d h_{t}}{d \theta}=\frac{\partial h_{t}}{\partial h_{t-1}} \frac{d h_{t-1}}{d \theta}+\frac{\partial h_{t}}{\partial \theta}

    • htht1>1|\frac{\partial h_{t}}{\partial h_{t-1}}| >1,导致 :<-> 梯度爆炸
      • 如何解决 :-> 梯度裁剪
    • htht1<1|\frac{\partial h_{t}}{\partial h_{t-1}}| < 1,导致 :<-> 梯度消失
      htht1=(1ht2)U\frac{\partial h_{t}}{\partial h_{t-1}}=\left(1-h_{t}^{2}\right) U
  • 结合 ht=tanh(Wxt+Uht1+b)h_{t}=\tanh \left(W x_{t}+U h_{t-1}+b\right)
    对应的曲线

    • 为什么隐状态激活函数使用 [[Tanh]] 而不是 [[ReLU]]?
      • 为什么用 Tanh :-> htht1\frac{\partial h_{t}}{\partial h_{t-1}} 是有界的,可以缓减梯度爆炸的风险。
      • 为什么不用 ReLU :-> 正半区没有上限
        • 将 U 初始化在单位矩阵附近 + 梯度裁剪也可以得到不错的效果
  • 如果 U 很大,ht 会接近于 1,$$\frac{\partial h_{t}}{\partial h_{t-1}}$$ 反而会小
    [[RNN/Backward]]

[[Ref]]


ResNet

单纯堆积卷积层,并不能让模型表现的更好。

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]]


S-Learner

image.png

  • S 的由来 :-> 将干预变量 TT 和背景变量 XX 一起作为特征输入到单个模型 MM (Single,S 的由来)学习 M(X,T)=E(YT,X)M(X,T) = E(Y|T,X)

  • 把用户是否干预作为特征加入到模型构建中

  • 预测阶段如何得到反事实结果? #card

    • 在预测时通过修改干预变量 TT 的值预测获得反事实结果,
    • 最终的 CATE 估计为 τ^(x)i=Ms(Xi,T=1)Ms(Xi,T=0)\hat{\tau}(x)_i=M_s\left(X_i, T=1\right)-M_s\left(X_i, T=0\right)

优点:#card

  • 1)干预变量作为特征可以适用于多值干预。

  • 2)干预 / 控制组样本共同训练单个模型的参数,有助于缓解干预组样本稀疏时的欠拟合问题,提高模型精度

  • 可以直接使用现有分类算法

  • 减少双模型误差累积

缺点:#card

  • 干预变量作为输入特征可能会被淹没在其他众多特征中,如果干预变量与其他特征存在相关性时会更严重。间接计算增量,无法根据增量对模型进行优化

S-Learner 中缓解特征被忽视的方法 #card

  • 构造更强的交叉特征,

  • 直连模型输出层干预打分,

  • 作为裁判特征输出权重


SGD

每次迭代只采样一个样本

优化 learn-rate,自适应学习率

  • 自适应学习率的方法:对不同的参数使用不同的学习率,参数更新频率和更新步长负相关

  • [[Annealing]],全局共享learn_rate 所有的参数以相同的幅度进行更新

    • 随步衰减

    • 指数衰减

    • 1/t衰减

  • [[AdaGrad]],参数独立 learn_rate 更新幅度取决于参数本身

    • θt+1=θtηGt+ϵgt\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{G_t+\epsilon}} \odot g_t

    • nt=nt1+gt2n_t=n_{t-1}+g^2_t

    • Δθt=ηnt+ϵ\Delta \theta _t = -\frac{\eta}{\sqrt{n_t+\epsilon}}

    • 计算一个时间区间内的梯度值累积和 [[移动平均]]

      • AdaDelta 分母滑动区间 + 单位矫正

        • E[g2]t=γE[g2]t1+(1γ)gt2E\left[g^2\right]_t=\gamma E\left[g^2\right]_{t-1}+(1-\gamma) g_t^2

        • E[Δθ2]t=γE[Δθ2]t1+(1γ)E[Δθ2]tE\left[\Delta \theta^2\right]_t=\gamma E\left[\Delta \theta^2\right]_{t-1}+(1-\gamma) E\left[\Delta \theta^2\right]_t

        • Δθt=RMS[Δθ]t1RMS[g]tgt\Delta \theta_t=-\frac{R M S[\Delta \theta]_{t-1}}{R M S[g]_t} g_t

      • [[RMSProp]] 分子滑动区间

        • cache = decay_rate * cache + (1 - decay_rate) * dx**2

        • x += - learning_rate * dx / (sqrt(cache) + eps)

        • E[g2]t=0.9E(g2)t1+0.1gt2E\left[g^2\right]_t=0.9 E\left(g^2\right)_{t-1}+0.1 g_t^2

        • θt+1=θtηE[g2]t+ϵ\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{E\left[g^2\right]_t+\epsilon}}

        • [[Adam]] 分子动量版

          • vt=β2vt1+(1β2)gt2v_t=\beta_2 v_{t-1}+\left(1-\beta_2\right) g_t^2

          • mt=β1mt1+(1β1)gtm_t=\beta_1 m_{t-1}+\left(1-\beta_1\right) g_t

          • θt+1=θtηv^t+ϵm^t\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{\hat{v}_t+\epsilon}} \hat{m}_t

          • [[AdamW]][[LazyAdam]]

优化梯度方向,减小震荡

  • [[Momentum]]:强化相关方向的训练和弱化无关方向的震荡来加速 SGD 收敛

    • vt=γvt1+ηθJ(θ)v_t=\gamma v_{t-1}+\eta \nabla_\theta J(\theta)

    • V[t+1] = rho * v[t] + dx;

    • x[t+1] = x[t] - learningRate * V[t+1]

  • Nesterov 梯度加速法

    • 预判前方地形

    • vt=γvt1+ηθJ(θγvt1)v_t=\gamma v_{t-1}+\eta \nabla_\theta J\left(\theta-\gamma v_{t-1}\right)

梯度下降法 [[SGD]]

  • 并行化,Scalable

    • Downpour SGD

    • Hogwild!


STGCN

[[@Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting]]

已有方法(超过30分钟的长周期预测)

  • dynamical modeling

    • differential equations 微分方程
  • data-driven methods

结构

  • Graph CNN

    • Chebyshev Polynomials Approximation

    • 1st-order Approximation

  • Gated CNNs for Extracting Temporal Features

Ref


SVD

将矩阵分解成奇异向量和[[奇异值]]

A=UDVTA=UDV^T


Seq2Seq

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的输入

      • 缺点 #card
        • 每次输入正确单词,会导致 overcorrect

        • exposure bias 误差爆炸/曝光误差 (训练环节和预测环节存在行为差异)

    • Scheduled sampling 计划采样 #card

      • 1-p 的概率用 teacher forcing

      • 以一定概率随机选择用模型输出还是用真值,选择概率随着训练的推进不断调整

  • [[Beam Search]] 每一步,多选几个作为候选,最后综合考虑,选出最优的组合。

[[Transformer]] 不适用 RNN

CNN Seq2Seq [[Convolutional Sequence to Sequence Learning]]


Separable Convolution

减少卷积计算量

它的核心思想是将一个完整的卷积运算分解为两步进行,分别为Depthwise Convolution与Pointwise Convolution。

  • Depthwise Convolution
    • 参数量从 $$d^2k$$ 降到 $$dk$$

  • Pointwise Convolution


Semi-Supervised Classification with Graph Convolutional Networks

H(l+1)=σ(D~12A~D~12H(l)W(l))H^{(l+1)}=\sigma ( \tilde{D} ^ {-\frac{1}{2}} \tilde{A} \tilde{D} ^ {-\frac{1}{2}} H^{(l)} W^{(l)})

  • D~12A~D~12\tilde{D} ^ {-\frac{1}{2}} \tilde{A} \tilde{D} ^ {-\frac{1}{2}} 利用对称矩阵的形式归一化 renormalization

    • 避免顶点的度越大,学到的表示越大

    • A 是图的邻接矩阵

    • D 是顶点的度矩阵,对角线上的元素依次是各个顶点的度

    • A~=A+IN\tilde{A}=A+I_N

  • H(l+1)=σ(A~H(l)W(l))H^{(l+1)}=\sigma\left(\tilde{A} H^{(l)} W^{(l)}\right)

    • A~\tilde{A} 矩阵 nn,H(l)H^{(l)} 矩阵 nm,WW 矩阵 mu,H(l+1)H^{(l+1)} 矩阵 nu

    • A~H(l)\tilde{A} H^{(l)} 考虑节点本身和邻居的信息

+ 

Shapley Value

[[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}$ + 最终计算公式为: ![](https://media.xiang578.com/202307151652776.png) ## Ref + [理解用于计算SHAP值的公式 (baidu.com)](https://baijiahao.baidu.com/s?id=1654791131903418801&wfr=spider&for=pc)


Spark API

SQL

  • Hive

  • 执行流程

+ SparkSqlParser

  + AST 语法树

    + 优化理论

+ Analyzer

  + 数据源绑定 & 字段类型确定

+ Optimizer

  + RBO 优化

+ SparkPlanner

  + 执行计划 Join 选择策略

Spark Streaming

MLlib

GraphX


Spark Operator

区分 RDD 的方法和 Scala 集合对象的方法

  • Scala 集合对象的方法在同一个节点的内存中完成

  • RDD 的方法可以将计算逻辑发送到 Executor 端执行

Transformation

  • map

  • mapPartitions

    • 映射函数的参数从 RDD 中的每一行元素变成 RDD 中每一个分区的迭代器

    • 一次函数调用会处理一个 partition 所有数据

      • 内存不够,可能会导致 OOM。
    • 解决映射过程中需要频繁创建额外的对象

  • mapPartitionsWithIndex

    • 多增加一个分区索引
  • sample

  • flatMap 先映射,再扁平化

  • filter

  • union 求并集

    • 多个 RDD 合并
1
2
3
4
5
6
7
8
rdd1 = sc.parallelize([1, 2, 3])
rdd2 = sc.parallelize([4, 5, 6])
rdd3 = sc.parallelize([7, 8, 9])

rdd = sc.union([rdd1, rdd2, rdd3])
rdd.collect()

## [1, 2, 3, 4, 5, 6, 7, 8, 9]
  • intersection 交叉口,求交集

  • distinct

  • groupby

    • 按 key 分组,value 合并(能相加就相加,不能加成为一个数组)
  • 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

      • coalesce 没有对数据进行 [[Spark Shuffle]],原来属于同一分区的数据会同时进入一个新的分区
  • 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 格式


Spark Shuffle

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 指定默认并行度


Skip-Gram

目标:网络的多个输出之间的条件概率最大。

C 个输出概率分布相同,并且得分最高的单词不是一定是预测单词。

假设第 c 个输出的第 j 个分量为 $${u^c_j=w_j h_{u_j}^c}$$

yjc=p(wordjcX)=exp(ujc)k=1Vexp(ukc){y_j^c=p(word^c_j|\vec X)=\frac{exp(u^c_j)}{\sum^V_{k=1}exp(u^c_k)}}

{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)会在样本中大量出现,远远超过需要的训练样本数。

  • (三)通俗易懂理解——Skip-gram的负采样 - 知乎

  • 基本思想:对于我们在训练原始文本中遇到的每一个单词,它们都有一定概率被我们从文本中删掉,而这个被删除的概率与单词的频率有关。

  • 保留某个单词的概率 $$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

Spark 内存模块

运行在 JVM 体系上,内存模型基于 Java 虚拟机

堆、栈、静态代码块和全局空间

Executor

  • 申请内存包括下面两部分 M1+M2

+ OnHeap 堆内内存 spark.executor.memory

+ OffHeap 堆外内存 spark.yarn.executor.memoryOverhead

  + spark.memory.offHeap.size
  • Task Memory Manager

    • E 的线程共享 JVM 资源,没有强隔离

内存划分

  • Storage:RDD缓存、Broadcast 数据空间

  • Execution:Shuffle 过程使用的内存

    • 第一块是让task执行我们自己编写的代码时使用,默认是占Executor总内存的20%;

      • JVM
    • 第二块是让task通过shuffle过程拉取了上一个stage的task的输出后,进行聚合等操作时使用,默认也是占Executor总内存的20%;

      • 通过 spark.shuffle.memoryFraction 控制大小
    • 第三块是让RDD持久化时使用,默认占Executor总内存的60%。

      • persisit() 或 cache()

      • 通过 spark.storage.memoryFraction 控制大小

      • 超过限制,旧分区会被移除内存

  • Other:用户定义的数据结构、Spark 内部元数据


SparkSession

Spark 2.0 引入概念,为用户提供统一的切入点来使用 Spark

[[pyspark]] 例子

1
2
3
4
5
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("Word Count") \
.config(conf=c) \
.getOrCreate()

Scala 例子

  • 创建

    • val sparkSession = SparkSession.builder().appName(appName).enableHiveSupport().getOrCreate()
  • sql

    • sparkSession.sql(sqlStr)
  • HiveContext

    • spark sql 支持 hive 读写

    • new HiveContext(SparkSession)

  • SparkContext

    • sparkSession.sparkContext

Spark

[[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

  • yarn-cluster

  • yarn-client

  • 区别 Application Master 作业级别

    • 参数 --deploy-mode cluster/client

    • cluster 模式 driver 运行在 AM 中

      • 关掉 Client,作业会继续在 YARN 上运行,适合生产
    • client 本地运行,会和 container 进行通信。交互式查询和调试模式

      • Client 客户端不能退出

      • AM 向 YARN 请求 executor

spark 作业流程

    1. spark-submit 提交代码,执行 new SparkContext(),在 SparkContext 里构造 DAGScheduler 和 TaskScheduler。
    • jar 和 py 上传到 hdfs
    1. TaskScheduler 会通过后台的一个进程,连接 Master,向 Master 注册 Application。
    1. Master 接收到 Application 请求后,会使用相应的资源调度算法,在 Worker 上为这个 Application 启动多个 Executer。
    1. Executor 启动后,会自己反向注册到 TaskScheduler 中。 所有 Executor 都注册到 Driver 上之后,SparkContext 结束初始化,接下来往下执行我们自己的代码。
    1. 每执行到一个 Action,就会创建一个 Job。Job 会提交给 DAGScheduler。
    1. DAGScheduler 会将 Job划分为多个 stage,然后每个 stage 创建一个 TaskSet。
    1. TaskScheduler 会把每一个 TaskSet 里的 Task,提交到 Executor 上执行。
    1. Executor 上有线程池,每接收到一个 Task,就用 TaskRunner 封装,然后从线程池里取出一个线程执行这个 task。(TaskRunner 将我们编写的代码,拷贝,反序列化,执行 Task,每个 Task 执行 RDD 里的一个 partition)
    • 一个 stage 所有 task 执行完毕后,会在节点本地磁盘文件中写入中间结果。

RDD(Resilient Distributed Dataset) 即弹性数据集

Job action 算子划分

Stage 划分

  • 根据 RDD 之间的依赖关系,形成一个 DAG,DAGScheduler 遇到 宽依赖 wide dependency/shuffle
    就划分 stage

Task 最小执行单元

[[Spark Operator]]

运行时的一些概念

  • mapper

    • 加载数据源或[[Shuffle Write]]阶段Task数(默认256M split,数目>=文件个数)
  • reducer

    • Shuffle Read阶段Task数(默认spark.sql.shuffle.partitions=1000,由于开启了AE Shuffle 64M合并,实际数 目<=1000,union创建会N倍增加)
  • 任务并发数

    • 默认Executor数*Core数

Spark 划分逻辑图从而生成物理执行图

  • DAG 有向无环图

  • 从逻辑图最后方开始创建 Stage

  • 遇到完全依赖加入当前 Stage

  • 遇到部分依赖新建一个 Stage

Pipeline 的计算方式

  • Stage 内部操作只有完全依赖

  • 一个分区数据计算失败或者丢失,可以从父 RDD 对应的分区中恢复

[[Spark Shuffle]]

[[Spark 内存模块]]

[[Spark/Broadcast]] 数据共享

  • 广播变量:

    • 每个 Executor 节点上复制一份。各个节点可以直接访问本地数据进行计算而不需要通过网络获取。

    • 数据在 Driver 上分块,BlockManager 记录保存在那个节点

    • Executor 从Driver 上查询数据信息,并拉取。防止同时从 Driver 上拉取信息。

[[spark-submit]]

Spark 和 MapReduce 的区别?[[Question]]

  • [[Hadoop]]一个 task 启动一个进程

  • MapReduce 过于抽象,高级 API (SQL vs. pandas numpy)

  • shuffle 的数据集不需要通过读写磁盘来交换,直接保存在内存中。

  • Hadoop 多轮作业之间无交互,磁盘文件进行数据交互

  • [[Scala]] 实现

    • task 如何通过序列化方法发送到远端

    • 运行在 JVM 虚拟机上

[[Spark API]]

Ref


Spark/Broadcast

sc.Broadcast(rdd.collectAsMap())

算子函数使用外部变量,默认情况 Spark 会将该变量复制多个副本,通过网络传输到 task 中,每个 task 都有一个变量副本。

  • 如果变量本身比较大,会占用增大网络中传输的性能开销,以及在各个节点的 Executor 占用过多内存导致频繁 GC。

  • 通过 Broadcast 的变量只在 Executor 内存中保留一份。

    • Executor 会有对应的 BlockManager,BlockManager 负责管理 Executor 对应的内存和磁盘上的数据。

    • 需要使用广播变量时,先尝试从 BlockManager 获取。如果失败, BlockManager 会从 Driver 或者 其他节点的 BlockManager 拉取变量副本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 以下代码在算子函数中,使用了外部的变量。
// 此时没有做任何特殊操作,每个task都会有一份list1的副本。
val list1 = ...
rdd1.map(list1...)

// 以下代码将list1封装成了Broadcast类型的广播变量。
// 在算子函数中,使用广播变量时,首先会判断当前task所在Executor内存中,是否有变量副本。
// 如果有则直接使用;如果没有则从Driver或者其他Executor节点上远程拉取一份放到本地Executor内存中。
// 每个Executor内存中,就只会驻留一份广播变量副本。
val list1 = ...
val list1Broadcast = sc.broadcast(list1)
rdd1.map(list1Broadcast...)

//如果是变量是 hdfs 文件,先 collect
sc.broadcast(link2NodeMap.collectAsMap())

Standardization

标准化的前提假设

  • 数据的权重相同

  • 某些算法默认数据的 std=1 mean=0

不适合情况

  • 类型不合适,类别变量

  • 压缩的数据,稀疏矩阵

什么数据适合标准化?

  • SVM RBF

  • L1 L2 规则化的线性模型

标准化后损失什么信息?

  • 原来的均值和标准差信息

  • 含有极端异常点的删u

标准化 [[Standardization]]

  • z-score 规范化

    • 将数值范围缩放到0附近, 但没有改变数据分布。

    • z=xμσz=\frac{x-\mu}{\sigma}

  • 对数据的分布的进行转换,使其符合某种分布(比如正态分布)的一种非线性特征变换

  • 消除数量级对于模型的影响。

  • 线性模型中,需要学习一条直线区分数据,将原始数据分布中心移动后,只是移动直线。不加正则的情况下。

什么时候需要标准化

  • 主要看模型是否具有伸缩不变性。

  • 有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行标准化,以免模型参数被分布范围较大或较小的数据dominate。

  • 有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如logistic regression。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛。所以对于具有伸缩不变性的模型,最好也进行数据标准化。


Spectral Networks and Deep Locally Connected Networks on Graphs

基于空域的卷积构建 Spatial Construction

  • 直接在原始图结构上执行卷积

    • 考虑 CNN 的空间局部性、多尺度特点

+ 方法

  + 按照什么条件去找中心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

  • 对图结构进行傅里叶变化,在谱域进行卷积。

  • youtput =σ(Ugθ(Λ)UTx)y_{\text {output }}=\sigma\left(U g_{\theta}(\Lambda) U^{T} x\right)

    • gθ(Λ)=diag(θi)g_{\theta}(\Lambda) = diag(\theta _i) 是卷积核
  • (fh)G=U(h^(λ1)h^(λn))UTf(f * h)_{G}=U\left(\begin{array}{lll}\hat{h}\left(\lambda_{1}\right) & & \\ & \ddots & \\ & & \hat{h}\left(\lambda_{n}\right)\end{array}\right) U^{T} f
    中间项变成卷积核 diag(θl)diag(\theta _l)

  • 问题

    • 卷积空间 局部性
      不好

    • 计算复杂度高,需要对拉普拉斯矩阵进行谱分解求解 U 以及 Ugθ(Λ)UTUg_{\theta}(\Lambda) U^{T} 的乘积

    • 每个卷积核需要 n 个参数


Static Covariate Encoders

静态协变量编码器 Static Covariate Encoders
ls-type:: annotation
hl-page:: 8
hl-color:: yellow
#card

  • 将静态特征集成到网络中,通过对上下文向量进行编码以调节时间动态。 integrate static features into the network, through encoding of context vectors to condition temporal dynamics.
    ls-type:: annotation
    hl-page:: 6
    hl-color:: yellow

使用单独的 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

具体实践可以参考


SuperMemo

创始人 [[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 打开网页,导入材料

    • PDF

      • Python 包 PyMuPDF

      • 使用脚本提取 pdf 文件中的大纲

      • sm 中使用导入网页的方法导入大纲,然后分割成多个卡片

      • 使用 split 命令分割 <p>

      • Learning-Add all to outstanding

Tasklist

Sleep Chart

资源


T-Learner

image.png

  • 训练模型方式 #card

    • 将控制组样本和干预组样本分别用于训练模型 M0M_0M1M_1 (Two,T 的由来),分别学习 M0(X)=E(YT=0,X)M_0(X) = E(Y|T=0,X)M1(X)=E(YT=1,X)M_1(X) = E(Y|T=1,X)
  • 如何预测 #card

    • 在预测时对于同一份样本分别经过 M0M_0M1M_1 ,最终的 CATE 估计为 τ^(x)i=M1(Xi)M0(Xi)\hat{\tau}(x)_i=M_1(X_i)-M_0(X_i)
  • 优点:#card

    • 对干预组 / 控制组样本分别建模,充分考虑了干预变量的影响。
  • 缺点:#card

    • 两个模型训练 bias 不一致,容易有累积误差

    • 干预组样本较少可能导致 M1M_1 过拟合,因此只能降低 M1M_1 的复杂度,这会导致 M1M1M2M_2 存在差异,影响最终的因果效果估计准度。

    • 对于拥有较多 ID 类特征,或者连续特征离散化,采用了 Embedding Layer,可以参考多任务学习的架构,共享底层 Embedding 参数,仅对上层 DNN 参数独立学习,这样可以利用控制组样本的信息。


TCN

  • TCN 中输入和输出可能有不同的宽度,c 图表示使用 11 卷积调整输入大小

    • 也可以直接通过 zero padding 来增加 channels

TCN = 1D FCN + causal convolutions

特点

  • 使用因果卷积,不会泄漏未来信息。

    • 论文中强调和 RNN 之类方法进行对比,所以要考虑因果。
  • 可以取任意长度的序列,并将其映射到相同长度的输出序列。

  • 引入 [[ResNet]] 和扩张卷积的组合可以将网络做深以及增加感受野。

细节

  • tcn 中没有 pooling 层

  • normalization 方法是 weight norm,更适合序列问题

增加感受野的方法

  • 更大的 kernel_size (增加参数,卷积核大效果差,卷积核过大会退化成一个全连接层)

  • [[空洞卷积]]

时序问题

    1. 输入和输出矩阵大小相同
    1. 不能使用没有发生时刻的信息,因果卷积

[[ETA 模型]] 实现

  • tf.nn.conv1d(input, filters, stride, padding, data_format='NWC', dilations=None, name=None)

TFT Interpretability Use Cases

以往基于 attention 进行神经网络解释的方法,侧重于用注意力权重对特定样本的解释。当前方法聚焦如何汇总整个数据集中的模式 #card

  • In contrast to other examples of attention-based interpretability [25, 12, 7] which zoom in on interesting but instance-specific examples, our methods focus on ways to aggregate the patterns across the entire dataset – extracting generalizable insights about temporal dynamics.
    ls-type:: annotation
    hl-page:: 17
    hl-color:: red

检查每个变量对预测的重要性 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 促销和公共假日比较重要

      • [:span]
        ls-type:: annotation
        hl-page:: 18
        hl-color:: yellow
  • 识别相似的持续模式 identify similar persistent patterns
    ls-type:: annotation
    hl-page:: 19
    hl-color:: red

    • id:: 64400143-1db4-4724-96fb-b0dcf203664a

可视化持续时序模式 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

    • LIME Local Interpretable Model-Agnostic Explanations 提供一种与模型无关的方法,使用可解释的模型和可解释的特征,局部达到和复杂模型相似的效果。
  • [[SHAP]] 从博弈论角度考虑,特征如何影响原始模型的预测值。

[[TFT 关键实验]]


Tabular Data

表格类数据模型 Ref1 #XXX


Tanh

f(z)=tanh(z)=ezezez+ezf(z)=tanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}}

图像

image.png


Temporal Fusion Decoder

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 的特征可以实现性能提升

    • [[@Enhancing the Locality and Breaking the Memory Bottleneck of Transformer on Time Series Forecasting]] single convolutional layer for locality enhancement
      ls-type:: annotation
      hl-page:: 10
      hl-color:: green
  • LSTM encoder-decoder

    • encoder 输入 ξ~tk:t\tilde{\boldsymbol{\xi}}_{t-k: t} 前 k 步特征

    • decoder 输入 ξ~t+1:t+τmax\tilde{\boldsymbol{\xi}}_{t+1: t+\tau_{\max }} 未来 tao 步特征

    • 由 encoder 和 decoder 生成的时序特征可表示为 ϕ(t,n){ϕ(t,k),,ϕ(t,τmax)}\phi(t, n) \in\left\{\boldsymbol{\phi}(t,-k), \ldots, \boldsymbol{\phi}\left(t, \tau_{\max }\right)\right\}

      • 其中 n 为位置索引
    • 时序特征输入到 TFD 前的在经过一次非线性变换

      • ϕ~(t,n)=LayerNorm(ξ~t+n+GLUϕ~(ϕ(t,n)))\tilde{\boldsymbol{\phi}}(t, n)=\operatorname{LayerNorm}\left(\tilde{\boldsymbol{\xi}}_{t+n}+\operatorname{GLU}_{\tilde{\phi}}(\boldsymbol{\phi}(t, n))\right)

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

  • θ(t,n)=GRNθ(ϕ~(t,n),ce)\boldsymbol{\theta}(t, n)=\operatorname{GRN}_\theta\left(\tilde{\boldsymbol{\phi}}(t, n), \boldsymbol{c}_e\right)

    • ce is a context vector from a static covariate encoder
      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 做解释

    • B(t)=\boldsymbol{B}(t)= InterpretableMultiHead (Θ(t),Θ(t),Θ(t))(\boldsymbol{\Theta}(t), \boldsymbol{\Theta}(t), \boldsymbol{\Theta}(t))
  • δ(t,n)=LayerNorm(θ(t,n)+GLUδ(β(t,n)))\boldsymbol{\delta}(t, n)=\operatorname{LayerNorm}\left(\boldsymbol{\theta}(t, n)+\operatorname{GLU}_\delta(\boldsymbol{\beta}(t, n))\right).

Position-wise Feed-forward Layer
ls-type:: annotation
hl-page:: 11
hl-color:: yellow
对自关注层的输出应用额外的非线性处理公式 #card

  • ψ(t,n)=GRNψ(δ(t,n))\boldsymbol{\psi}(t, n)=\operatorname{GRN}_\psi(\boldsymbol{\delta}(t, n))

  • ψ~(t,n)=LayerNorm(ϕ~(t,n)+GLUψ~(ψ(t,n)))\tilde{\boldsymbol{\psi}}(t, n)=\operatorname{LayerNorm}\left(\tilde{\boldsymbol{\phi}}(t, n)+\operatorname{GLU}_{\tilde{\psi}}(\boldsymbol{\psi}(t, n))\right)


TiddlyWiki

缺点

  • 适合多人编辑? 没有考虑过这个问题

  • 没有服务器,无法在线编辑? 自己部署

  • 数据无法导出?

  • 上次考虑 wiki 方案时最终因为无法支持 markdown 而被放弃,单文件天然不靠谱。

第三次 :-> 是这个世界上最后一个记得你的人,把你忘记,于是,你就真正的死去,整个宇宙都不再和你有关。

入门以及进阶手册 Grok TiddlyWiki — Build a deep, lasting understanding of TiddlyWiki

版本

See Also


Traffic Flow Forecasting

[[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 和 LSTM 对比

RNN 为了解决不定长输入,LSTM 的三个门结构为了解决标准 RNN 的梯度爆炸和长序列信息消失问题

硅谷谷主

  • [[self-attention]] 用句子中有所单词向量的加权和来代表某一个单词的向量。

Transformer 缺乏时间维度建模,通过 [[Positional Encoding]] 也和 LSTM 这种天然的时序网络有差距。

  • 缺乏时间维度建模导致深层 Transformer 编码器的每个位置输出都会很相似(每一层不断在上一层的基础上加权和)

Transformer 效果表现好建立在预训练的基础上,单独训练 Transformer 需要大量技巧

  • 编码器层数,attention head 数量,学习率,权重衰减

Transformer 是否适合时间序列预测

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

      • [[Informer]] 从实验结果来看,原生Informer的效果最差,原因也很简单,raw data除了大小没有什么时序的语义信息,对原始数据通过self-attention提取点对点的所谓correlation毫无意义。Informer中真正起了点儿作用的是对时间直接做些编码的部分,不过也作用有限。
    • [[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]]

  • 的泼墨佛给克呢 - 知乎 (zhihu.com)

    • 是真的,informer设计了一大堆花里胡哨的,看起来很有道理,实际上用起来真的不太行。#card

      • 而且我发现,他们这些transformer的模型,在ETT数据集(只有7个变量)上,d_model设置为512,都快赶上nlp领域常设的768了,这也太离谱了。

      • 按理说,只有7个变量,用这么大的模型(虽然层数较少)太扯了

    • 而且那个pyraformer是真的没啥特别突出的地方,不知道咋能中oral。。。#card

      • 我做过实验,就是在输出的时候把变量维度和时间维度统一拼接经过线性层,这样确实能效果好,

      • 我觉得他的效果有提升就是因为这个,但这样得到的线性层是非常非常大的,参数甚至比transformer本身都多,不知道有啥意义。。。最近他的代码开源了,可以看看他是怎么实现的


Transformer/why self-attention

通过计算复杂度、并行操作数、最长学习距离三个方面来对比 Transformer、CNN、RNN。

计算复杂度就是模型中浮点计算次数

CNN 中的最长学习距离是通过[[空洞卷积]]实现

  1. 训练效率低下,self-attention 可以并行计算。

  2. 长距依赖问题,self-attention 可以忽视不同 token 之间的距离。


Unsupervised Learning

核心思想

  • 大量无监督数据训练特征提取器

如何构建 ground truth

  • 代理任务生成标签

  • 代理任务生成监督信号,充当标签信息


UPlift Model

根据 [[营销人群四象限]],应该针对 TR 人群进行营销活动。

Uplift 干预和不干预的差值

  • 响应模型 Response Model,预测干预情况下用户是否购买

    •  Outcome =P( buy  treatment )\text { Outcome }=P(\text { buy } \mid \text { treatment })
  • uplift 通过干预和不干预的反事实来预估计算因果效应

    •  Lift =P( buy  treatment )P( buy  no treatment )\text { Lift }=P(\text { buy } \mid \text { treatment })-P(\text { buy } \mid \text { no treatment })

    • τ=Y(1)Y(0)\tau=Y(1)-Y(0)

  • 样本服从CIA ( [[Conditional Independence Assumption]] ) 条件独立假设

τ=Y(1)Y(0)\tau=Y(1)-Y(0) 通过随机对照实验收集数据:实验组全部干预,对照组都不干预。

  • 利用条件平均因果效应[[CATE]]来预估给定条件下用户群体的平均因果效应

    • τ=E[Y(1)Y(0)X]=E[Y(1)X]E[Y(0)X]=E[Y(1)T=1,X]E[Y(0)T=0,X]\begin{aligned} \tau & =E[Y(1)-Y(0) \mid X] \\ & =E[Y(1) \mid X]-E[Y(0) \mid X] \\ & =E[Y(1) \mid T=1, X]-E[Y(0) \mid T=0, X]\end{aligned}
  • 利用一个人群的条件平均因果效应去近似个体因果效应

核心问题

  • 混杂因素偏置 Confounding Bias

    • 干预机制导致选择偏差
  • 归纳偏置

    • CATE 干预打分-非干预打分差值

模型方案

image.png

  • 多目标 uplift 模型

image.png

[[Uplift Model 评估]] 不可能同时观察到同一个用户在不同干预策略下的响应,即使无法获取用户真实增量,无法用常规分类和回归问题的评估指标。

  • 通过划分十分位数来对齐实验组和对照组数据去进行间接评估

  • [[Qini curve]]

  • [[AUUC]]


VS Code/setting

软换行 :-> Editor:Word Wrap on 是打开换行
设置 git path

  • "git.path": "/mnt/workspace/shengxin/git"

Variable Selection Networks

变量选择网络 Variable Selection Networks
ls-type:: annotation
hl-page:: 7
hl-color:: yellow

image.png

  • 作用 :-> 每一个时间步选择相关的输入变量 select relevant input variables at each time step
    ls-type:: annotation
    hl-page:: 6
    hl-color:: yellow

  • ξ~t=j=1mχvχt(j)ξ~t(j)\tilde{\boldsymbol{\xi}}_t=\sum_{j=1}^{m_\chi} v_{\chi_t}^{(j)} \tilde{\boldsymbol{\xi}}_t^{(j)} #card

    • 时间点 t 有 mxm_x 个变量,类别变量和连续变量都转换成 dmodeld_{model} 维度

    • 非线性处理后特征 ξ~t(j)=GRNξ~(j)(ξt(j))\tilde{\boldsymbol{\xi}}_t^{(j)}=\operatorname{GRN}_{\tilde{\xi}(j)}\left(\boldsymbol{\xi}_t^{(j)}\right)

      • 变量有单独 GRN,所有时间步中共享

      • ξt(j)Rdmodel \boldsymbol{\xi}_t^{(j)} \in \mathbb{R}^{d_{\text {model }}},时间 t 第 j 个变量

  • #card 特征选择的权重 a vector of variable selection weights
    ls-type:: annotation
    hl-page:: 8
    hl-color:: yellow
    vχt=Softmax(GRNvχ(Ξt,cs))\boldsymbol{v}_{\chi_t}=\operatorname{Softmax}\left(\operatorname{GRN}_{v_\chi}\left(\boldsymbol{\Xi}_t, \boldsymbol{c}_s\right)\right)

    • 历史输入序列 Ξt=[ξt(1)T,,ξt(mχ)T]T\boldsymbol{\Xi}_t=\left[\boldsymbol{\xi}_t^{(1)^T}, \ldots, \boldsymbol{\xi}_t^{\left(m_\chi\right)^T}\right]^T

    • ξt(j)Rdmodel \boldsymbol{\xi}_t^{(j)} \in \mathbb{R}^{d_{\text {model }}} j-th varaible at time t

    • csc_s [[Static Covariate Encoders]] 结果

  • 针对静态、过去和未来输入,分别用 不同 的 VSN


Tweedie Loss

L(y^)L(\hat{y}) = :-> yy^1p1p+y^2p2p,1<p<2{ - y \frac{\hat{y}^{1-p}}{1-p} + \frac{\hat{y}^{2-p}}{2-p}, 1<p<2}
特点

  • 非高斯分布

  • y = 0,如果预测结果不为 0 ,会有损失

  • 应用场景

    • 奢侈品销售或者电商销售,大部分是浏览不购买,导致 0 处值非常大。

    • 如果正负样本比例差异大,但是数量充足还是可以训练。

      • 这是回归问题,取值是连续的……
    • 如果直接下采样,会破坏分布

    • 回到之前 回归问题使用什么损失函数由数据分布决定
      的问题,决定为什么会有这个损失函数

Question

  • 一般什么情况下使用 Tweedie Loss L(y^)L(\hat{y}) = :-> yy^1p1p+y^2p2p,1<p<2{ - y \frac{\hat{y}^{1-p}}{1-p} + \frac{\hat{y}^{2-p}}{2-p}, 1<p<2}
    ? #card
    • 奢侈品销售或者电商销售,大部分是浏览不购买,导致 0 处值非常大。

    • 如果直接下采样,会破坏分布

Ref


Web Traffic Time Series Forecasting 1st place solution

[[Feature Engineering]]

  • 局部特征

    • 当发现有一个趋势,希望趋势持续。自回归模型

    • 当发现一个流量高峰,高峰逐渐衰减。[[移动平均]]

    • 当发现节假日流量高,期望未来的节假日流量都会高。季节性

  • 全局特征

    • 按年、按月有很强的 [[自相关]]

      • y轴是自相关系数,90 天和 365 天的系数比较大

  • 具体实现:尽可能减少特征工程,通过模型发现和学习特征

    • 浏览量

      • 通过对数转换变成正态分布
    • 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

  • 数据采样(数据增强)

    • 600 天数据,固定训练样本长度 200 天,有 400 天可以做为起点。

模型

  • 为什么使用 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

  • [[SMAPE]] 解决预测值和真值都接近 0 的情况
1
2
3
epsilon = 0.1
summ = tf.maximum(tf.abs(true) + tf.abs(predicted) + epsilon, 0.5 + epsilon)
smape = tf.abs(predicted - true) / summ * 2.0

Reducing model variance

  • 使用不同种子训练 3 个模型,每次训练在 10500-11500 区间保存 10 个 checkpoints,最后预测合并。

    • 无法知道如何 early stopping
  • SGD averaging (ASGD) SGD + 动量

  • 相当于[[bagging]] 模型

Hyperparameter tuning

Ref


Weight Decay

θt+1=(1λ)θtαft(θt)\theta_{t+1}=(1-\lambda)\theta_t-\alpha \nabla f_t(\theta_t)

  • λ\lambda 是 weight decay 的系数 ,减少参数的值,调节模型复杂度对损失函数的影响

SGD 中权重衰减相当于加入一个 L2 regularization (对损失函数求导,然后化简)

  • [[L2 Regularization]] 的目的就是为了让权重衰减到更小的值,在一定程度上减少模型过拟合的问题

为什么能避免模型过拟合问题?

  • 过拟合模型的系数往往非常大,因为过拟合就是需要顾忌每一个点,最终形成的拟合函数波动很大,这意味着在某些小区间里的导数值非常大,也就是系数很大,通过正则化约束参数的范围使其不要太大,可以在一定程度上减少过拟合情况。

Ref


Word2Vec

Word2Vec 是 NLP 中一种通过语料库预训练[[Word Embedding]] 的方法。常见实现形式:

  • [[CBOW]] :<-> 根据上下文来预测下一个单词。

  • [[Skip-Gram]] :<-> 根据一个单词来预测上下文。
    CBoW 和 skip 对比

  • 训练速度 :-> Cbow 训练速度快

  • 训练效果(准确率):-> skip 准确率和生僻字预测效果好,每一词会经过 C 次调整,模型的训练机制会对向量的预测能力要求更高(1 predict n)
    参数更新

  • tjc=I(jc=jc)t_{j}^{c}=\mathbb{I}\left(j_{c}=j_{c}^{*}\right),即网络第 c 个输出的第 j 个分量对应于第 c 个真实的输出单词 $${word_{j^*_c}}$$时,它为 1;否则为0。定义:

  • ejc=Eujc=yjctjce_{j}^{c}=\frac{\partial E}{\partial u_{j}^{c}}=y_{j}^{c}-t_{j}^{c}

  • Ewj=c=1CEujc×ujcwj=c=1Cejch\frac{\partial E}{\partial \overrightarrow{\mathbf{w}}_{j}^{\prime}}=\sum_{c=1}^{C} \frac{\partial E}{\partial u_{j}^{c}} \times \frac{\partial u_{j}^{c}}{\partial \overrightarrow{\mathbf{w}}_{j}^{\prime}}=\sum_{c=1}^{C} e_{j}^{c} \overrightarrow{\mathbf{h}}

  • EH=Eh=c=1C(uch)TEuc\overrightarrow{\mathbf{E H}}=\frac{\partial E}{\partial \overrightarrow{\mathbf{h}}}=\sum_{c=1}^{C}\left(\frac{\partial \overrightarrow{\mathbf{u}}^{c}}{\partial \overrightarrow{\mathbf{h}}}\right)^{T} \frac{\partial E}{\partial \overrightarrow{\mathbf{u}}^{c}}

  • EH=c=1CWec=j=1VEIjwj\overrightarrow{\mathbf{E H}}=\sum_{c=1}^{C} \mathbf{W}^{\prime} \overrightarrow{\mathbf{e}}^{c}=\sum_{j=1}^{V} E I_{j} \overrightarrow{\mathbf{w}}_{j}^{\prime}

  • Ewk,i=Ehi×hiwk,i=EHi×xk\frac{\partial E}{\partial w_{k, i}}=\frac{\partial E}{\partial h_{i}} \times \frac{\partial h_{i}}{\partial w_{k, i}}=E H_{i} \times x_{k}

优化

  • [[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

  • 当需要计算某个单词的概率时,找到从根到这个单词所在叶节点的路径。然后按上面的方法计算概率,一直将概率相乘,得到这个单词的概率。

  • p(w)=j=1L(w)1σ(g(n(w,j+1)=ch(n(w,j)))×vn(w,j)h)p(w)=\prod_{j=1}^{L(w)-1} \sigma\left(g(n(w, j+1)=c h(n(w, j))) \times \overrightarrow{\mathbf{v}}_{n(w, j)}^{\prime} \cdot \overrightarrow{\mathbf{h}}\right)

  • g(...)g(...) 表示如果这个单词属于当前节点的左子树,为 1,反之为 -1。和上面的节点概率有关。

  • 词频高的节点离根节点较远,距离远参数数量就多,在训练过程中,低频词的路径上的参数能够得到更多的训练。

问题

  • 为什么在计算word similarity的时候,我们要用cosine distance,我们能够用其他距离吗?

    • 欧拉距离也可以,cos 自带归一化。
  • 在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]]

  • [[Word2Vect tf 实现]]

  • word_representation

  • nce-loss函数与Word2Vec实现 - 知乎

  • 稀疏词向量,用skip-gram还是cbow训练好? - 知乎

    • 使用 Skip-gram :一句话可能产生多个训练样本,对罕见词和罕见搭配更加友好

    • cbow 避免训练集膨胀,训练结果偏向常用词

  • [NLP] 秒懂词向量Word2vec的本质

    • Distributed Representations of Sentences and Documents

      • 贡献:在前人基础上提出更精简的语言模型(language model)框架并用于生成词向量,这个框架就是 Word2vec
    • Efficient estimation of word representations in vector space

      • 贡献:专门讲训练 Word2vec 中的两个trick:hierarchical softmax 和 negative sampling

      • 优点:Word2vec 开山之作,两篇论文均值得一读

      • 缺点:只见树木,不见森林和树叶,读完不得要义。

        • 这里『森林』指 word2vec 模型的理论基础——即 以神经网络形式表示的语言模型,『树叶』指具体的神经网络形式、理论推导、hierarchical softmax 的实现细节等等
    • Xin Rong word2vec Parameter Learning Explained


Wide&Deep

记忆能力:模型直接学习并利用历史数据中物品或特征的“共现频率”的能力。

  • 高频、常见的特征

泛化能力:模型传递特征的相关性,以及发掘稀疏甚至从未出现过的稀有特征与最终标签相关性的能力。

不应该进 DNN,进入 DNN 之后没有记忆性。

Wide 侧

  • 人工特征工程

    • 只输入已安装应用以及曝光应用

看Google如何实现Wide & Deep模型

  • 稀疏的类别/ID类特征,稀疏地存储、传输、运算,提升运算效率

    • Google在其著名的《Ad Click Prediction: a View from the Trenches》一文中提到,因为稀疏/稠密的区别,CNN中效果良好的Dropout技术,运用到CTR预估、推荐领域反而会恶化性能。

    • 即使有一些实数值特征,比如历史曝光次数、点击次数、CTR之类的,也往往通过bucket的方式,变成categorical特征,才喂进模型。

      • 连续特征归一化后,再分段,粗粒化,增强泛化能力。
    • [[Linear Regression]] 和 [[DNN]] 在底层还是线性模型,增强非线性

    • 标签y与特征x之间较少存在线性关系,而往往是分段的。

      • 点击率~历史曝光次数,曝光低可能点击,曝光高后可能不点击。
  • 单个特征表达能力弱、特征组合爆炸、分布不均匀导致受训程度不均匀的缺点

    • [[FTRL]] 快速预测

    • [[Parameter Server]]

    • TensorFlow Feature Column

  • 特征交叉

  • [[Feature Column]] 自动处理 missing value 和 OOV

    • FeatureColumn

    • DenseColumn

    • CategoricalColumn

    • Numeric Column 数值特征

    • Bucketized Column 数值特征转化为 categorical 特征

    • Categorical vocabulary column

      • 处理生僻字(Out-Of-Vocabulary, OOV) [[out of vocabulary]]

      • 填充符(Padding)

    • Weighted categorical column 解决上面没有权重的遗憾

    • Hashed categorical column 结果 tag 太多以及不知道一个分类下有多少 tag

    • Feature Cross 特征交叉

  • 共享 embedding matrix 「相同的 variable scope + 相同 variable name」

[[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, ……)

        • 特征权重默认为 1
      • tf.nn.embedding_lookup_sparse(params, sp_ids, sp_weights)

        • tf.nn.embedding_lookup_sparse - 知乎

        • 相同 id 取出权重后可以指定聚合方法

        • 一个 feature 有多个 <tag, value>

        • 实际使用 safe_embedding_lookup_sparse

        • embedding_lookup 区别

          • 处理离散特征只有一个取值的情况。无法处理多个 tag。
  • 如何实现两部分使用不同的优化器 group

    • TODO [[ETA 模型]] 实现

  • 特征

    • _CategoricalColumn

    • _WeightedCategoricalColumn

    • _DenseColumn

    • _EmbeddingColumn

[[Ref]]


Word Embedding

两种方法

  • Count-based

    • word frequency and co-occurrence matrix
  • Context-based

词向量常用方法

[[One-hot Encoding]] 维度灾难,样本稀疏

统计语言模型:通过统计词频计算一个句子在文本中出现的概率,以此确定哪个词序列的可能行更大。

  • [[Markov]]假设 n-gram 模型

  • 泛化能力差、模型计算复杂度高、没有解决文本本身的表征问题

[[NNLM]] 利用神经网络求解出每个词语的 Word Embedding

[[Word2Vec]] 考虑文本的上下文环境

[[GloVe]] svd 矩阵分解和 [[Word2Vec]] 上下文思想

Conxtextualized Word Embedding 每一个 word token 都给一个 embedding

[[ELMo]]

[[GPT]] 单向语言模型,生成式任务

[[BERT]]

常见 emebdding 方法对比


Word2Vec/Negative Sampling

NEG:负向样本太多,选取部分负样本来更新。可以作为 HS 的一种替代。

  • 词在集合中的频率,带权采样

    • 权重计算 :-> len(w)=count(w)uvocabcount(u)\operatorname{len}(w)=\frac{\operatorname{count}(w)}{\sum_{u \in \operatorname{vocab}} \operatorname{count}(u)}
    • 权重计算经验值 :-> len(w)=count(w)3/4uvocabcount(u)3/4\operatorname{len}(w)=\frac{\operatorname{count}(w)^{3 / 4}}{\sum_{u \in \text {vocab}} \operatorname{count}(u)^{3 / 4}}
  • 具体采样实现 #card

    • 负采样概率*1亿=单词在表中出现的次数。

    • 生成 0-1亿范围内的一个随机数,然后上面对应的序号

负采样的目标函数是一个经验公式。

E=logσ(wwOh)wjWneglogσ(wwjh)E=-\log \sigma\left(\overrightarrow{\mathbf{w}}^{\prime}_{w_{O}} \cdot \overrightarrow{\mathbf{h}}\right)-\sum_{w_{j} \in \mathcal{W}_{n e g}} \log \sigma\left(-\overrightarrow{\mathbf{w}}^{\prime}_{w_{j}} \cdot \overrightarrow{\mathbf{h}}\right)

wwO\overrightarrow{\mathbf{w}}^{\prime}_{w_{O}}:为真实的输出单词对应的输出向量

wwj\overrightarrow{\mathbf{w}}^{\prime}_{w_{j}}`:为负采样的单词对应的输出向量

作用:

    1. 加快模型计算
    1. 保证了模型训练的效果,其一模型每次只需要更新采样的词的权重,不用更新所有的权重,那样会很慢,其二中心词其实只跟它周围的词有关系,位置离着很远的词没有关系,也没必要同时训练更新。

X - Daily Process

Day Open 模板 #card

  • Gratitude 感激

  • Daily Tasks

  • Daily Journal

    • 深度工作标签 X - Curate

      • 番茄钟 + 记录需要在 25 分钟内完成的事情 + 结果
  • Reading

image.png

Day Close 模板 #card

  • First Thing 记录明天最重要的事情,做明天的 time box

image.png

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


XGBoost/Loss

训练损失

正则化损失包括 #card

  • 叶子节点个数 + 叶子节点权重的 L2 正则化
    为什么不用更高阶的正则约束 #card
    card-last-score:: 5
    card-repeats:: 1
    card-next-schedule:: 2023-08-26T01:53:50.014Z
    card-last-interval:: 4

  • 计算复杂度增加

  • 欠拟合

目标函数分裂推导

  • 优化目标、损失函数 :-> Obj=L=i=1nl(yi,y^i){Obj = L = \sum^{n}_{i=1}l(y_i,\hat y_i) }

    • 第 t 轮迭代目标 :-> Obj(t)=i=1nl(yi,y^it1+ft(xi)){Obj^{(t)} = \sum^{n}_{i=1}l(y_i,\hat y_i^{t-1} + f_t(x_i))}
  • 二阶泰勒展开公式 :-> f(x+Δx)f(x)+f(x)Δx+12f(x)Δx2{f(x+\Delta x) \approx f(x)+f'(x)\Delta x + \frac{1}{2}f''(x)\Delta x^2}

  • 带入化解:Obj(t)=i=1n[l(yi,y^it1)+gift(xi)+12hift(xi)2]{Obj^{(t)}=\sum^n_{i=1}[l(y_i,\hat y_i^{t-1})+ g_if_t(x_i) + \frac{1}{2} h_i f_t(x_i)^2]}

    • 树的维度,带入 ft(xi)=wj{f_t(x_i)=w_j}Obj(t)=j=1T[(iIjgi)wj+12(iIjhi)wi2]{Obj^{(t)} = \sum^T_{j=1}[ (\sum_{i \in I_j} g_i)w_j + \frac{1}{2} (\sum_{i \in I_j}h_i) w_i^2]}

    • Gj=iIjgi,Hj=iIjhi{G_j = \sum_{i \in I_j} g_i, H_j = \sum_{i \in I_j}h_i},可以得到 wj=GjHj{w_j = -\frac{G_j}{H_j}}

    • 目标函数化简为 Obj(t)=12j=1TGj2Hj{Obj^{(t)} = - \frac{1}{2} \sum^T_{j=1} \frac{G_j^2}{H_j}}

    • 树分裂 Gain=12[GL2HL+GR2HR(GL+GR)2HL+HR]{Gain = \frac{1}{2} [\frac{G_L^2}{H_L} + \frac{G_R^2}{H_R} - \frac{(G_L+G_R)^2}{H_L+H_R}]}

image.png
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTc0MjM5MDAwNDU1Nl8wLnBuZyI6eyJjb25maWciOnsiaGlkZUFsbFRlc3RPbmUiOnRydWV9LCJlbGVtZW50cyI6W3sibGVmdCI6NTIwLjA5OTAxMDQyMTM3MDQsInRvcCI6NTI4LjgwOTM4MTM3NTUxMSwid2lkdGgiOjc4NC4yMDM5MTU5NzM5MjIyLCJoZWlnaHQiOjc3LjYxODczOTYzNzExNDIzLCJhbmdsZSI6MCwiY0lkIjoxfSx7ImxlZnQiOjUwMy42MDA0ODQyMDQxNjU4NywidG9wIjo2NDMuMzA5Mzk4MTA5MDE3NSwid2lkdGgiOjY1My4xOTk4NzQ3NDE0NjA1LCJoZWlnaHQiOjg0LjYxODczNDU4MDk0NjQ3LCJhbmdsZSI6MCwiY0lkIjoyfSx7ImxlZnQiOjUwNS41OTkyNjM4MzE5ODY4LCJ0b3AiOjc3Ni4zMDkzOTM3NzUxNTk3LCJ3aWR0aCI6NjkzLjIwMjYwODkwODYzNzgsImhlaWdodCI6ODYuNjE4Nzc1NTExODI1NTYsImFuZ2xlIjowLCJjSWQiOjN9LHsibGVmdCI6NTA2LjE5ODI2MDkxNTk1NjE1LCJ0b3AiOjg5OC42MTg3OTEwNDE0ODI2LCJ3aWR0aCI6NjMyLjAwNDIxNDYxODY3MywiaGVpZ2h0Ijo3NC4wMDAwMDg5MDg0ODU0OCwiYW5nbGUiOjAsImNJZCI6NH0seyJsZWZ0Ijo2MTYuNjAwNDMwODU0NTYyMSwidG9wIjoyMTQuODA5MzYwNjY5MzAxNzgsIndpZHRoIjo0MTUuMTk5OTAxNDE2MjYyNywiaGVpZ2h0Ijo4NS42MTg3MDY0MTA4NzEwMywiYW5nbGUiOjAsImNJZCI6NX1dfX0=
xgboost如何使用MAE或MAPE作为目标函数? - 知乎

  • 利用可导函数逼近 #card
    • mse 在初始误差比较大时,loss 是平方会偏离目标

    • ln(cosh(x))以及 log(exp(-x) + exp(x))进行逼近

    • 利用 huber loss 逼近 mae

      • 使用可导逼近形式 Pseudo-Huber loss function 做为目标函数

        • Lδ(yi,y~i)=δ2(1+(y~iyiδ)21)L_{\delta}\left(y_{i}, \tilde{y}_{i}\right)=\delta^{2}\left(\sqrt{1+\left(\frac{\tilde{y}_{i}-y_{i}}{\delta}\right)^{2}}-1\right)

1
2
3
4
5
6
7
8
def huber_approx_obj(dtrain, preds):
d = preds -dtrain
h = 1 #h is delta in the formula
scale = 1 + (d / h) ** 2
scale_sqrt = np.sqrt(scale)
grad = d / scale_sqrt
hess = 1 / scale / scale_sqrt
return grad, hess

  • 自定义一个二阶导数值

XGBoost

效率优化

  • 并行

    • boosting 算法的弱学习器无法并行迭代,弱学习器迭代过程中最耗时的部分是决策树的分裂过程。

    • 在不同线程中并行选择特征最大增益的特征划分点

  • 内存优化

    • 对训练的每个特征排序并且以块的结构存储在内存中
  • 存储+IO

    • 合理设置块的大小,充分利用 CPU 缓存进行读取加速

    • 分块压缩并且存储到硬盘上,将分块分区到多个硬盘上实现更大的 io

效果优化

  • 缺失值处理

    • 首先忽略带缺失值的数据,像正常情况下一样将前两种数据分别计算并导流到左子树和右子树。
    • 然后计算带缺失值的数据导流向左右子树,计算两种方案下的Objective 情况,取得分最小的作为在这个节点的默认情况。
  • 树模型的正则项控制模型复杂度

    • 叶子节点个数 + 叶子节点权重的 L2 正则化

    • 采用预剪枝策略,只有分裂后增益大于 0 才会进行分裂

寻找最佳分裂点以及如何加速

  • 贪心算法 :-> 对特征值先排序,然后遍历所有可能分裂点计算分裂增益,取分裂增益最大的点,作为最优分裂点。
  • 近似算法 :-> 使用特征值的分位数作为候选分裂点,三分位数
    稀疏感知算法

[[XGBoost/Loss]]

[[XGBoost/booster]]

[[XGBoost/特征重要性]]

[[XGBoost/code]]

[[XGBoost/Question]]

k分类实现

  • 每一轮训练k棵树。

  • 第一轮用 (x,0), (x,1) 去训练树,x 在每一棵树上的预测结果求 softmax 得出分类概率,然后计算残差。

  • 第二轮用 (x,0-fi(x)), (x,1-fi(x)) 去训练树,和上面相同。

  • 利用最后一轮的结果的 softmax 结果。


X-Learner

[[X-Learner ppt]]
X-Learner 基于 T-Learner 而改进点 #card

  • 一是针对当干预组样本较少时 T-learner 预测不准,

  • 二是针对 S/T-Leaner 都不是直接预测因果效应。

image.png

  • 分为两个阶段:

  • X-Learner第一阶段#card

    • 和 T-Learner 一样,将控制组样本和干预组样本分别用于训练模型 M0M_0M1M_1

    • 分别学习 M0(X)=E(YT=0,X)M_0(X) = E(Y|T=0,X)M1(x)=E(YT=1,X)M_1(x) = E(Y|T=1,X)

  • X-Learner 第二阶段#card

    • 基于 和 M0M1M_0和M_1 分别交叉(X 的由来)预测干预组和控制组样本的反事实结果,与事实结果的差值就是样本的因果效应,此时就可以用控制组和干预组的样本分别训练 CATE 预估模型 Mτ0(X)M_{\tau0}(X)Mτ1(X)M_{\tau1}(X)

    • 最终的 CATE 估计是两者的融合 τ^(x)i=Mτ0(x)g(x)+Mτ1(x)(1g(x))\hat{\tau}(x)_i = M_{\tau0}(x)g(x) + M_{\tau1}(x)(1-g(x) ) ,对于权重函数 g(x)g(x) 一种选择是[[倾向性评分]]函数 e(x)e(x) ,当干预组样本量远大于控制组时也可以取 1 或 0。

    • 通过与实际结果差分计算增量

      • 用有干预模型预测无干预群体的有干预结果,无干预组近似增量 D0=μ^1(X0)Y0D_0=\hat{\mu}_1\left(X_0\right)-Y_0

      • 用无干预模型预测有干预群体的无干预结果,有干预组近似增量 D1=Y1μ^0(X1)D_1=Y_1-\hat{\mu}_0\left(X_1\right)

    • 根据增量建立两个模型,对增量建模可以引入相关先验知识提升模型精度

      • τ^0=f(X0,D0)\hat{\tau}_0=f\left(X_0, D_0\right)

      • τ^1=f(X1,D1)\hat{\tau}_1=f\left(X_1, D_1\right)

    • 引入 [[倾向性评分匹配]]PSM 加权得到最后提升评估结果

      • e(x)=P(W=1X=x)τ^(x)=e(x)τ^0(x)+(1e(x))τ^1(x)\begin{aligned} & e(x)=P(W=1 \mid X=x) \\ & \hat{\tau}(x)=e(x) \hat{\tau}_0(x)+(1-e(x)) \hat{\tau}_1(x)\end{aligned}
  • 优点#card

    • 适合实验组和对照组样本数量差别较大场景

    • 增量的先验知识可以参与建模,引入权重系数,减少误差

  • 缺点#card

    • 多模型造成误差累加

XGBoost/Question

如何理解 XGB 的延展性?

  • 基分类器 :-> CART决策树、LR 和 Linear

  • 目标函数 :-> 自定义 loss function,需要二阶可导

  • 学习方法 :-> block 结构支持并行化,支持 out-of-core 计算
    GBDT 和 XGboost 的区别

  • 算法本身优化

    • 学习器 :-> 支持更多弱学习器
    • 模型复杂度控制 :-> 损失函数加入正则化控制模型复杂度,代替原来的剪枝方法
    • 损失函数优化 :-> 对误差部分做二阶泰勒展开,更加准确
  • 运行效率优化

    • 特征预处理 :-> 对所有特征值进行排序分组
    • 对于分组特征 :-> 选择合适的分组大小,使用 CPU 缓存进行读取加速将各个分组保存到多个硬盘提高 IO 速度
    • 决策树建立过程 :-> 并行选择,找到合适的子树分裂特征和特征值
  • 算法鲁棒性

    • 缺失值处理 :-> 枚举所有缺失值在当前节点进入哪棵子树
    • 正则 :-> L1 和 L2 正则
      XGB 为什么要使用二阶导数?
  • 求解器 :-> 减少求解器的设计,其他损失函数泰勒展开之后最终的形式和 mse 不泰勒展开的形式是完全一致的。

  • 通用性 :-> 统一损失函数求导形式,可以自定义损失函数

  • 收敛 :-> 二阶导数能让梯度更快收敛

  • 计算量 :-> 可以使用打分函数,减少分裂子叶时的计算量
    如何选择用一种模型来替代 xgboost 模型,你会用什么?

[[机器学习知识体系汇总]] Xgboost

  • 你选择使用xgboost的原因是什么?#card

  • Xgboost和GBDT有什么异同?#card

  • 为什么xgboost训练会那么快,主要优化点事什么?#card

  • Xgboost是如何处理缺失值的?#card

    • 首先忽略带缺失值的数据,像正常情况下一样将前两种数据分别计算并导流到左子树和右子树。

    • 然后计算带缺失值的数据导流向左右子树,计算两种方案下的Objective 情况,取得分最小的作为在这个节点的默认情况。

  • Xgboost和lightGBM有哪些异同?#card

    • 算法本身

    • 运行效率

    • 鲁棒性

  • Xgboost为什么要使用泰勒展开式,解决什么问题?#card

  • Xgboost是如何寻找最优特征的?#card


XGBoost/booster

[[DART]]

  • 带 dropout 的树学习器

gblinear

  • 线性模型,迭代器增加再多对模型的收敛能力提升也不大

  • 数据高维稀疏的场景可以尝试使用

  • 利用 gbm 框架求解 linear,利用梯度提升方法代替梯度下降方法


XGBoost/特征重要性

XGBoost 中有什么方法可以评估特征重要性? #card

  • 通过整体分布产生随机特征,通过随机特征在特征重要性中的位置,筛除重要性不是非常明显的特征。

  • [[SHAP]]

特征重要性指标 get_score 方法

  • weight :-> 特征在树中作为划分属性的次数
  • gain :-> 特征作为划分属性时, loss 平均的降低量
  • cover :-> 特征作为划分属性时,对样本的覆盖度
    • 覆盖度指特征用作分割点后影响的 :-> 样本数量,即多少样本经过特征分割到两个子节点

Xavier Initialization

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]] 解决

Ref


YJango@万字科普ChatGPT-4为什么会颠覆人类社会

记忆和泛化

[[In-Context Learning]] 语境内学习

  • 理解指令

  • 理解例子

思维链

  • 代码训练

  • 拆分问题,分布思考

[[Reinforcement Learning from Human Feedback]]

  • 根据人类对它生成答案的好坏评分来调节模型,引导它生成人类认可的创意回答。

人类群体通过语言处理来实现「知识的创造、继承和应用」

教育模式影响

  • 大语言模型创新和更高层次创新

培养终生学习能力


Z-Note

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 就代表你有多少综合的知识。


ZSA Keyboard Lighting

第一部分

  • Animation speed 调整灯光动画的速度

  • Brightness 调整灯光

image.png

第二部分

  • Hue 调整不同颜色

  • Saturation

  • Set color 设置成指定颜色

  • Switch animation 切换不同的灯光动画

  • Toggle layer colors 打开或关闭 layer 的灯光,关闭之后如果有灯光动画,就走灯光动画。

  • Toggle lighting 打开或关闭灯光,关闭后,layer 灯光不受影响。

image.png

Ref


bidding

为什么需要有出价 #card

  • 因为在广告场景中引入了广告主 (advertiser) 这一角色, 出价则是提供了一种方式供广告主表达其对付费诉求,即对一次曝光 / 点击 / 转化愿意付多少钱。

  • 其次,广告平台往往需要提供多种产品形态来满足广告主的各种需求,如最常见的是保成本类产品、还有一些更追求跑量、品牌广告则是对保量有严格的要求;针对这些不同的产品形态,基本上最终的策略都落在了出价上。因为在基于 ecpm 排序的广告系统中,基本上能比较灵活地改动的就是 bid 这个因素了

而针对上面各种产品需求,其实都是可以通过相同的最优化建模的方式来解决的,阿里之前发表过一篇 paper 来描述这个问题,对于出价公式的推导和控制器的构建都有较好的指导意义;#card

  • [[@Bid Optimization by Multivariable Control in Display Advertising]]

先看 bid,直观上看就是竞价流量的 bid 平均水位,对于大部分的 oCPX 广告,这里的 bid 也往往是广告主的平均出价水位(nobid 类产品没有广告主出价,但是 bid 也能一定程度上反映广告主的预算),系统不能在广告主的 bid 基础上无约束地提,因为广告主的出价表达了其对转化成本的预期,如果一个劲儿地提 bid,成本是没法很好地保证的,所以这里的 bid 基本上能理解为 “广告主在某个媒体平台上愿意为一个转化出的价格”,而影响广告主出的 bid 高低有很多,这里重点讲以下 2 个因素:

  • (1)广告主的生意模式:一个比较关键的因素是转化对于广告主而言有没有除了这个转化以外的价值#card

    • 一般的白牌商家的预算都属于纯效果预算,都是有比较严格的 roi 的考核的,这种情况下广告主愿意出的价格在各个媒体上也是比较固定的,与之相反的是纯品牌预算,即对转化基本没有太多考核,像 gd 很多时候就是在溢价买流量,这个时候广告主会根据平台的影响力,或者说流量价值来出价;

    • 而实际中,很多预算其实是介于纯效果预算和纯品牌预算之间的,所以广告主的出价的时候也会根据平台的转化是否能带来外溢价值,来对出价做相应的调整; 如广告主在小红书等种草平台是能接受赞藏、加粉等成本,比抖音、快手等竞品要更高,因为在广告主心里会认为这些种草平台的一个转化能够带来更多外溢价值

  • (2)平台的竞争激烈程度:即广告主能否在平台上卷起来#card

    • 在一个媒体平台上,如果竞争不够激烈,如最极端情况下只有一个广告主,那转化的定价权基本上就掌握在广告主的手里(而这也是广告主生态需要解决的问题之一);当广告主数量变多后,蓝海变成红海,广告主在总体 roi 还是为正的前提下,还是有动力降低自己的利润、在平台提升转化出价的成本来做营销的

    • 所以,假设广告主出价是理性的,那要提高公式里的 bid,平台长期要做的就是提升其流量价值(比较虚的概念,与市场认可度与声量相关),满足更多广告主的营销诉求,引入更多的广告主进入平台,营造一个良性的竞争环境,这部分主要上面提到的第 3 部分即客户产品来承当,当然也会涉及到第 1 部分(如 ctr、cvr 预估准确性)第 2 部分(如流量策略影响广告主生态)


bingo hong@时间序列预测方法总结

时间序列问题难点

  • 理解时间序列预测问题是要用历史数据预测未来数据

  • 时间序列问题的训练集、测试集划分

  • 特征工程方法及过程(方法2的过程很有趣)

  • 如何转化为监督学习数据集

  • LSTM计算过程理解,包括输入输出维度、参数数量等

  • seq2seq过程的理解,decoder实现

  • attention注意力机制的原理及实现,包括encoder-decoder attention, self attention, multi-head attention等

  • 时间卷积网络的含义,顾名思义就是将CNN方法用于时间序列中,主要是dilated-convolution and causal-convolution

  • prophet预测原理,各参数对模型拟合效果、泛化效果的影响

  • TPA侧重选择关键变量

  • 时间序列基本规则法中周期因子得计算过程

  • 传统方法如周期因子、线性回归、ARMA等的预测结果表现为,预测趋势大致正确,但对波动预测不理想,体现在波动的幅度差异、相位偏移。

  • 时间序列分解方法。理解加法模型和乘法模型,判断分解模型的选取及分解技巧


chyixian

日本留学文科博士

[[@文科博士是怎样读书的]]

[[@如何保持创造力?–「观心笔记」]]

[[My workflow- 一个文科博士生的资料管理、阅读和笔记系统-基于 DEVONthink 3,Obsidian/]]

微信读书笔记导出后,做详细笔记


dataloader

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 如何处理每一行数据

Ref


competitive programming

Competitive Programming(CP) 指竞赛性编程。与面向工程的程序设计不同,CP追求的是在一定的时间内,实现一定的算法和数据结构,以解决某一特定的、可能并不具有现实意义的问题。
定义来源于 CP Wiki

基础

  • [[二分搜索]]

    • 它的基本思想是,对于一个在某种意义上有序的数组,这个数组的前半部分满足某一条件,而后半部分不满足这一条件,我们不断选择区间中点,判断其是否满足条件,从而将区间不断折半,最后就可以找到数组中的转折点,也即满足这一条件的最后一个点,或不满足这个条件的第一个点。
  • [[三分搜索]]

    • 三分查找则是针对数组或范围满足单峰或单谷的特性,即可能是先递增后递减,或先递减后递增。

数学

  • [[Number Theory]]

    • [[欧几里得算法]]

    • [[费马小定理]]

    • [[乘法逆元]]

  • [[组合数学]]

字符串

[[Dynamic Programming]]

[[Graph Theory]]

[[Data structure]]

See Also

Ref


exposure bias

问题背景 #card

  • 针对的问题是只有被曝光的样本才能进入训练集,导致 training 阶段能获取到的样本只是 serving 时很小的一部分

解决方法

  • Augmentation、IPS 和 Domain Adaption

在召回上被简化成[[负样本]]选择问题 [[双塔模型样本选择]] [[SENET]]

  • 曝光未点击数据 #card

    • 这就是上面说的导致 Sample Selection Bias 问题的原因。我们的经验是,这个数据还是需要的,只是要和其它类型的负例选择方法,按照一定比例进行混合,来缓解 Sample Selection Bias 问题。当然,有些结论貌似是不用这个数据,所以用还是不用,可能跟应用场景有关。
  • 全局随机选择负样本#card

    • 就是说在原始的全局物料库里,随机抽取做为召回或者粗排的负例。这也是一种做法,Youtube DNN 双塔模型就是这么做的。从道理上讲,这个肯定是完全符合输入数据的分布一致性的,但是,一般这么选择的负例,因为和正例差异太大,导致模型太好区分正例和负例,所以模型能学到多少知识是成问题的。
  • Batch 内随机选择负样本 #card

    • 就是说只包含正例,训练的时候,在 Batch 内,选择除了正例之外的其它 Item,做为负例。这个本质上是:给定用户,在所有其它用户的正例里进行随机选择,构造负例。它在一定程度上,也可以解决 Sample Selection Bias 问题。比如 Google 的双塔召回模型,就是用的这种负例方法。
  • 选择 4: 曝光数据随机选择负例 #card

    • 就是说,在给所有用户曝光的数据里,随机选择做为负例。这个我们测试过,在某些场景下是有效的。
  • 选择 5: 基于 Popularity 随机选择负例 #card

    • 这种方法的做法是:全局随机选择,但是越是流行的 Item,越大概率会被选择作为负例。目前不少研究证明了,负例采取 Popularity-based 方法,对于效果有明显的正面影响。它隐含的假设是:如果一个例子越流行,那么它没有被用户点过看过,说明更大概率,对当前的用户来说,它是一个真实的负例。同时,这种方法还会打压流行 Item,增加模型个性化程度。
  • 选择 6: 基于 Hard 选择负例#card

    • 它是选择那些比较难的例子,做为负例。因为难区分的例子,很明显给模型带来的 loss 和信息含量比价多,所以从道理上讲是很合理的。但是怎样算是难的例子,可能有不同的做法,有些还跟应用有关。比如 Airbnb,还有不少工作,都是在想办法筛选 Hard 负例上。

#card 我们在模型召回阶段的经验是:比如在 19 年年中左右,我们尝试过选择 1 + 选择 3 的混合方法,就是一定比例的 “曝光未点击” 和一定比例的类似 Batch 内随机的方法构造负例,当时在 FM 召回取得了明显的效果提升。但是在后面做双塔模型的时候,貌似这种方法又未能做出明显效果。

  • 全局随机,则无论是 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


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


hls__PRML Note 前十一章_2023_淡蓝小点

[: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__科学研究与论文写作_2020_钟澄

同义词库的构造
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


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

  • [[Bayesian Online Learning]]

how to read a paper

[[标记分类]] 不要想着直接抄袭其他人的方案,自己去探索,如果都不知道怎么做,那么从最简单开始,可以从 [[@Elftmann Highlighting]] 获得参考吗?

  • 黄色:重点

  • 红色:疑问

根据文章结构去阅读

  • 引言

    • 提出什么问题

    • 前人的工作

    • 自己工作如何解决上面提到的问题

  • [[Introduction]]

  • 相关工作

    • 别人的工作

    • 你和他们的区别

  • 结论


hls__DeeprETA_2022_Hu

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

  • 路线不确定

  • 人为失误:开错路

  • 分布偏移:不同任务到达时间分布不同

    • Empirical arrival time distributions differ markedly across different tasks
      ls-type:: annotation
      hl-page:: 1
      hl-color:: yellow
  • 预估形式不确定:不同业务对 ETA 诉求不同,比如预估价需要平均 ETA,用户可能需要 ETA 分布或者期望

    • Uncertainty estimation. Different ETA use cases call for distinct point estimates of the predictive distribution.
      ls-type:: annotation
      hl-page:: 1
      hl-color:: yellow
      We take a hybrid approach, termed ETA post-processing, that treats the routing engine ETA as a noisy estimate of the true arrival time. We use a deep residual ETA network, referred to as DeeprETANet, to predict the difference between the routing engine ETA and the observed arrival time.
      ls-type:: annotation
      hl-page:: 1
      hl-color:: yellow
  • 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
      相关工作
  • 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

      • LSTM
    • [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

    • [[@Learning to Estimate the Travel Time]]

Routing Engine ETA

  • The begin and end location neighborhoods of a request account for a large proportion of noise.
    ls-type:: annotation
    hl-page:: 2
    hl-color:: yellow
    • 上下车点偏差带来 RE-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

    • 数据分布倾斜以及长尾

      • [:span]
        ls-type:: annotation
        hl-page:: 3
        hl-color:: yellow
    • Log-transformation is usually used for normalizing skewed data distribution. 通常使用对数变换来处理这个问题
      hl-page:: 3
      ls-type:: annotation

      • transforming the log-scale prediction back to the original scale by exponentiation usually results in some extreme values, which may affect user experience. 预测结果需要经过 exp 还原,可能产生异常值
        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

      • asymmetric Huber loss function

  • Secondly, heterogeneity of data is due to multiple trip/request types;
    ls-type:: annotation
    hl-page:: 3
    hl-color:: green

    • 网约车 ETA 和 配送 ETA 分布不一致(数据异构性)

      • [:span]
        ls-type:: annotation
        hl-page:: 3
        hl-color:: yellow
    • 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

    • 低延迟

DeeprETA Post-Processing System

  • [:span]
    hl-type:: area
    hl-stamp:: 1675210539620
    hl-page:: 4
    ls-type:: annotation
  • an Embedding module

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
+ ek=Ek[H(xk)]\boldsymbol{e}_k=E_k\left[H\left(x_k\right)\right]

      + 为什么这么做?

        + 唯一字符串表示地理信息,然后再对字符串做 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\}$,多种大小的格子,减少数据稀疏性影响
  • a Two-layer Module

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 限制预测值范围

5 MODEL TRAINING AND SERVING

ls-type:: annotation
hl-page:: 6
hl-color:: yellow

  • 不同类型 ETA 任务需要用不同的指标来评估

    • when ETA is used for calculating fares, mean ETA error is important
      hl-page:: 6
      ls-type:: annotation
    • evaluating delivery ETA requests, not only the mean absolute ETA error, but also the 95th quantile is important.
      ls-type:: annotation
      hl-page:: 6
      hl-color:: green
  • asymmetric Huber loss function

    • 对异常值鲁棒性更好,可以平衡多种常用的点估计指标

    • L(ω,δ,Θ;(q,y0),y)={ωL(δ,Θ;(q,y0),y),y<y^(1ω)L(δ,Θ;(q,y0),y),yy^\mathcal{L}\left(\omega, \delta, \Theta ;\left(\boldsymbol{q}, y_0\right), y\right)= \begin{cases}\omega \mathcal{L}\left(\delta, \Theta ;\left(\boldsymbol{q}, y_0\right), y\right), & y<\hat{y} \\ (1-\omega) \mathcal{L}\left(\delta, \Theta ;\left(\boldsymbol{q}, y_0\right), y\right), & y \geq \hat{y}\end{cases}

      • L(δ,Θ;(q,y0),y)={12(yy^)2,yy^<δδyy^12δ2,yy^δ\mathcal{L}\left(\delta, \Theta ;\left(\boldsymbol{q}, y_0\right), y\right)= \begin{cases}\frac{1}{2}(y-\hat{y})^2, & |y-\hat{y}|<\delta \\ \delta|y-\hat{y}|-\frac{1}{2} \delta^2, & |y-\hat{y}| \geq \delta\end{cases}

        • ω[0,1],δ>0\omega \in[0,1], \delta>0 分别控制对高低估倾向以及异常值的容忍程度

          • that control the degree of robustness to outliers and the degree of asymmetry respectively.
            hl-page:: 6
            ls-type:: annotation

          • δ\delta 越大,对异常值越不敏感

          • 低估和高估有不同的权重(对业务影响不同)

        • Θ\Theta 代表模型参数

    • 优点:模拟其他回归损失函数以及使点估计满足多样性的业务指标

      • These parameters not only make it possible to mimic other commonly used regression loss functions, but also make it possible to tailor the point estimate produced by the model to meet diverse business goals.
        ls-type:: annotation
        hl-page:: 6
        hl-color:: yellow
  • 每周训练模型

6 EXPERIMENTS

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

      • 变形

        • One variant is without feature hashing, i.e. simply using the geohash function and indexing the geohash string. 无 feature hashing
          hl-page:: 6
          ls-type:: annotation
        • The other variant is without the calibration layer 无校准层
          hl-page:: 6
          ls-type:: annotation
  • 评估指标

    • mean absolute error (MAE), 50th percentile absolute error (p50 error) and 95th percentile absolute error (p95 error
      ls-type:: annotation
      hl-page:: 7
      hl-color:: red
  • 数据集

    • The dataset consists of global ETA requests from Uber’s platform. The global data has two types of requests, one is ride-hailing and the other is eats delivery.
      ls-type:: annotation
      hl-page:: 7
      hl-color:: red
    • 14 天数据
  • 离线实验

    • p95 error 模型有无 feature hashing 表现相似,地理信息可能在典型 case 上有提升,但是不能改善极端错误

      • For the p95 error, DeeprETANet with and without feature hashing has similar performance. This result indicates that richer geospatial embeddings improve performance in typical cases but may not improve extreme errors
        ls-type:: annotation
        hl-page:: 7
        hl-color:: green
    • w/o calibration 层效果比 restnet 等方法差

    • 对数据采样,分析 RE-ETA 残差和模型 ETA 残差

      • We can also see the difference before and after DeeprETA post-processing from Figure 7, which visualize the bivariate distribution of the RE-ETA residual and the predicted ETA residual on a 1% sampled data. Although rides and delivery requests have quite different residual distributions, after post-processing the mean residual is closer to 0.
        ls-type:: annotation
        hl-page:: 7
        hl-color:: green
  • 6.5 Online experiments 在线实验
    ls-type:: annotation
    hl-page:: 8
    hl-color:: yellow

    • The median latency is 3.25ms and the 95th percentile is 4ms.
      ls-type:: annotation
      hl-page:: 8
      hl-color:: green
  • 6.6 Embedding Analysis
    ls-type:: annotation
    hl-page:: 8
    hl-color:: yellow

    • [[t-SNE]]

    • 1 temporal embedding

      • 深色 weekend 浅色 weekday

      • minute-of-week embedding 具有局部连续性,没有明确的周末或工作日效应

        • local continuity
          ls-type:: annotation
          hl-page:: 8
          hl-color:: green
      • 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 的表示部分相似

        • Similar locations are represented by similar positions in two-dimensional space. Interestingly, the high speed locations of rides and delivery requests do not all overlap.
          ls-type:: annotation
          hl-page:: 8
          hl-color:: green
      • [: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+模型)的任务都可以尝试使用这种方法提升效果

    • one of the benefits of our hybrid approach is that it is decoupled from the details of any particular routing engine implementation, and we expect that teams using other routing engines will be able to achieve similar accuracy improvements using our method.
      ls-type:: annotation
      hl-page:: 9
      hl-color:: yellow
      解决不同类型 ETA 数据异制性
  • 请求类型编码放到模型中学习

    • One is to embed request types for learning the interaction between the type features and others via the interaction layer.
      ls-type:: annotation
      hl-page:: 5
      hl-color:: yellow
  • 校准层,每个类型 ETA 都有一个 bias

    • The other way is through a calibration layer. The calibration layer consists of a fully connected layer and some bias parameters for each request type.
      ls-type:: annotation
      hl-page:: 5
      hl-color:: yellow

[:span]
ls-type:: annotation
hl-page:: 7
hl-color:: yellow


inductive bias

先验知识以及假设

  • 算法对学习问题做的假设

归纳偏置

  • 归纳和演绎 induction deduction

  • 从一些例子中寻找共性、泛化,形成一个比较通过的规则的过程

  • 偏置代表对模型的偏好

  • 用规则约束模型,从而起到模型选择

    • 将无限可能的目标函数约束在一个有限的类别假设中

    • 近似损失 + 估计损失(更宽松的假设会增大这个损失)

常见的例子

  • [[奥卡姆剃刀]] :-> 希望学习到的模型复杂度更低

  • [[KNN]] :-> 特征空间中相邻的样本倾向于属于同一类

  • SVM 好的分类器 应该 最大化类别边界距离

  • [[RNN]] :-> 每一个时刻的计算依赖历史计算结果

    • sequentiality

    • time invariance

      • 序列顺序上的 timesteps 有联系
    • 时间变换不变性

      • 权重共享
  • 双向 RNN

    • RNN 假设当前输入和之前的输入有关系,双 RNN 假设当前输入和之前、之后的输入都有关系
  • [[DNN]] :-> 信息应该逐级加工,层层抽象

  • [[CNN]] :-> 信息具有空间局部性,滑动卷积共享权重方式降低参数空间

    • locality

    • spatial invariance

      • 空间相近的 grid elements 有联系而远的没有
    • 空间变换不变性 translation invariant

      • kernel 权重共享
  • [[GNN]] 连接不变性

  • [[Attention]]

  • [[Word2Vec]] :-> A word’s meaning is given by the words that frequently appear close-by.

    • 结构相似性

    • 例子:猫和狗在语料中没有同时出现,但是他们的上下文完全一致,所以最终 embedding 相似。

      • 我有一只猫。

      • 我有一只狗。


logseq-anki-sync

挖空卡片

  • 使用 {{}} 包围需要挖空的内容

  • {{ 之前需要有一个空格,适合英文,中文看起来比较奇怪。

带公式或代码的填空

1
2
3
replacecloze:: " '\sqrt{ a^{2}+b^{2} }' "
The Pythagorean theorem is
$$c=\sqrt{ a^{2}+b^{2} }$$

Making multiline cards · debanjandhar12/logseq-anki-sync · Discussion #88

  • 多行卡片,父节点打上 card 标签

image.png

  • 多行增量卡片,父节点打上 incrementalcard 标签,实现复习时遮盖一行展示其他行。

image.png

  • 指定卡片方向卡片,分别用 #forward(默认卡片方向), #reversed#bidirectional 标签;或者使用 direction property direction:: ->direction:: <-direction:: <->

image.png

  • #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 : < - >
  • 类似于 [[Remnote]] 中的卡片功能

logseq/query

基础

query-table:: false
query-properties:: [:title :tags]

  • ``

  • ``

advanced query

  • 获取包含 #Paper 标记笔记中的所有 todo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{{< logseq/orgQUERY >}}{:title [:h2 "Doing"]
:query [:find (pull ?b [*])
:where
[?p :block/name]
; 取page的page-properties
[?p :block/properties ?prop]
; 取page-properties中“publication-title:: value1, value1, value3”的值
; 即: 取出列表“value1, value1, value3”
[(get ?prop :tags) ?v]
[(contains? ?v "Paper")]
[?b :block/page ?p]
[?b :block/marker ?m]
[(= ?m "TODO")]
]
}
{{< / logseq/orgQUERY >}}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{{< logseq/orgQUERY >}}; 以下注释是我查找网上文章结合自己的理解,不一定对
; '?xxx' 表示一个变量
; '$' 表示数据库
; ':xxx' 表示字段和查询关键字
{:title [:h2 "Todo"]
:query [:find (pull ?b [*]) ;找到所有符合条件的条目,'*' 表示条目的所有字段
:in $ ?category ;'?category' 就是通过 'inputs' 传过来的变量
:where
[?b :block/ref-pages ?p] ;条件语句用 '[]' 表示,?p 是什么下面会说明
[?p :block/properties ?pr] ;?p 是包含了 properties 为 ?pr 的页面,?pr 是什么,下面会说明
[(get ?pr :category) ?t] ; get 是获取 object 的属性,并将它设置为 ?t
[(contains? ?t ?category)]; contains?(注意'?'在后面)表示 predict,也就是符合特定条件
(not [?b :block/marker ?m]); not [xxx] 表示对 [xxx] 的结果取反
]
:inputs ["Programming"] ; 传入一个参数
}
{{< / logseq/orgQUERY >}}
+ 找到标记为 TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{{< logseq/orgQUERY >}}{:title [:h2 "Doing"]
:query [:find (pull ?b [*])
:in $ ?category
:where
[?b :block/marker ?m]
[(= ?m "TODO")]
[?b :block/ref-pages ?p]
[?p :block/properties ?pr]
[(get ?pr :category) ?t]
[(contains? ?t ?category)]
]
:inputs ["Programming"]
}
{{< / logseq/orgQUERY >}}

Ref


logseq/tips

同步

  • 自带 git 同步会导致卡顿,可以使用插件市场的 git 插件手动同步。

笔记指定 type,通过 query 语法聚集不同的 type 的笔记,生成例如论文阅读清单之类的。

  • [[Book]]

  • [[Paper]]

  • [[People]]


long-tailed

常用解决方法

  • 重采样 re-sampling

    • 过采样 oversampling,增加数量少的类别样本

      • 增加正样本使得正负样本数目接近

      • 原始正类之间插值来生成额外的正类

    • 欠采样 undersampling,剔除一些数量多的类别样本

      • 去除负样本使得正负样本数目接近

      • 将负样本划分成多个集合供不同的学习器使用

  • 数据合成

    • 样本增加高斯噪声 data smoothing

    • SMOTE

      • 随机选取一个正样本,然后用 k 近邻选取一个与其最相似的样本,取两个样本中值或者均值,作为新样本。
  • 重加权 re-weighting

    • 通过样本权重或者 loss 权重给数量多的类别降权,给数量少的类别加权。

    • [[F1 Reweight Loss]] 调节二分类模型 recall/precision 相对权重的损失函数

      • [[F1 Score]]

      • F_beta

        • Fβ=(1+β2) precision  recall (β2 precision )+ recall F_\beta=\left(1+\beta^2\right) \cdot \frac{\text { precision } \cdot \text { recall }}{\left(\beta^2 \cdot \text { precision }\right)+\text { recall }}
      • β\beta 大于 1,重 recall,小于 1 关注准确

  • 增加辅助任务

    • 引入自监督对比学习
  • 迁移学习 tranzsfer learning

  • 度量学习 metric learning

  • 阈值移动 threshold-moving

    • 二分类中将 0.1 当成是正样本

      • 模型倾向于样本多的部分
    • 再缩放 rescalling

  • 模型融合

    • 0.1 正样本,0.9 负样本,负样本拆成 9 份。利用负样本和正样本训练 9 个模型,加权得到最后的结果

分类机器学习中,某一标签占比太大(标签稀疏),如何学习? - 知乎 (zhihu.com)

  • 难易样本不均衡还是正负样本不均衡

    • [[Focal Loss]] 针对困难样本,标签稀疏不一定是困难样本。

password

破译密码的复杂度主要在于密码的长度,包括我在内的大部分人很难记住上百个不同密码。这时候推荐使用密码软件:自动生成长密码,网页和 App 自动填充。当然,如果密码软件泄漏,完全没有办法。

我使用过的密码软件有:

  • LastPass:比较简单,只使用过 chrome 插件功能。

  • 1PassWord:全平台,ui 美观,功能强大。除了能保存密码外,还能保存一些简单的笔记。~~目前主力使用,~~贵的东西除了贵就没有其他缺点了。

  • [[Bitwarden]] 基础功能免费 + 高级功能收费(2FA) 。官方提供 docker 镜像,可以私有化部署,该版本解锁全部会员功能。

    • 提供 iOS、Mac、Chrome 端
  • 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 中不知道如何解决


on-demand food delivery

派单策略

  • 召回距离

  • 派单距离

  • 拼单上限

难点

  • 出餐时间如何预估?

  • 多任务学习

配送 ETA 分类

image.png

分单挑战

image.png

配送 ETA 和出行 ETA 对比

  • 为什么配送 ETA 是从用户下单到送达,出行 ETA 是从起点到终点的时间?为什么出行不预估从发单到到达终点的时间?

    • 骑手数量供给远大于网约车司机

TODO 配送相关主题阅读 #XXX

image.png


ordinal regression

五分类例子

  • 模型输出 z 后经过 sigmoid f(z)=11+exp(z)(0,1.0)f(z)=\frac{1}{1+exp(-z)} \in (0, 1.0)

  • 五分类相当于在 fz 的空间上找到 4 个切分点,用 P(x<θ1),P(θ1<x<θ2),P(θ2<x<θ3),P(θ3<x<θ4),P(θ4<x<+)P\left(x<\theta_{1}\right), P\left(\theta_{1}<x<\theta_{2}\right), P\left(\theta_{2}<x<\theta_{3}\right), P\left(\theta_{3}<x<\theta_{4}\right), P\left(\theta_{4}<x<+\infty\right) 表示 x分别属于 5 个级的概率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class OrdinalRegressionLoss(nn.Module):

def __init__(self, num_class, train_cutpoints=False, scale=20.0):
super().__init__()
self.num_classes = num_class
num_cutpoints = self.num_classes - 1
self.cutpoints = torch.arange(num_cutpoints).float()*scale/(num_class-2) - scale / 2
self.cutpoints = nn.Parameter(self.cutpoints)
if not train_cutpoints:
self.cutpoints.requires_grad_(False)

def forward(self, pred, label):
sigmoids = torch.sigmoid(self.cutpoints - pred)
link_mat = sigmoids[:, 1:] - sigmoids[:, :-1]
link_mat = torch.cat((
sigmoids[:, [0]],
link_mat,
(1 - sigmoids[:, [-1]])
),
dim=1
)

eps = 1e-15
likelihoods = torch.clamp(link_mat, eps, 1 - eps)

neg_log_likelihood = torch.log(likelihoods)
if label is None:
loss = 0
else:
loss = -torch.gather(neg_log_likelihood, 1, label).mean()

return loss, likelihoods

Ref


quantile regression

自变量与因变量的特定百分位数之间的关系建模

数据从小到大排列,q 分位数为 m 则表示该组数据中 100q% 的数据小于 m。满足q%的样本在曲线下方

特点

  • 分位数回归不会假设目标变量的分布

  • 分位数回归趋向于抑制偏离观测值的影响

MAE 是一种中位数的分位数回归

公式定义 #card

  • 条件概率 F(yX=x)=P(YyX=x)=E(1{Yy}X=x)F(y \mid X=x)=P(Y \leq y \mid X=x)=E\left(1_{\{Y \leq y\}} \mid X=x\right)

  • Qα=inf{y:F(yX=x)α}Q_\alpha=\inf \{y: F(y \mid X=x) \geq \alpha\}

分位数回归用途: #card

  • 区间预测(interval prediction),

  • 异常值检测(outlier detection)

单点损失函数–weighted absolute deviations #card

  • Lα(y,q)={αyq if y>q(1α)yq if yqL_\alpha(y, q)= \begin{cases}\alpha|y-q| & \text { if } y>q \\ (1-\alpha)|y-q| & \text { if } y \leq q\end{cases}

  • 整体优化目标

    • Qα(x)=argminqE{Lα(Y,q)X=x}Q_\alpha(x)=\arg \min _q E\left\{L_\alpha(Y, q) \mid X=x\right\}.

分位数回归可以通过随机森林实现 #card

  • 训练中单颗树每个落入叶子结点的样本权重占比

    • wi(x,θ)=1{XiR(x,θ)}#{j:XjR(x,θ)}w_i(x, \theta)=\frac{1_{\left\{X_i \in R_{\ell(x, \theta)}\right\}}}{\#\left\{j: X_j \in R_{\ell(x, \theta)}\right\}}.
  • 随机森林每个落入叶子结点样本权重占比

    • wi(x)=k1t=1kwi(x,θt)w_i(x)=k^{-1} \sum_{t=1}^k w_i\left(x, \theta_t\right)
  • 随机森林的预测结果

    • μ^(x)=i=1nwi(x)Yi\hat{\mu}(x)=\sum_{i=1}^n w_i(x) Y_i.

随机森林本质上在approximate the conditional mean E(YX=x)E(Y \mid X=x) ,因此考虑用 #card

总结通过随机森林得到分位数回归的过程 #card ![image.png](/assets/image_1742050245176_0.png)


redguardtoo/keybindings_json

[[@如何提高编程速度:Emacs高手教授轻松精通所有编辑器和IDE的秘诀]] 中提到的 VS Code 全局快捷键设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Place your key bindings in this file to overwrite the defaults
[
{
"key": "F12",
"command": "workbench.action.togglePanel",
},
{
"key": "Ctrl+]",
"command": "editor.action.goToTypeDefinition"
},
{
"key": "Ctrl+T",
"command": "workbench.action.navigateBack"
},
{
"key": "Ctrl+F12",
"command": "workbench.action.toggleMaximizedPanel"
}
]

interval forecasting

通过统计学方法预估区间

  • 区间估计法

    • 假设待估计值服从正态分布,计算这个值的标准差,然后给定某个置信度,查表得到 z 值。均值加减 z值乘标准差结果,得到左右区间。

    • 区间预测中应用

      • 假设预测误差服从均值为 0 的正态分布,估计预测误差的标准差

      • 给定置信度,查表得到 Z 值

      • 计算预测误差的上下限:z*标准差

      • 将上下限加到预测值里面,得到一个预测区间

    • 如何预测标准差

      • 用总体标准差近似样本标准差

        • 训练集划分出一个验证集,用验证集上的预测误差来估计标准差
  • [[Bootstrap]] 通过采样 N 次的预测误差,取N次误差的分位数作为上下限,不需要假设误差服从正态分布。

    • 例子,三次采样结果 [-50,0,50],5% 分位数 -45

    • 随机森林

  • [[Monte Carlo]] Dropout

    • nn 模型在 inference 阶段保留 dropout 结构,对 x 的每次预测都可以看成是一次抽样

定义特定的损失函数来输出区间

  • 直接拟合上下界 [[@High-Quality Prediction Intervals for Deep Learning: A Distribution-Free, Ensembled Approach]]

  • [[分位数回归]]

    • QL(y,y^,q)=q(yy^)++(1q)(y^y)+Q L(y, \hat{y}, q)=q(y-\hat{y})_{+}+(1-q)(\hat{y}-y)_{+} #card

    • 应用

      • 指定三个分位数(0.1,0.5,0.9),把这三个分位数损失加起来作为最终的损失函数。

      • [[MQRNN]] [[MQCNN]]

      • lightgbm和 xgboost 的 objective 也支持 quantile 选项

  • 负对数似然损失 #card

    • [[DeepAR]] 指定预测值服从的概率分布,利用神经网络预测概率分布的参数,构造负对数似然作为损失函数,优化损失函数得到概率分布的参数。

      • 预测时通过蒙特卡洛采样的方式生成预测值和区间预测

      • 采样 100 次,均值就是点预测结果,95% 和 5% 分位数对应区间预测的结果

工具

  • GluonTS

  • Darts

  • MAPIE

Ref


ppxu@如何高效地读完一周的 CNS?

[[ppxu 讲解例子]]

如何锻炼阅读文献的能力呢?如何快速获取一篇文章的要点呢?Reference #card

  • 进入实验室的新生需要在每周一的组会上讲解上一周 CNS 杂志上跟生物医学相关的全部文献

  • 由于 Nature 是北京时间周四凌晨更新,Science 是周五凌晨,而 Cell 是半月刊,因此对于新生而言,需要在三天左右的时间消化 10~25 篇(没有 Cell 的话 10 篇左右,有 Cell 的话再加 10~15 篇)最前沿的学术文章,并且做成 PPT 汇报。

  • 有时候新生还有课程和实验,因此时间就显得更紧张,进实验室的第一年,周末基本上都用来看文献了。还好 Reference 并不需要讲的很细,但也得讲成一个自圆其说的小故事。

作为直博三年级的学生,Reference 本来跟我的关系已经不大了,但是为了给新生示范一下如何讲解文献,因此我在本周的组会上汇报了上周 CNS 上的生物医学相关的全部文献,一共 28 篇。#card

  • 我自己看了 3 天(不能算高效,但在高效的路上),感觉看到缺氧,一方面是因为文章虽然都跟生物医学相关,但是涉及的领域实在千差万别,需要一定的基础知识才可以消化;另外还有部分文章真的脑洞大开,思路新奇,几乎超出了我目前的理解范畴,只能读个大概。

  • 下面我从切身的体验出发,聊一下自己的一些浅薄的想法。

  • 最后,也将我花了很多时间整理的上周的 CNS 生物医学相关的文献要点和 PPT 分享给大家。

如何快速消化一篇文献?拿到一篇文献后,不妨先问自己几个问题:#card

  • (1)这篇文章属于什么领域或方向?

  • (2)解决了什么问题?为什么这个问题这么重要?

  • (3)使用了什么方法和模型?为什么这个方法可以解决这个问题?

    • 带着问题读文献,明白每一段需要干什么
  • (4)核心结论是什么?下一步还可以怎么做?

#card 使用人为的坐标来精确定位文献在生物医学中的具体位置,久而久之,将这些散落的知识点联结起来,最后形成一张知识网络。

  • 纵向来看,生物过程包括个体层面、组织器官层面、细胞层面、分子层面以及原子层面等。

  • 横向切分,这个过程属于什么范畴,比如表观遗传学、免疫、神经生物学、发育生物学等。

  • 现阶段的文献,分子层面的机制偏多。由中心法则延展开来,分子无非 DNA、RNA 和蛋白质,这些分子的排列组合起来参与一些特定的过程,比如 DNA 复制、DNA 转录、RNA 翻译、RNA 修饰、组蛋白修饰、非组蛋白修饰等等。当然还有染色体整体层面出发的,比如染色体高级结构调控等。

积累细分领域知识:每次读论文发现一个新的研究方向或主题,创建一个对应的文件夹#card

  • 归类的过程也是慢慢消化和整理的过程。尽量让读过的文献逐渐融入自己的知识体系,而不是读过就读过了。

  • 当文献是孤零零时,你很难记住成千上万个孤零零的知识点;但是一旦成为体系,就更容易记住了,此为内化。

  • 比如很火热的【RNA修饰&二级结构&编辑】二级目录

(2)这篇解决了什么问题?为什么这个问题这么重要?#card

  • 我老板经常在组会上问我们的一个问题是,这篇文章为什么能发在 CNS 上?如果这个问题能回答清楚,其实文章基本上也就消化了。

  • 能发在 CNS 上的研究每一篇都有故事,我们需要挖掘这背后的故事:有的是困扰学术界几十年的难题,今天终于获得解答,比如施一公他们关于剪接体结构的解析;有的是颠覆人们认知的新发现,比如此前人们认为,脑中没有淋巴管,但 2018 年 8 月 9 日的 Nature 封面文章就报道,在大脑中清楚地观察到了脑膜淋巴管;还有的是让几十年的争论尘埃落定,比如终于发现了引力波。

  • 在文章的第一句,作者通常就会说明自己为什么要做这个研究,以及这个研究为什么这么重要;而且会在文章的第一段或者第一部分进行详细的说明,多花时间思考这个问题远胜于你花时间弄懂每一幅图说什么。

(3)这篇文章使用了什么方法和模型?为什么这个方法可以解决这个问题?#card

  • 对于 Nature 的 Articles、Science 的 Research Articles 以及 Cell,每一部分都有小标题,快速浏览后,我们可以知道这篇文章分为几个部分,每个部分作者打算做什么工作。对于 Nature 的 Letters 和 Science 的 Reports,不妨先看每一段的第一句话,就可以知道该部分要做什么。

(4)核心结论是什么?下一步还可以怎么做? #card

  • 文章的核心结果都在图里面,这个时候可以去看图了,这个图证明了什么,为什么能支持这个结论。如果你是这个研究方向的,那么最后很有必要看 Discussion 部分,作者会对文章的核心观点做一个回顾,并且会讨论下一步的计划,具有一定的启发性。

  • 其实哪怕我现在博士四年级,我也依然会碰到自己此前从来没接触的研究主题,但相比一年级,这种事情发生的概率要低得多。万一碰到自己不熟悉的,尤其是方法学的开发,会非常晦涩难懂,而且尤其对于* Nature* 和 Science,其篇幅是有规定的,因此要求作者极度凝练。碰到这种情况,不妨把摘要和 Introduction 部分多读几遍,读不懂反复读,亲测非常有效。书读百遍其义自见,文献亦然,古人诚不我欺也。

在文献阅读过程中,留意科学史,注意科学问题的延续性。比如这几年非常火热的相分离(phase seperation),#card

  • 你自己画一条时间线,哪一年谁最先发现这个现象,哪一年谁做出了关键突破。

  • 自己尝试写一个简短的综述,熟悉经典的工作以及行业的大牛,今后读起来会觉得:哦,这篇文章的作者是“老熟人”,他之前做出过什么重要的工作……


repartition 和 coalesce 对比

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

  • 为什么 :-> coalesce 不需要 shuffle

sed

删除包含特定字符串的行 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

  • 安靜 (silent) 模式

[n1[,n2]]function

function

  • p 打印

mac sed -i "tmp" "命令" file.txt

  • 需要指定一个备份字符串,原文件会保存成 file.txttmp

  • 如果不需要备份,直接给个空字符串

其他分隔符

  • @

  • |

  • !

  • 反引号


spark-submit

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

    • 如果任务占用内存比较多,调小 cores 数,可以使用更多内存

driver-memory

  • collect 算子将 RDD 拉取到 Driver 处理需要避免 OOM

spark.yarn.executor.memoryOverhead executor 额外预留的内存

spark.default.parallelism

  • 每个 stage 默认 task 数量 500-1000

  • 设置该参数为num-executors * executor-cores的2~3倍较为合适

spark.dynamicAllocation.minExecutors 以及 spark.dynamicAllocation.maxExecutors

  • 运行时动态分配 core 数

spark.driver.maxResultSize设置 Executor 端发回数据量

降低 spark.memory.fraction


stacking

将一系列模型的输出结果作为新特征输入到其他模型,从而实现模型的层叠。

  • 数据不能泄漏,否则会出现过拟合。

方法

  • 训练集数据分成 k 份,每次使用 k-1 份数据训练 k 个模型

  • 利用上面的模型预测没有训练的数据,预测结果做为一个新的特征A

  • 用label+新的特征训练模型训练一个新的模型

  • 测试集先过上面的 k 个模型得到预测结果,结果求平均做为特征A,在经过最后的模型得到结果

[[Ref]]


self-attention

不同部分作用

  • query :-> 与 key 计算相似度,为自身的输出 i 建立权重
  • key :-> 与 query 计算相似度,建立第 j 个向量 j 的权重
  • value :-> 作为加权总和的一部分,计算每个输出向量
    对自身 $$X$$ 线性变化得到 $$Q=W_QX, K=W_KX, V=W_VX$$,用来捕获同一个句子中单词之间的一些句法特征或者语义特征。

注意力计算

  • hi=att((K,V),qi)=j=1Nαijvj=j=1Nsoftmax(s(ki,qi))vj\begin{aligned} \mathbf{h}_{i} &=\operatorname{att}\left((K, V), \mathbf{q}_{i}\right) \\ &=\sum_{j=1}^{N} \alpha_{i j} \mathbf{v}_{j} \\ &=\sum_{j=1}^{N} \operatorname{softmax}\left(s\left(\mathbf{k}_{i}, \mathbf{q}_{i}\right)\right) \mathbf{v}_{j} \end{aligned}

打分函数 $${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 参数矩阵?

  • self-attention 核心利用 文本中的其它词 来增强 目标词的语义表示
  • 不乘以 QKV 矩阵 :-> qkv 完全一样,qi 和 ki 的点积比重会最大,无法有效利用上下文信息来增强当前词的语义表示。
  • QKV 参数矩阵使得多头作用 :-> 类似于 CNN 中的多核,使捕捉更丰富的特征/信息成为可能
    现在看来self-attention 是增强了模型表示能力,还是有了更好的对特征的权重加权? - 知乎 :-> 增强模型表达能力
  • 增强模型表达能力 :-> 加权对象是 token,融合不同的 token 来构造当前 token 在当前上下文情况下的表示
  • 如果是对特征进行加权, :-> 初始化的 word embedding应该直接用那些预训练好的,实际上预训练的词向量并不会提高模型收敛后的效果。

Ref


switch 折腾

数据备份

  • atmosphere 大气层系统相关文件

  • emuMMC 虚拟系统内存中数据

  • Nintendo 虚拟系统 SD 卡中数据

游戏安装

使用 mac 系统更换 SD 内存卡

游戏格式

  • NSP

    • Nintendo Submission Package

    • eshop 中的数字版

    • 压缩格式为 NSZ

  • XCI

    • NX Card Image

    • 卡带 dump 文件镜像

    • 压缩格式为 XCZ

报错

存档管理

相关资源


teacher forcing

seq2seq使用teacher forcing有一个问题,就是模型训练和预测行为的不一致会导致模型的泛化性能下降

[[Transformer]] 训练阶段使用这种方式,旨在提升序列模型训练稳定性、加速模型收敛。

  • 一次性输入全部目标序列,可以并行的方式一次性输出完整的目标序列,提高训练效率

yihong0618

yihong0618 (@yihong06181) / Twitter 个人跑步数据可视化

yihong0618/gitblog: People Die, but Long Live GitHub 使用 [[Github Issues]] 写博客


一只小胖子

高效时间&知识管理 - 知乎

一只小胖子-知乎的个人空间_哔哩哔哩_bilibili

一只小胖子@知乎的分享 - 幕布 (mubu.com)

感受:思考、实践、总结、迭代

文章

+ 架构图太复杂了……


三国杀国战

武将统计

  • 国标(60 将)

  • 君临天下 (32 + 4 将)

  • 应变篇

  • 不臣篇 (10 + 10 将)

  • 纵横捭阖(8 将)

    • 三国杀十周年服务器国战扩展

实体卡牌

  • 三国杀国战应变篇

    • 116 张武将
  • 三国杀国战群雄割据

    • 117

    • 完整不臣篇,无四君主,势备篇权包不齐

  • 三国杀国战十年经典 162将


中心极限定理

假设 {Xn}\left\{X_n\right\} 为独立同分布的随机变量序列,并具有相同的期望 μ\mu 和方差为 σ2\sigma^2 ,则 {Xn}\left\{X_n\right\} 服从中心极限定理, 且 ZnZ_n 为随机序列

& 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]]


二项分布方差推导

var(m)=E[m2]E2[m]=m=0Nm2N!(Nm)!m!μm(1μ)NmN2μ2=m=1Nm2μN!(Nm)!m!μm1(1μ)NmN2μ2=m=1NmμN!(Nm)!(m1)!μm1(1μ)NmN2μ2\begin{aligned} \operatorname{var}(m) & =\mathrm{E}\left[m^2\right]-\mathrm{E}^2[m] \\ & =\sum_{m=0}^N \frac{m^2 N !}{(N-m) ! m !} \mu^m(1-\mu)^{N-m}-N^2 \mu^2 \\ & =\sum_{m=1}^N \frac{m^2 \mu N !}{(N-m) ! m !} \mu^{m-1}(1-\mu)^{N-m}-N^2 \mu^2 \\ & =\sum_{m=1}^N \frac{m \mu N !}{(N-m) !(m-1) !} \mu^{m-1}(1-\mu)^{N-m}-N^2 \mu^2\end{aligned}

u=m1,T=N1u=m-1, T=N-1 代入上面

  • var(m)=u=0T(u+1)μ(T+1)!(Tu)!u!μu(1μ)TuN2μ2=(T+1)μu=0TuT!(Tu)!u!μu(1μ)Tu+(T+1)μu=0TT!(Tu)!u!μu(1μ)TuN2μ2=(T+1)Tμ2+(T+1)μN2μ2=N(N1)μ2+NμN2μ2=NμNμ2=Nμ(1μ)\begin{aligned} \operatorname{var}(m) & =\sum_{u=0}^T \frac{(u+1) \mu(T+1) !}{(T-u) ! u !} \mu^u(1-\mu)^{T-u}-N^2 \mu^2 \\ & =(T+1) \mu \sum_{u=0}^T u \frac{T !}{(T-u) ! u !} \mu^u(1-\mu)^{T-u}+(T+1) \mu \sum_{u=0}^T \frac{T !}{(T-u) ! u !} \mu^u(1-\mu)^{T-u}-N^2 \mu^2 \\ & =(T+1) T \mu^2+(T+1) \mu-N^2 \mu^2 \\ & =N(N-1) \mu^2+N \mu-N^2 \mu^2 \\ & =N \mu-N \mu^2 \\ & =N \mu(1-\mu)\end{aligned}

从 hexo 迁移到 zola

hexo 基于 nodejs 实现,有大量的依赖,每次整理

博客系统演变之路

  • hexo+next、even Typecho Cho

  • wordpress

  • jekll

  • tiddlywiki

  • hugo

需要修改

[[nunjucks]] 模板引擎,文件扩展名是 njk

Ref


佣兵任务总结

来源:https://bbs.nga.cn/read.php?&tid=29315359

任务1~18具体情况如下:

  • 任务13:使用13技能造成XX效果(使用技能则必须在队中,下同)
    任务4:造成140点伤害(不必在队中)
    任务5:30级后1个悬赏(必须在队中)
    任务6:打败40个随从(不必在队中)
    任务7:打败2个英雄难度首领(不必在队中)
    任务8:拿到2~4个赐福(不必在队中)
    任务911:使用13技能造成XX效果。
    任务12~13:4个英雄难度悬赏(必须在队中)
    任务14:使用某技能造成XX效果。
    任务15:完成6个悬赏(必须在队中)
    任务16:对XX(如护卫)造成900点伤害(不必在队中)
    任务17:使用包含此佣兵的队伍造成900点XX伤害
    任务18:对英雄难度首领造成450点伤害(不必在队中、只算首领喽喽不算)

倾向性评分

倾向性评分是一个概率值(介于0和1之间),表示#card

  • 在给定一组观测到的协变量(covariates,如年龄、性别、病史等)的情况下,某个个体被分配到处理组(而非对照组)的条件概率。

  • 当前输入特征下用户被分配到实验组的概率

    • e(x)=Pr[T=1X=x]e(x)=\operatorname{Pr}[T=1 \mid X=x]

对于倾向性得分相同的一群用户,treatment 和特征是独立的,treatment 和潜在结果也是独立。


傅里叶变换

任意一个函数表示成诺干个正交函数的线性组合。

时域 空间域

  • x 轴是时间

  • 例子

    • 信号

      • 一个物理量在时间上的变换
    • 三角函数图

频域 变换域

  • x 轴是频率

  • y 轴是对应频率下的增幅

时域到频域变换 #card

F(ω)=+f(t)eiωt dtF(\omega)=\int_{-\infty}^{+\infty} f(t) \cdot e^{-i \omega t} \mathrm{~d} t

  • F(f)=+f(t)ei2πft dtF(f)=\int_{-\infty}^{+\infty} f(t) \cdot e^{-i 2 \pi f t} \mathrm{~d} t

欧拉公式

使用正弦曲线做为基,会考虑整个坐标轴情况

  • g 函数是指数函数 [[拉普拉斯变换]]

  • 高斯分布做 g 函数的变换 [[Gabor Transform]]

+ s 控制窗口位置

+ $\vec{d}_{n, s}=g(t-s) \cdot e^{i n t}$

ga(ts)=12πae(ts)24a×2g_a(t-s)=\frac{1}{2 \sqrt{\pi a}} e^{-\frac{(t-s)^2}{4 a}} \times 2

  • 窗口大小不固定 [[小波变换]]


偏导数

多变量函数中,偏导数就是关于其中一个变量的导数而保持其它变量恒定不变。


充分统计量

对于方差和期望来说,知道方差可以求出期望,期望是方差的充分统计量,反之毅然。

统计量 s 是样本的函数值(比如均值、方差)

充分统计指包含分布所需的全部信息的统计量

  • 有充分统计量后,就不需要存储样本

[:span]
ls-type:: annotation
hl-page:: 59
hl-color:: yellow


共轭先验

[[贝叶斯公式]] p(wX)=p(Xw)p(w)p(X)p(\boldsymbol{w} \mid \boldsymbol{X})=\frac{p(\boldsymbol{X} \mid \boldsymbol{w}) p(\boldsymbol{w})}{p(\boldsymbol{X})}

  • 分母 px 与 w 无关

  • p(wX)p(Xw)p(w)p(\boldsymbol{w} \mid \boldsymbol{X}) \propto p(\boldsymbol{X} \mid \boldsymbol{w}) p(\boldsymbol{w})

  • 后验相关于似然乘先验

[[共轭]]: 如果先验和似然相乘得到的后验与先验有相同的函数形式,我们就说该先验是似然的共轭先验,也说后验分布和先验分布是共轭分布。
ls-type:: annotation
hl-page:: 61
hl-color:: yellow

  • 如何判断?

    • 是否共轭看的是后验是否和先验有相同的函数形式。
      ls-type:: annotation
      hl-page:: 61
      hl-color:: yellow

      • 不是先验和似然的函数形式是否相同,也不是似然和后验函数形式是否相同。

      • 先验和后验都是对 w\boldsymbol{w} 建模,似然是基于w\boldsymbol{w} 对 X 建模。

        • 先验与似然的的研究对象不同,不能强求函数形式相同。

        • 先验和后验是对同一对象的两个不同模型,可以要求有相同的函数形式。

    • 特殊情况: 在某些情况下,存在先验、后验、似然三者函数形式均相同的情况。
      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

        • 伯努利分布是随机变量 x 服从的分布,对应似然,相当于似然和先验共轭
      • 我们一般不说“伯努利分布参数µ的后验分布和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


写Leetcode每日一题

如何写题解?

  • 模板,打上相关的标签 Problems/2025

  • 记录怎么想这题的,错误的解法,以及正确的解法。

[[2025/04]]


分组循环

使用场景

  • 数组会被分割成若干段,且每一段判断/处理逻辑是一样的。

好处

  • 无序判空

  • 无需在循环结束后再补上最后一段区间的逻辑

1
2
3
4
5
6
7
i, n = 0, len(nums)
while i < n:
start = i
while i < n and ...:
i += 1
# 从 start 到 i-1 是一段
# 下一段从 i 开始,无需 i+=1

写卡片的原则与建议

做笔记,做知识管理是为了什么? [[母题]]

  • light 做笔记,就是为更好地做经营决策和投资决策

  • shaonan 做笔记,除了用来写这本书,也为他的付费邮件组「产品沉思录」积累素材;

  • 自己 做笔记是为了学习算法知识,解决现实中的问题。

原则

  • 已我为主,增援未来

五条建议

  • 记录 [[反常识卡]]

    • [[多元思维模型]] 不是用来证明机会有效,而是用来证伪机会不值得投资。

    • 如何寻找反常识?

      • 反常识的观点或事实

      • 负面的观点

      • 改变解读过去经验的视角

      • 复杂东西简化的视角

      • 意料之外但情理之中的视角

    • [[反直觉]]笔记

      • 记录反直觉的信息可以帮助我们打破思维惯性,从另一个视角来看待惯常的事物,得到完全不同的启发。

      • 如何捕捉反直觉的信息

    • #idea 之前记笔记时,考虑过能重新想到的东西不需要记录,去记想不到的点。

      • 反自己的常识

      • 反大家的常识

  • 不追求形式,慎用模板

    • 目的决定形式

      • 自用的笔记可以按自己喜欢的方式组织,公开的笔记站在读者的角度整理。

      • 而如果缺少了这个目的,就会很容易在读书的时候把「写读书笔记」这种形式当做一个目的。在记录时,你就总会去想知道别人是如何做笔记的,有没有更好的方法和模板,然后陷入到对形式选择的无尽比较和纠结之中。

    • 慎用他人模板

      • 理解模板背后的思路,然后按自己的习惯进行改造
  • 用自己的话来写

    • 需要经历的过程:复制、转换、混合

    • 如何在记录时把复制的东西变成自己的话语

      • 用自己的案例替换

        • 比如在对于芒格所说的「如果知道会死在哪里,就不要去哪里」这句话,就可以举出设计 flomo 时多台服务器备份数据避免丢失的案例,以及在读李光耀自传时,他反复强调新加坡最重要的是解决海水净化问题,避免被其他国家掣肘。
    • 证伪

      • [[西蒙学习法]] 仅存在与中文互联网
  • 精炼知识点

    • 使用思维导图做读书笔记缺点在于复述书本的脉络,记录作者的思想,没有和自己的只是进行结合。

    • 通过精炼知识点,有选择记录和自己中长期目标相关的知识。

  • 质量胜过数量

    • 换个角度来看,以前文提到的德国社会学家尼克拉斯 · 卢曼来说,其一生出版了五十多本著作,积累了 9 万张卡片。但是如果按照 30 年的研究生涯来看,每天记录也不过只有 8 张卡片,而且都是如下面这样寥寥数语。所以作为普通人,我们恐怕真的没有必要追求那么多的数量。

如何才能持续不断


区间 DP

dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+cost[i][j])dp[i][j]=max(dp[i][j], dp[i][k]+dp[k+1][j]+cost[i][j])

从小到大枚举区间的长度

确定 i,j,枚举中间的点,由于先枚举的长度,i和j之间更小的区间都已经被计算过。


匹配法

基本形式 #card

  • 匹配法就是找出对应组的相似对象并将其事实结果作为反事实结果估计

  • 该方法运用能够影响结果的协变量,从对照组中选出和干预组相似的样本进行匹配,并对两个组进行比较。

匹配法成立的条件是影响结果的所有协变量均 可观测
存在多个协变量时,也可以将它们整合成一个得分进行 :-> 匹配 [[倾向性评分匹配]]
倾向得分匹配法成立必须满足两个前提条件。#card

  • 第一个前提条件是,所有会影响结果的协变量均为可转化成数值的数据。

  • 第二个前提条件是所有协变量都必须用来计算倾向得分

例子:对于干预组的一件打9折的连衣裙A,可以在控制组的没打折的连衣裙中找出具有相似款式,风格,材质等属性的连衣裙B,将B的销量作为A的 反事实结果
匹配可以形式化如下,其中 Y^i\hat{Y}_i 为单元 ii 的预估结果, YiY_i 为单元 ii 的事实结果, J(i)J(i) 为单元 ii 的匹配邻居。这里包含两个问题:1)如何定义相似?2)如何挑选邻居?#card
image.png

距离度量

  • 原始空间:#card

    • 我们可以基于原始的背景变量计算欧氏距离,马氏距离等常见的距离。当背景变量较少时也可以进行完全匹配,例如只有性别,年龄,城市,学历等完全相同时才匹配为邻居。
  • 变换空间:#card

    • 在原始空间不一定能够找到合适的距离度量,因此我们可以将背景变量变换到其他空间,在该空间用常见的距离度量也有较好的效果,可以形式化为 D(xi,xj)=f(xi)f(xj)2D(x_i,x_j)=\Vert f(x_i)-f(x_j)\Vert_2 。这里重点在于变换函数 ff 如何设计。
  • 倾向性分:#card

    • f(x)=e(x)f(x) = e(x)
  • 线性倾向性分:#card

    • f(x)=logits(ei)f(x) = logits(e_i)
  • 基于预测分数:#card

    • 有点像 Domain Adaption 中对齐标签信息,使得背景变量相似的样本映射到变换空间后具有相似的事实结果,代表性方法是 HSIC-NNM
  • 基于随机映射:#card

    • 高维空间变量随机映射到低维空间后仍然可以保持原来的相似信息,代表方法是 RNNM
  • 混合方法:首先基于所有背景变量用倾向性分做一遍粗筛,然后对于关键背景变量用以下度量做一遍精筛。#card
    image.png

邻居选择

  • 最近邻匹配:#card

    • 顾名思义取距离最近的邻居,是否有放回,匹配的数量等会影响最终的效果。当采取无放回匹配时,匹配的顺序也会影响效果。
  • 分层匹配:#card

    • 将距离划分成不同区间分别匹配增加邻居的多样性。
  • 完全匹配:#card

    • 匹配对应组所有样本,但是会有一个加权权重。

变量选择:#card

  • 在计算距离时一般会使用所有背景变量,但是正如 D2VD 中提到的问题,背景变量中还包含其他变量,例如调整变量,工具变量等,使用这些变量会带来负向影响。

十三邀S5E01:许知远对话罗翔

为权利而斗争

法律人物:

  • 马丁路德金

  • 甘地

  • 林肯

  • 沈家本

    • 故居 北京宣武门外

    • 历代刑法考

    • 刑法是威吓的工具

      • 民不畏死,奈何以死惧之

      • 极端残酷性实现罪行平衡

网络暴力

  • 朋友对罗翔说:别人对你的表扬名不副实,你就很开心,对你的批评名不副实,你就不高兴了,你这不是典型的双标吗?

理念上的乌托邦是有意义的,但是现实中的乌托邦是不可能的。我们画不出那一个完美的圆,我们无法追求到绝对的美,但是你不能推导出,这个世界没有美,这个世界一切都没有意义,那人的存在是没有意义的,人类追求美的是没有意义的。

逐字稿,不紧张

湖南话 昨天、今天和明天

[[Plato]] 学习是一种回忆

  • 人类的原初设置

泛道德倾向:

  • 道德是自律,不是他律

    • 道德是要求自己的,不是要求他人的。
  • 道德完美主义

  • 积极道德主义

    • 是以道德作为惩罚正当化的一种依据,只要一种行为违背了道德,那我们就要千方百计地对他进行惩罚。

    • 对违反道德的行为,进行惩罚

    • 中国传统

  • 消极道德主义

    • 是把道德作为一种出罪的依据,作为一种正当化的依据。

    • 如果在道德上是值得谴责的,那它不一定是犯罪,

    • 但如果一种行为在道德生活是被鼓励的一种行为,把它就不应该受到惩罚。

法律强调程序正义

  • 人们往往有朴素的正义之心、道德之心,但这种正义之心、道德之心又是有高度压迫性的。

  • 罪行法定

  • 因为司法是一定会存在错误的一种过程。司法的错误如何被人所接受,就是它是强调程序的。

    • 程序中可以达到可见的正义,有瑕疵的正义
  • 网络进行道德审判

    • 民众很多时候是希望撇开程序,去寻求他心目中的一些正义,而这种正义会导致一种非正义。

    • 往往是善良的愿望把人们带入地狱。

  • [[侠客行]]

大宪章:公权和私权分开

法律高度技术化

人承认自己是有限的

  • 人要接受自己的有限性,人承认自己是有限的,于是承认你的逻辑是有限的,承认你的理性是有限的,承认你的阅读是有限的,承认你整个人就是在偏见之中,你这一生就是在走出偏见。

    • 古人说的行千里路,读万卷书。因为你行了千里路,就一定会从地方性偏见走出来,了解了各地各异的风俗人情,就不会觉得只有自己老家或者自己所处的地方就是最好的。

    • 读万卷书就会走出时代偏见,因为你在读书的过程中你会跟古人,跟过去的时代,跟其他的时代进行交流,那就可能走出时代性的偏见。

  • 一生是走出偏见

人最大的痛苦是 :-> 无法跨越知道和做到的鸿沟

  • 你自己所教的,你做不到。你是在骗别人,你也在自我欺骗。

  • 我思故我在:幻想

  • 我始终告诫我自己,人能真正影响的人其实很少很少,很多人所谓的被你影响只是片刻的感动,最后还是投入到自己以前的生活。人片刻地感动,不可能持久地感动。

  • ^你为自己想到的所感动^

我不能够弃演
人被你片刻地感动

  • 许:但现在片刻的感动已经成为这个时代重要的一种方式。

  • 罗:这很多时候是一种自我欺骗,你在欺骗自己,你也在欺骗别人,你也让别人陷入了一种自我欺骗。

  • 技术主义背后的价值

做城邦中的[[牛虻]]

  • 知识分子的一个重要的特点,可能还是像苏格拉底所说的,做城邦中的牛氓。

  • 作为我们法律人,我们是双向牛氓。

    • 一方面,我们是城邦的牛氓,我们要对权力进行警惕;

    • 一方面,我们是民众身上的牛氓,我们要提醒他们,激情是有界限的,激情也是要在法治的界限之中。

民众对公平和正义的期待在视频中找到回响

[[Socrates]]的狂喜是真诚对待[[德尔斐神谕]]

  • [[认识你自己]]

  • 凡事勿过度

  • 妄立誓则祸近

我始终相信我们不可能追求到绝对善,但是我们也不能因为绝对善追求不到而退向相对主义。

大部分人想的不是金箍棒,也是定海神针。大部分人想的是怎么混进蟠桃会吃个桃子。


协方差

衡量^两个随机变量^各个维度偏离其均值的程度

  • 协方差值含义

    • 正值说明两个变量正相关

    • 负值说明两个变量负相关

    • 零值说明两个变量相互独立

  • 方差是协方差的一种特殊情况

  • 两个随机变量都是多维的

协方差矩阵:

  • ij 是第 i 个与第 j 个随机变量的协方差

  • ij=cov(Xi,Xj)=E[(Xiμi)(Xjμj)T]\sum _{ij}=cov (X_i,X_j)=E[(X_i-\mu_i)(X_j - \mu_j)^T]

  • 如果变量是 d 维,那么协方差 $$\sum = d * d$$ 维

[[Ref]]


双塔模型

[[DSSM]]

user

离线建图 + [[Approximate Nearest Neighbor Search]]

  • 离线计算 item 的 embedding

双塔模型最后一层为什么都进行L2 Norm?

  • 为什么双塔要用cos距离?

    • 本质是因为点乘距离非度量空间,不满足三角不等式 ,距离比较没有传递性。#card

      • 更通俗的说内积不保序,假设有三个点ABC,点击意义下|A,B|<|A,C|,但是欧式距离下不一定有|A,B|<|A,C|,比如A=(100,0),B=(0,100),C=(101,0)。
    • 总结:双塔召回需要ANN,点积不保序一般使用欧式距离,双塔最上层归一化能将输入映射到 欧式空间 ,保证了训练检索的一致性,提高了效果。

  • 双塔最上层为什么要归一化?

    • 双塔模型最终需要计算两个表示向量在表示空间中的夹角(余弦相似度),通过 L2 norm 后直接通过向量点积计算 cos 值,减少重复计算量 #card

      • cosine(x,y)=xyxy\operatorname{cosine}(x, y)=\frac{x \cdot y}{|x| \cdot|y|}

      • L2 Norm $$\hat{x}=\frac{x}{|x|}, \quad \hat{y}=\frac{y}{|y|}$$

      • cosine(x,y)=xyxy=x^y^\operatorname{cosine}(x, y)=\frac{x \cdot y}{|x| \cdot|y|}=\hat{x} \cdot \hat{y}

    • 主流的向量匹配引擎,并不支持 余弦相似度 作为距离度量;只支持 向量内积 作为距离度量。

  • L2 norm 归一化后为什么要乘温度系数?#card

    • It is interesting to see the effect of temperature on performance, suggesting the necessity to carefully tune this parameter when normalization is applied

    • temperature 作用放大 logit

    • 对Temperature的第一层理解是把L2 norm后的值阈拉回Softmax的敏感激活范围。这样,向量取消了norm,模型专注于调整用户和物品的超平面夹角,模型稳定性得到了保证。

双塔训练方法 #card #depth-1

  • Pointwise:独立看待每个正样本、负样本,做简单的 二元分类 #card
    image.png

  • [[Pairwise 训练]] 每次取一个正样本、一个负样本

  • [[Listwise 训练]] 每次取一个正样本、多个负样本

Ref


吃饭的时候,给家人聊聊星舰吧

[[第一性原理]] 生产和经营中遇到的一切障碍或者说规范,都必须刨根问底,找到终极原因,一直到最基本的数学或物理规则才能停下来,考察合理性。

  • 比如说,生产线上某个工序拖了后腿,马斯克的第一反应是要求机器加速运转。如果工程师说安全规范不允许,马斯克也不会生气,但要求工程师必须拿出制定安全规范的依据,然后追问依据的依据。如果某个层次的依据无法说服马斯克,或者最终层面上不能用基本科学原则解释,马斯克就会要求冒险突破规范试试。赌赢了,效率大大提升;而赌输了,毁掉的机器正好拆开做研究,看看怎样改造能突破规范。现在上天的不锈钢廉价火箭就是这样一次次试探出来的。

可解释性

可解释模型

  • 线性回归、逻辑回归、决策树

特征重要性

  • Permutation Importance

    • 要某个研究特征的重要性,将特征对应的数据打乱排序,观察 metric 或 loss 变化。如果变化不大,说明该特征重要性低
  • [[@A Unified Approach to Interpreting Model Predictions]] 通过 SHAP 计算每一个样本中的特征影响力

  • [[@“Why Should I Trust You?”: Explaining the Predictions of Any Classifier]] LIME 与模型无关的局部可解释。假设非线性模型的局部是近似线性的,用线性模型的权重大小反应对应特征的重要程度。

image.png

  • XGBoost 特征重要性指标 get_score 方法

    • 特征在所有树中做为划分属性的次数

+ 特征作为划分属性时 loss 平均的降低量

+ 特征作为划分属性时对样本的覆盖度

单特征分析

  • Partial Dependence Plots 部分依赖图,通过改变部分变量的值而固定其余变量的方式研究部分变量与预测目标的关系。

    • 开源工具包 pdpbox,同时改变多个样本的部分变量为相同值,然后求预测结果的平均值。

      • x 是特征取值范围,y 轴代表预测结果。随着特征取值变大,y 逐渐增大然后收敛。

多特征分析

  • pdpbox 工具

    • 颜色越浅这个概率越大

树模型可视化

  • 通过 xgb.plot_tree 画出树的分裂过程

  • 观察项

    • 树的路径以及对应叶子节点权值是否符合业务常识

    • badcase 以及树结构有没有特点

    • 不同特征在树中分布情况

    • 那些特征经常是父子节点关系?那些特征经常出现同一个路径上?

Embedding 可视化

  • [[t-SNE]] 降维聚类展示

基于反向传播可视化 CNN 网络

  • CAM

  • Grad-CAM

推荐系统

  • [[@打造工业级推荐系统(十):如何构建可解释的推荐系统]]

  • 给定 item embedding 按相似度召回相似物品,观察 item 相关性

  • 不同召回策略的结果做对比,观察相关性、新颖性、多样性。

Ref


吴恩达关于如何阅读论文建议

Stanford CS230: Deep Learning | Autumn 2018 | Lecture 8 - Career Advice / Reading Research Papers - YouTube

主题阅读

  • 收集资料

  • 列出一个 list ,标注阅读进度。挑选有价值的论文阅读。

  • 5-20 初步了解

  • 50-100 很好理解前沿工作

如何阅读论文

多遍阅读策略

  • 第一遍 :<-> 标题,摘要,图片

  • 第二遍 :<-> 简介、结论、图片相关材料

  • 第三遍 :<-> 进入论文主体部分,但是可以跳过数学,明白每个参数的含义。

  • 第四遍 :<-> 阅读整篇文章,跳过没意义的部分(内容过时,没有火起来过)。
    阅读时思考的问题

    1. 作者试图解决什么问题?
    1. 研究方法的关键是什么?(最具有开创性)
    1. 哪些东西可以为你所用?
    1. 有哪些参考文献可以继续跟进?

读论文的延续性

  • 在接下来一年保证每周读两篇文章比在一个月集中阅读50篇就更加行之有效。

How You Should Read Research Papers According To Andrew Ng (Stanford Deep Learning Lectures) | by Richmond Alake | Jul, 2020 | Towards Data Science

  • 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.


因果关系阶梯

PCH Pearl’s Causal Hierarchy

image.png

因果关系者掌握三种不同层级的认知能力:观察能力(seeing)、行动能力(doing)和想象能力(imagining)。

第一层对应观察到的世界,第二层对应的是一个可被观察的美好新世界,第三层对应无法被观察到的世界。

  • 第一层级是观察能力,具体而言是指发现环境中的规律的能力。在认知革命发生之前,这种能力为许多动物和早期人类所共有。

    • 关联:统计学,当前深度学习,依赖数据,缺乏灵活性和适应性
  • 第二层级是行动能力,涉及预测对环境进行刻意改变后的结果,并根据预测结果选择行为方案以催生出自己期待的结果。

    • 干预比关联更高级,因为它不仅涉及被动观察,还涉及主动改变现状。

    • 干预:参考过去的数据,不能解决当前的行为。比如之前的涨价是由于其他原因导致的。AB实验

  • 第三层想象能力

    • 反事实,对事件干预后进行反思


因果推断

[[因果推断方法]]

从结果估计原因 $$P(Y|do(X))$$

因果推断 ( Causal Inference ) 作为新兴的人工智能技术方向,旨在突破传统数据分析和机器学习方法的瓶颈,建模大规模数据集中的因果关系,为干预手段的设计提供指导,为构建下一代面向用户增长的全域分发系统提供理论基石。

正确区分因果关系和相关关系的方法论

核心课题

  • 从众多观测到/未观测到的变量中找出致因 ( causes )

  • 预估某个行为/因素的影响力/效益 ( causal effect )

核心是寻找反事实 ( counterfactual ) 镜像

随机对照实验的局限性

[[因果关系阶梯]]:关联、干预、反事实

因果建模方式

  • 有随机控制实验 RCT Randomized Controlled Trial

    • 根据控制变量去随机分组

    • 耗时,非道德

  • 观测研究 Observational Study

[[匹配法]]

[[UPlift Model]]

  • [[Uplift Model 评估]]

  • [[Uplift Curve]]

  • [[Meta-Learner]]

    • [[S-Learner]] one-model 的差分响应模型

    • [[T-Learner]] two-model 差分响应模型

    • [[X-Learner]] 基于 T-Learner的反事实推断模型

    • [[R-Learner]] 通过 Robinson’s transfomation 定义一个损失函数,然后通过最小化损失函数的方法达到对增量进行建模的目的。

[[Ref]]


因果效应预估

树模型

  • 改造传统树模型的分裂规则,每次分裂最大化干预组与对照组之间的差异 Dgain =Dafter split (YC,YT)Dbefore split (YC,YT)D_{\text {gain }}=D_{\text {after split }}\left(Y_C, Y_T\right)-D_{\text {before split }}\left(Y_C, Y_T\right),使得因果效应近似的样本尽可能落在同一个节点,从而可以实现直接预测样本的干预效应。

  • Casual Tree

  • Casual Forest

因果元学习 [[Meta-Learner]]

  • Double/debiased Machine Learning Method

    • [[倾向性模型]] Propensity Model:预测干预变量

    • [[响应模型]]:预测目标变量,构造时不适用干预变量

[[Doubly Robust]] 同时使用干预变量与控制变量


均匀分布

[[概率密度函数]]

  • f(x)=1ba,a<x<bf(x)=\frac{1}{b-a}, a<x<b

基于 MSE 的 GBDT 推导

损失函数 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)}$$ 当成是参数,并求导

JF(xi)=iL(yi,F(xi))F(xi)=L(yi,F(xi))F(xi)=F(xi)yi{ \frac{\partial J}{\partial F(x_i)} = \frac{\partial \sum_i L(y_i, F(x_i))}{\partial F(x_i)} = \frac{\partial L(y_i, F(x_i))}{\partial F(x_i)} = F(x_i)-y_i}

残差等于负梯度 $${y_i-F(x_i)=-\frac{\partial J}{\partial F(x_i)}}$$

Ft+1(xi)=Ft(xi)+h(xi)=F(xi)+yiF(xi)=Ft(xi)1JF(xi){F_{t+1}(x_i)=F_t(x_i)+h(x_i)=F(x_i)+y_i-F(x_i)=F_t(x_i)-1\frac{\partial J}{\partial F(x_i)}}

θt=θt1+αL(θt1){\theta ^t = \theta ^{t-1} + \alpha L^\prime(\theta ^{t-1})}


多项分布

p(xμ)=k=1Kμkxkp(\mathbf{x} \mid \boldsymbol{\mu})=\prod_{k=1}^K \mu_k^{x_k}

  • xkx_k 中一项为 1,其余为 0

期望

  • E[xμ]=xp(xμ)x=(μ1,,μM)T=μ\mathbb{E}[\mathbf{x} \mid \boldsymbol{\mu}]=\sum_{\mathbf{x}} p(\mathbf{x} \mid \boldsymbol{\mu}) \mathbf{x}=\left(\mu_1, \ldots, \mu_M\right)^{\mathrm{T}}=\boldsymbol{\mu}

似然函数

  • p(Dμ)=n=1Nk=1Kμkxnk=k=1Kμk(nxnk)=k=1Kμkmkp(\mathcal{D} \mid \boldsymbol{\mu})=\prod_{n=1}^N \prod_{k=1}^K \mu_k^{x_{n k}}=\prod_{k=1}^K \mu_k^{\left(\sum_n x_{n k}\right)}=\prod_{k=1}^K \mu_k^{m_k}

    • mk=nxnkm_k=\sum_n x_{n k}

极大似然估计

  • 对 p 求对数似然,约束项是 xp(xμ)=k=1Kμk=1\sum_{\mathbf{x}} p(\mathbf{x} \mid \boldsymbol{\mu})=\sum_{k=1}^K \mu_k=1 ,再通过 [[Lagrange Multiplier]] 求解

    • L=k=1Kmklnμk+λ(k=1Kμk1)L=\sum_{k=1}^K m_k \ln \mu_k+\lambda\left(\sum_{k=1}^K \mu_k-1\right)

    • 对 L 求关于 μk\mu_k 的导数,并令其为 0 。得到 μk=mkN\mu_k=\frac{m_k}{N}

      • Lμk=mkμk+λ0=mkμk+λmkλ=μk1λkmk=kμkNλ=1λ=N\begin{aligned} \frac{\partial L}{\partial \mu_k} & =\frac{m_k}{\mu_k}+\lambda \\ 0 & =\frac{m_k}{\mu_k}+\lambda \\ -\frac{m_k}{\lambda} & =\mu_k \\ -\frac{1}{\lambda} \sum_k m_k & =\sum_k \mu_k \\ -\frac{N}{\lambda} & =1 \\ \lambda & =-N\end{aligned}

重复进行 N 次多项分布实验,得到分布

  • Mult(m1,m2,,mKμ,N)=(Nm1m2mK)k=1Kμkmk\operatorname{Mult}\left(m_1, m_2, \ldots, m_K \mid \boldsymbol{\mu}, N\right)=\left(\begin{array}{c}N \\ m_1 m_2 \ldots m_K\end{array}\right) \prod_{k=1}^K \mu_k^{m_k}

    • (Nm1m2mK)=N!m1!m2!mK!\left(\begin{array}{c}N \\ m_1 m_2 \ldots m_K\end{array}\right)=\frac{N !}{m_{1} ! m_{2} ! \ldots m_{K} !}.

    • k=1Kmk=N\sum_{k=1}^K m_k=N


如何创建一个类似的网站

从 [[Conan Chou]] 的“透明盒子计划”网站设计时的一些考虑 中获得方法:

    1. 使用 obsidian-html 将 [[Obsidian]] 中 Markdown 笔记转换成 html 格式。
    1. 克隆 clearbox-project/clearbox-project.github.com 到你的仓库中,然后将上一步得到 html 格式文件拷贝到 notes 目录下。
    1. 通过 Github Pages 部署克隆的项目就能得到一个类似的网站。

最后,我的仓库是 ryenxx/ryenxx.github.io

进阶


大唐狄公案

湖滨案

  • 三个案件交织在一起

  • 棋局对应后面的密码


如何管理自己的时间资产 - 面向信仰编程

制定目标

  • 短期 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的每一行数值进行不同比例缩放

  • Λn×nAn×D=[λ1000λ2000λn]n×n[a(1)a(2)a(n)]n×1=[λ1a(1)λ2a(2)λna(n)]n×1\boldsymbol{\Lambda}_{n \times n} \boldsymbol{A}_{n \times D}=\left[\begin{array}{cccc}\lambda_{1} & 0 & \cdots & 0 \\ 0 & \lambda_{2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_{n}\end{array}\right]_{n \times n}\left[\begin{array}{c}\boldsymbol{a}^{(1)} \\ \boldsymbol{a}^{(2)} \\ \vdots \\ \boldsymbol{a}^{(n)}\end{array}\right]_{n \times 1}=\left[\begin{array}{c}\lambda_{1} \boldsymbol{a}^{(1)} \\ \lambda_{2} \boldsymbol{a}^{(2)} \\ \vdots \\ \lambda_{n} a^{(n)}\end{array}\right]_{n \times 1}

右乘,对矩阵 A 的每一列数值进行不同比例缩放

  • An×DΛD×D=[a1a2aD][λ1000λ2000λD]=[λ1a1λ2a2λDaD]\begin{aligned} \boldsymbol{A}_{n \times D} \boldsymbol{\Lambda}_{D \times D} &=\left[\begin{array}{llll}a_{1} & a_{2} & \cdots & a_{D}\end{array}\right]\left[\begin{array}{cccc}\lambda_{1} & 0 & \cdots & 0 \\ 0 & \lambda_{2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_{D}\end{array}\right] \\ &=\left[\begin{array}{lllll}\lambda_{1} a_{1} & \lambda_{2} a_{2} & \cdots & \lambda_{D} a_{D}\end{array}\right] \end{aligned}

乘列向量:对列向量每个元素以不同比例分别缩放

乘行向量:对行向量每个元素以不同比例分别缩放

左右都乘:[[协方差]]矩阵

  • bij 相当于相关系数

对角矩阵元素特点 #card

  • 主对角线之外元素皆为 0

对角矩阵形状特点 #card

  • 可以是任何大小的矩阵,不要求是方阵

差分数组

差分是一种和前缀和相对的策略,可以当做是 求和 的逆运算
求差分数据的公式 #card

  • bi={aiai1i[2,n]a1i=1b_{i}= \begin{cases}a_{i}-a_{i-1} & i \in[2, n] \\ a_{1} & i=1\end{cases}

性质

  • ai 是 bi 的前缀和

  • 计算前缀和#card

    •  sum =i=1nai=i=1nj=1ibj=in(ni+1)bi\text { sum }=\sum_{i=1}^{n} a_{i}=\sum_{i=1}^{n} \sum_{j=1}^{i} b_{j}=\sum_{i}^{n}(n-i+1) b_{i}
  • 区间序列 [l,r] 加上一个数 k #card

    • blbl+k,br+1br+1kb_{l} \leftarrow b_{l}+k, b_{r+1} \leftarrow b_{r+1}-k

例题

和树状数组区别 #card

  • 树状数组:单点更新,区间查询

  • 差分数组:区间更新,单点查询


平稳性

平稳性

  • 存在某种周期、季节性及趋势的方差和均值不随时间变化

  • 从统计学角度,平稳性要求对于一个时间序列的取值满足一个确定的分布

平稳性是时间序列分析的基础

  • 如果一个时间序列是不平稳的,需要通过 差分 的方式将其转化为平稳时间序列。
    严平稳 strictly stationary

  • 时间序列中任意给定长度的两段子序列都满足相同的联合分布

弱平稳 weakly stationary

  • 时间序列满足均值平稳性 stationary in mean 和二阶平稳性 secondary order stationary

  • 时间序列 $$r_t$$ 满足下面两个条件,则它是弱平稳的

    • 对所有时刻 t,有 E[rt]=μE[r_t] = \mu,其中μ\mu是常数。
    • 对于所有时刻 t 和任意时间间隔 k,rtr_trtkr_{t-k} 的协方差 σ(rt,rtk)=γk\sigma(r_t, r_{t-k}) =\gamma _k, γk\gamma _k 与 t 无关,仅依赖于时间间隔 k。
  • 方差平稳性 stationary in variance

    • 当 k=0 σ(rt,rt)=γt\sigma(r_t, r_{t}) =\gamma _t, γt\gamma _t 是一个与时间 t 无关的常数且不随时间变化。
  • 关于 对所有时刻 t,有 E[rt]=μE[r_t] = \mu,其中μ\mu是常数。
    的例子

    • 假设指数的日收益序列满足弱平稳条件,对于某一天指数日收益的期望可以用前一段时间的收益期望来近似估计。
  • 平稳的随机过程 stationary stochastic process

非平稳性

  • 非平平稳数据会导致虚假回归,表现为两个没有任务因果关系的变量,却有很高的相关性

[[ADF 检验]] :<- 判断时间序列是否满足平稳性要求

  • 特殊时间序列

    • 时间序列 wt,t=[1,n]{w_t, t=[1,n]}wtw_t 满足均值 0 方差为 σ2\sigma^2([[正态分布]]),且对于任意的 k>0,[[自相关]]系数均为 0,则称该时间序列为一个离散的白噪声。

      • Xt=wt,wt(0,σ2)X_t=w_t, w_t\left(0, \sigma^2\right)
    • 时间序列 xtx_t,满足 xt=xt1+wtx_t=x_{t-1}+w_twtw_t 是一个均值 0 方差为 σ2\sigma^2 的白噪声,则序列 xtx_t 为一个随机游走。

      • Xt=Xt1+wt,Xt(0,tσ2)X_t=X_{t-1}+w_t, X_t\left(0, t \sigma^2\right)
  • 思想

    • 基于随机游走,对 Xt 回归,如果发现 p=1,说明该序列满足随机游走,就是非平稳的。

      • ρk=Cov(rt,rtk)σrtσrtk=Cov(rt,rtk)σrtσrt=γkγ0\rho_k=\frac{\operatorname{Cov}\left(r_t, r_{t-k}\right)}{\sigma_{r_t} \sigma_{r_{t-k}}}=\frac{\operatorname{Cov}\left(r_t, r_{t-k}\right)}{\sigma_{r_t} \sigma_{r_t}}=\frac{\gamma_k}{\gamma_0},利用弱平稳的性质

      • Xt=Xt1+utX_t=X_{t-1}+u_t 随机游走,非平稳

      • Xt=pXt1+utX_t=p X_{t-1}+u_t 如果 p=1,则 Xt有一个单位根

  • from statsmodels.tsa.stattools import adfuller as ADF

    • ADF 函数计算结果

      • 第一个参数 T检验,假设检验值。

      • 第二个参数,P-value,假设检验结果。

      • 第五个参数,不同程度拒绝原假设的统计值

  • 如何判断是否平稳

    • ADF 假设检验值同时小于 1% 5% 10% 不同程度拒绝原假设的统计值,说明非常好地拒绝该假设

      • 原假设存在单位根

      • 统计值小于 1%,认为拒绝原假设,该序列是平稳的。

    • [[P-value]] 是否非常接近 0

Ref


并查集

使用 UnionFind uf(n);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
struct UnionFind {
int n;
vector<int> parent, size;
UnionFind(int n) {
this->n = n;
parent = vector<int>(n);
size = vector<int>(n, 1);
for (int i = 0; i < n; ++i)
parent[i] = i;
}
int find(int idx) {
if (parent[idx] == idx)
return idx;
return parent[idx] = find(parent[idx]);
}
void connect(int a, int b) {
int fa = find(a), fb = find(b);
if (fa != fb) {
if (size[fa] > size[fb]) {
parent[fb] = fa;
size[fa] += size[fb];
} else {
parent[fa] = fb;
size[fb] += size[fa];
}
}
}

unordered_map<int, vector<int>> components() {
unordered_map<int, vector<int>> res;
for (int i = 0; i < n; ++i)
res[find(i)].emplace_back(i);
return res;
}
};

少楠通过 flomo 写 life log

记录内容 #card

  • 当日的情绪如何(分为 low、mid、good)

  • 当日的事情,从早到晚进行 log 一些概要,同时还有一些简单的感触

  • 记录情绪波动及原因:记录一天中自己的情绪发生了哪些变化,并尝试分析原因——比如,和什么事情有关、周围的环境如何、情绪是如何被触发的、引发了什么后果等

  • 当日创造性的时间

例子

  • 少楠的lifelog 2022/08/16 Lifelog/情绪/Good #card
    • 5 点多起床,翻看《神经的逻辑》 1 小时,做了两大段笔记,关于意识和潜意识系统,以及记忆的特点。

    • 上午开始处理客服问题,但是拖拖拉拉持续了一整天。

    • 午饭后本想开始设计 flomo 安卓版本的语音输入,但意识到这周不进入开发,优先级应降低,所以想了想框架就放下;然后设计优先级更高的编辑器——没有着急上手做,而是先思考了不同的可能,打了个草稿才开始。

    • 设计完编辑器,在户外写了图书新内容的草稿,推敲了逻辑结构,查找了不少资料,但是刻意没有进入正式写作流程,以免当日过于疲劳。

    • 处理客服问题,回家吃饭、休息。

    • 晚上又看了 1 小时资料,后半截感觉有点力竭,所以选择暂停输入,开始听歌休息。

记录的要点

  • 诚实面对内心,如实记录想法

    • 为什么诚实 #card

      • 记得有一天我情绪很低落,起因是有个营销方案我准备了许久,原本感觉胸有成竹,但在团队讨论时却爆出来一个很关键的缺陷,不得不重新来过。

      • 表面上看,这是一个思考不周的问题,但为何会让我情绪低落?通过自我追问和诚实地回答,我发现了更深层的原因:因为我觉得,我付出了那么多时间和精力,你们非但不鼓励,还一讨论就指出这么大的漏洞,让我下不来台,我的面子往哪里放?

      • 挖掘到这里,才触及问题的本源:自己情绪低落,是想要获得他人认可的预期被打破,继而产生了情绪上的反扑,想要找到别的理由去攻击他人。

    • 如何记录 #card

      • 第一,你可以试着把自己抽离出来,像观察最好的朋友那样观察自己。看到什么记什么,尽可能保持旁观者视角。

      • 第二,只记录,不评判。情绪没有好坏,不要苛责自己。当你把情绪当作“问题”的时候,往往会限制自己的视野;而当你把它当作“合理的存在”,视野反而宽广很多。

  • 不仅记录情绪,还要记录环境

    • 为什么要记录环境?:-> 因为人是环境的反应器,我们产生某种情绪,多半是受环境影响。如果我们换个环境,或者设计一个新环境,那么情绪也可能会随之变化。
    • 假如你的情绪陡然从开心变为沮丧,那么你可以记录一下, 在什么环境中发生了什么事情

广告系统

广告竞价划分 #card

  • ssp <-> adx(拍卖平台) <-> dsp

召回系统

精排,根据业务去挖掘特征

对模型效果比较重要的几部分

  • 数据流

    • 比较核心的目标是及时且准确地获取各种事件 (click,convert) 的 ground truth;“及时” 指的是 发生的事件需要尽可能快地喂给模型 ,“准确” 指的是 这些事件需要被正确打上 label。

    • 数据流与转化归因 (conversion attribution)

      • 归因可以理解为 label 的获取与拼接, 当前最常见的是 last touch 方式的归因,也有一些其他的归因方式如 multi-touch 归因等, 通常涉及到广告主的上报和实际的拼接两部分

      • [[delayed feedback]]

    • [[CTR Bias]]

      • [[exposure bias]] 只有曝光的样本才能进入训练集,[[负样本]]选择问题

      • [[position bias]]

    • 全渠道数据 [[全场景建模]]

      • 核心 :-> 将被 cvr 被低估的用户通过全渠道数据捞回来
      • 如何获得跨平台的样本? #card
        • 一种是广告主将媒体 A 的数据归因后直接回传给媒体 B,

        • 另一种则是媒体之间相互合作,如笔者做过的联邦学习在广告的落地应用就是属于这部分。

  • [[特征工程]] dnn 模型的特征选择

    • 常用挖掘套路 #card

      • 属性特征:用户 / 广告本身的一些属性,如用户的年龄、性别;广告的类别、样式等

      • 统计特征:用户在特定时间范围 (如过去 7d、 3d、 12h、1h 等) 对当前广告的特定的维度 (如特定类别、特定位置、特定广告主等) 的广告进行了特定操作 (如点击、浏览等) 的次数;

      • 序列特征:即用户在一段时间内的行为序列,如最近 30 个点击过的广告 / 商品;典型的应用可参考阿里的 DIN

    • [[特征筛选]]

      • 最简单的做法是删除指定特征,然后重新训练模型并评估,但是这种做法在训练时长较长时开销是比较大的

      • 在训练过程中便能得到每个特征的重要性

        • 为每个 feature 增加一个 attention unit,如 DIN [[activation unit]] #card

          • ,训练过程中通过这个 attention unit 输出的值来衡量每个特征重要性;其假设是对于重要特征,模型能够自动学习出其权重情况
        • embedding weight:#card

          • 根据每个 feature 对应的 embedding 的值大小来判断重要性, 常见的有基于 embedding 的 L1 norm,L2 norm 等;其假设是对于重要特征,其对应的 embedding 的值越大,类比 lr,其实 nn 可以近似认为是多个 lr 组成的
        • 回到最开始的想法,即删除指定特征,然后重新训练模型并评估,能否在训练过程中便达到这一目的呢?#card

          • 其实是可以的,在训练过程中通过 mask 的方式近似将 embedding 全置为 0,近似当做 drop 掉这个特征,然后通过 multi-head 的方式计算这部分 auc 即可。
  • 训练

    • 模型结构可解释性

      • VC Dimension:#card

        • VC Dimension 本质上是在描述数据量大小和模型大小的关系,即模型参数量应该与数据量大小成正比关系,否则容易出现过拟合或欠拟合的问题
      • 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

          • 是因为 NN 的优化往往是一个 non-convex 的问题, 如果初始化不好,一开始可能就处于一个不好的位置;
        • 从 bp 的角度理解,#card

          • 初始化的值过小或过大,容易导致梯度消失会梯度爆炸,关于这部分,deeplearning.ai 上的 Initializing neural networks 讲得比较好了,还辅以实践,推荐读一下。
      • 优化器 #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

          • 比较经典的就是 youtube 的 Deep Neural Networks for YouTube Recommendations 中 Modeling Expected Watch Time 部分;
        • 基于最原始 cross entropy 衍生出来的 loss 主要有两种形式#card

          • reweight, 即对样本进行各种加权, 包括但不限于根据物理含义直接加权 (如观看时长)、通过 importance sampling 等方式推导出来的 loss,其最终形式也是 reweight 的模式

          • auxiliary/regularization, 即在原始的 task 上增加一些辅助任务或正则项,如 center loss 等

  • 预估纠偏 [[CTR 校准]]

    • [[保序回归]]

    • 上面在 loss 中对样本进行 reweight 的方式,会影响正负样本的分布,导致统计意义上预估值的就是有偏的,应对的策略#card

      • 可以在训练阶段就进行纠偏,或者在预估值上直接做一个转换,这部分内容可参考这篇文章 Delayed FeedBack In Computational Advertising 的 Fake negative calibration

出价 [[bidding]],计算广告相对于推荐最大的不同点

[[冷启动]]

  • 利用 meta-network 为冷启动的 item 生成一个 id embedding

    • item 的 meta 信息通过小网络生成 embedding

    • 增加一些 [[auxiliary task]] 来训练小网络

  • MAML 方法训练模型,让 embedding 更快收敛

Ref


张量积

任意两个大小矩阵之间的运算

ABA \otimes B

ab=[a1a2an]n×1[b1b2bm]m×1=abT=[a1a2an][b1b2bm]T=[a1b1a1b2a1bma2b1a2b2a2bmanb1anb2anbm]n×m\boldsymbol{a} \otimes \boldsymbol{b}=\left[\begin{array}{c}a_{1} \\ a_{2} \\ \vdots \\ a_{n}\end{array}\right]_{n \times 1} \otimes\left[\begin{array}{c}b_{1} \\ b_{2} \\ \vdots \\ b_{m}\end{array}\right]_{m \times 1}=\boldsymbol{a} \boldsymbol{b}^{\mathrm{T}}=\left[\begin{array}{c}a_{1} \\ a_{2} \\ \vdots \\ a_{n}\end{array}\right]\left[\begin{array}{c}b_{1} \\ b_{2} \\ \vdots \\ b_{m}\end{array}\right]^{\mathrm{T}}=\left[\begin{array}{cccc}a_{1} b_{1} & a_{1} b_{2} & \cdots & a_{1} b_{m} \\ a_{2} b_{1} & a_{2} b_{2} & \cdots & a_{2} b_{m} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n} b_{1} & a_{n} b_{2} & \cdots & a_{n} b_{m}\end{array}\right]_{n \times m}

AB=[a1,1a1,2a2,1a2,2][b1,1b1,2b2,1b2,2]=[a1,1Ba1,2Ba2,1Ba2,2B]\boldsymbol{A} \otimes \boldsymbol{B}=\left[\begin{array}{ll}a_{1,1} & a_{1,2} \\ a_{2,1} & a_{2,2}\end{array}\right] \otimes\left[\begin{array}{ll}b_{1,1} & b_{1,2} \\ b_{2,1} & b_{2,2}\end{array}\right]=\left[\begin{array}{ll}a_{1,1} \boldsymbol{B} & a_{1,2} \boldsymbol{B} \\ a_{2,1} \boldsymbol{B} & a_{2,2} \boldsymbol{B}\end{array}\right]

几何解释

离散随机变量独立条件下,联合概率 pxy 是 px 和 py 的边缘概率的乘积 [[从加减乘除到机器学习/矩阵力量]] ch02


推荐系统 embedding 技术实践总结

embedding 和 ont 如何对比?

基于词向量的固定表征:word2vec、fastText、glove

基于词向量的动态表征:elmo、GPT、bert。

[[DSSM]] 保证 user 和 item 在同一个向量空间,之后可以进行计算。

基于 embedding 的召回

  • [[i2i 召回]] 算法

    • tag2vec:取文章的部分标签向量代表文章的向量(对应多个 embedding 如何处理)

    • item2item 计算:faiss 计算每篇文章的相似文章

      • content i2i
    • 其他召回和这个套路类似,就是训练 embedding 向量的时候,略有差异。tag2vec 是训练中文词语的向量,而 item2vec 是训练文章 ID(aid)所对应的向量,media2vec 训练的是文章的作者 ID(mid)所对应的向量,loc2vec 是训练地域名称所对应的向量,title2vec 是用 LSTM 训练得到的文章标题向量,doc2vec 是用 bert 计算出的文章正文(或者摘要)的向量。entity2vec 是利用我们自己构建的知识图谱通过 transE 得到的

  • u2i 召回

  • 分群召回

image.png

+ 方法

  + 簇召回,用户 tag 用聚类算法聚成若干个簇
  • 增量聚类

其他

  • [[Youtube DNN]] 是开山之作

    • 所有特征(无论离线连续,单值多值)全部转化为 embedding,

    • 把各种 embedding 拼接在一起构成一个向量送入 dnn。

  • Airbnb 在稀疏样本构造上有所创新。

    • 分群 embedding

    • 用户和 item 混合训练

特征 embedding

embedding 运算

image.png

embedding 痛点

  • 增量更新的语义不变性

  • 很难同时包含多个特征

  • 长尾数据难以训练

embedding 总结 #card
image.png


怎么样读文献才比较高效

反复做一件事,机会成本太高。

每星期阅读三篇

记录什么

  • 文献的基本信息(期刊、年限、作者);

  • 重要结论

  • 重点公式

  • 重点图片

  • 个人收获

  • 存在的问题及如何解决


戴晓天论文笔记模板

阅读时整理、记录作者的思想和结论。做好标签和分类

维护核心文献列表

论文笔记框架

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# {Title}(文章标题)
{Year}, {Authors}, {Journal Name}
{引用格式}

## Summary

写完笔记之后最后填,概述文章的内容,以后查阅笔记的时候先看这一段。注:写文章summary切记需要通过自己的思考,用自己的语言描述。忌讳直接Ctrl + c原文。

## Research Objective(s)

作者的研究目标是什么?

## Background / Problem Statement

研究的背景以及问题陈述:作者需要解决的问题是什么?

## Method(s)

作者解决问题的方法/算法是什么?是否基于前人的方法?基于了哪些?

## Evaluation

作者如何评估自己的方法?实验的setup是什么样的?感兴趣实验数据和结果有哪些?有没有问题或者可以借鉴的地方?

## Conclusion

作者给出了哪些结论?哪些是strong conclusions, 哪些又是weak的conclusions(即作者并没有通过实验提供evidence,只在discussion中提到;或实验的数据并没有给出充分的evidence)?

## Notes

(optional) 不在以上列表中,但需要特别记录的笔记。

## References

(optional) 列出相关性高的文献,以便之后可以继续track下去。

例子


我的 Mac 设置

使用 [[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]]

[[Alfred]]

[[Squirrel]]

  • 用户配置文件 ~/Library/Rime

  • installation.yaml

[[Logi]] Options

  • MX Master 2s 鼠标配置

  • 滚动模式,逐段模式

[[Zotero]]

[[PDF expert]]

[[DEVONthink]]

[[VS Code]]

[[Sublime Text]]

[[Sublime Merge]]


搜广推算法

[[搜广推算法的意义]]

[[Feature Engineering]]

  • 可以划分成一下几个维度 #card
    • 用户侧特征(profile、bias)

    • item侧特征(属性、bias)

    • context侧特征

    • 笛卡尔积特征(id类、可泛化类特征)

    • 序列特征

[[Query Processor]]

  • [[Query 类目预测]] :-> 对用户query进行分类,判断用户的商品类目意图
  • [[Query 改写]] :-> 通过对用户的query进行归一、纠错、拓展、丢词等处理,做到更好的商品召回和匹配。
    • Query 归一 :-> 通过简单的字符串处理进行query改写,如去空格、大小写转换、特殊字符处理等,为最简单的query改写方式。
    • Query 纠错 :-> 对有拼写错误的query进行主动纠错,减少误召回,提升召回数量和准确性。
    • Query 丢词 :-> 对于空结果、少结果query进行非关键词的丢弃,一般用于二次召回,提高召回数量。
    • [[Query 拓展]] :-> 根据query语义或意图进行拓展,找到与源query意图一致的一组query,并与源query一同进行检索,进而丰富搜索召回的结果。
  • [[Query 实体识别]] :-> 对query进行序列标注,识别query中的品牌、品类等属性信息,以帮助更精细的匹配用户意图。
  • [[Query term weighting]] :-> 通过识别query中term的重要度,理解用户核心意图,进一步提升query和商品的相关性。

[[召回]] 覆盖率和多样性

[[相关性]]

[[粗排]] 海选

  • 粗排阶段的目标是从约上万级别的候选中筛选出合规、相关且成交效率高的topN商品,这里N通常是上千量级。

  • baseline 模

    • 静态分排序

    • LR

    • [[双塔粗排模型]]

  • 优化方法

    • COLD 实现深度特征交叉 [[三塔粗排模型]]

    • 通过模型蒸馏技术逼近粗排和精排的排序效果、

    • 通过多任务联合综合考虑多目标的优化等

  • 用 bias 去换 variance

    • [[@推荐系统中,粗排和精排的区别是什么,粗排又应该怎样评估模型好坏?]]

      • [[粗排目标是判断item是否在精排 topk]]
  • [[粗排样本选择]]

  • [[粗排模型评估方法]] auc 或 hitrate

  • [[粗排分数融合]] 线性融合or离散化分档

  • [[粗排工程优化]]

[[精排]]

  • [[协同过滤]]:协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。

  • [[矩阵分解]]:使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征。

    • [[Neural CF]] 利用 MLP 替代原来 MF 中的点击
  • [[Logistic Regression]] 在使用 user 和 item 是否交互以及交互程度信息的基础上,使用 context 信息、user 和 item 相关信息,并将推荐看成分类问题

    • 稀疏性

      • [[Lasso Regression]] L1

      • [[Ridge Regression]] L2

  • [[FM]] 自动建模特征间的二阶交叉

  • [[Tree Model]]

  • #card [[GBDT+LR]] 利用 GBDT 产生高维非线性特征

    • 树模型很难学习高度稀疏数据的特征组合

    • 树的深度决定是几阶交叉

    • GBDT 的特征转化方式实际上失去了大量特征的数值信息,不一定就会比 FFM 效果好。

  • [[MLR]] 通过多个局部 model 解决长尾问题

    • 端到端的非线性学习能力,模型稀疏性强。
  • DNN & Embedding

    • 典型的深度CTR模型可以分成以下四个部分:输入、特征嵌入(Embedding)、特征交互(有时候也称为特征提取)和输出。

      • input->embedding

      • embedding:concatenate, product, weight sum, bi-interaction

      • embeding->output

        • 这一步中如果使用 mean pooling 会丢失部分信息
    • 通过 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 特征交叉。

      • Cross网络 利用 Cross 网络替代原来的 Wide 部分。
    • [[DeepFM]] FM+Embedding+MLP

    • [[xDeepFM]] vector-wise 交叉

    • [[Attention]] 机制作用于深度神经网络,将原来的 pooling 改成加权求和或加权平均

      • [[AFM]] 二阶交叉部分引入 [[Attention]] ,后来没有接 MLP

        • 注意力网络:简单全连接层 + softmax 输出层
      • [[DIN]]

        • DICE 激活函数

        • GAUC

        • Adaptive 正则化方法

      • [[DIEN]] 关注序列信息,通过 AUGRU 机制模拟用户兴趣进化的过程。

    • [[DeepMCP]]

    • [[AutoInt]] 特征工程自动化

  • [[@MMOE或PLE 在推荐系统点击&成交联合训练的场景下为什么跟 ShareBottom 效果差不多?]]

  • [[行为序列建模]]

    • [[为什么在推荐系统中引入注意力机制能够有效果上的提升?]]

    • [[搜推算法的序列建模需要做self-attention吗?]]

    • [[序列建模可以建模联合概率吗]]

  • [[多任务和多目标]]

  • [[Life Long Learning]]

  • [[交叉维度看精排模型]]

[[重排]]

机制 auction 和策略

  • LTR

    • 模型或者规则的泛化能力要强,需要适应精排模型结果的强烈变化
  • [[为什么需要做校准]]

[[混排]]

横向技术

搜广推大模型

[[推荐系统]]

[[搜索系统]]

  • [[排序模型优化]] 从数据(label)、特征和模型(网络结构)三个方面入手

  • 查询建议 SUG

  • [[单列和双列]]

  • [[垂搜 vs 通搜]]

[[广告系统]]

不同算法之间的区别

参考资料


操作系统

线程和进程

  • [[线程]] 一段线性执行的程序

    • 多线程实现并行计算,操作系统将这些线程分配给多个 CPU 同时运行,它们使用不同的寄存器,但可以共享同一个内存空间。
  • [[进程]] 操作系统提供给每个应用程序的一个隔离环境(CPU 和内存)

    • 分配 CPU 的调度机制,尽量均匀分配 CPU。

    • 分配内存的虚拟内存机制

    • 多进程为了多个应用程序提供隔离环境

  • 在一个进程里使用多线程使用的是同一套上下文,多进程使用的是不同的上下文和内存空间

  • [[协程]] 线性逻辑

    • 在一个线程上进行多条逻辑线的运行,物理上是顺序执行,不存在并行的qkl,但逻辑上是有多条逻辑线

Ref


数字坟墓

人的一生,要死去三次:

  • 第一次,当你的心跳停止,呼吸消逝,你在生物学上被宣告了死亡;

  • 第二次,当你下葬,人们穿着黑衣出席你的葬礼,他们宣告,你在这个社会上不复存在,你悄然离去;

  • 第三次,是这个世界上最后一个记得你的人,把你忘记,于是,你就真正的死去,整个宇宙都不再和你有关。

[[张潇雨]]在人生总有一刻,我们会开始思考死亡 - 知乎总结到面对死亡的两种方法:

  • 一种是将自己与一些更宏大的东西联系起来:**一个数学定理、一本文学著作、一件艺术作品或一种恒久的信仰。**马尔克斯与康德靠《百年孤独》与《纯粹理性批判》遗世独立,米开朗基罗把《创世纪》和《最后的审判》印刻在西斯廷大教堂里,供千万后朝拜——他们肉身虽灭,但精神不朽——反正建筑是永远戳在那儿的。还有一种就是,生活在当下的每个瞬间里,不烦扰过去、不担忧将来

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]]


方差

有偏估计与[[无偏估计]]

  • 样本方差与整体方差相等时是无偏估计,样本方差分母是 n-1 为了追求无偏估计

方法论

[[how to read a paper]]

[[Spaced Repetition]]

  • [[Anki]]

    • [[使用 Anki 进行增量阅读]]

[[Zettelkasten]]

  • [[Antinet Zettelkasten]]

    • [[本恰恰谈 Antinet Zettelkasten]]

实践参考

  • [[chyixian]]

  • [[两阶段笔记]]

  • [[@seanmiona 卡片笔记法参考]]

  • [[@如何在 Roam Research 做学术研究:一个实例]]

[[项飙]]所说,如何理解自己身边的事情。

Hum 方向与工具之争

找到方向和掌握工具思维,我从做 Power+ 这一年里学到的两件事

⚙️【方法论】我的效率提升方法论 - 工具使用篇 ⑥ 字节员工@


无偏估计

计算总体的均值和方差时,拿到的数据是对总体的采样,因此计算出的方差比总体方差小σ2n\frac{\sigma^2}{n}


时间序列专题学习

[[时间序列预测]]

  • 时间序列分析的核心是挖掘该时间序列的自相关性

  • [[石川@写给你的金融时间序列分析]]

  • DONE [[随风@时间序列分析]] 知乎上写的很好教程:包括基础知识讲解(还是石川讲得更加详细)以及通过支付宝数据演示如何利用各种方法和模型。

  • DONE [[字节@漫谈时间序列预测]]
    completed:: [[2023/02/27]]

  • [[Time Series Forecasting With Deep Learning: A Survey]] 牛津大学关于时间序列预测深度学习方法总结

  • [[Deep learning for time series classification: a review]] 时间序列分类

[[时间序列分解]]

比赛相关

[[@Time-series Extreme Event Forecasting with Neural Networks at Uber]]

[[Time Series Transformer]]

[[@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]]

时间序列增强

  • Time Series Data Augmentation for Deep Learning: A Survey

时间序列分解

时间序列分解为周期项 + 趋势项 + 节假日项

分解方式

  • 分类

    • 加性

      • Yt=St+Tt+RtY_t=S_t+T_t+R_t
    • 乘性

      • Yt=St×Tt×RtY_t=S_t \times T_t \times R_t
  • ^S^eason

    • 计算原始序列数据-趋势值之后的 detrend 值在周期内的均值
  • ^T^rend

    • 计算序列的[[移动平均]]

    • sktime 多项式回归

  • ^R^esidual

    • 原始数据 - Season - Trend
  • [[Python/package]] statsmodels.tsa.seasonalseasonal_decompose

季节性和周期性

  • 季节性总是具有固定的已知频率

  • 周期性的波动频率不是固定的

时间序列分解1 - 知乎 (zhihu.com)

  • 时间序列分解如何和时间序列预测结合?

    • gbdt 外推能力差,对于趋势性强的时间序列数据的拟合能力比较差,通过时间序列分解之后去除趋势性部分,剩下季节性+残差部分用 gbdt 进行拟合。

    • 扩展开来趋势项可以用 lr 或 nn 拟合,剩余部分使用 gbdt 拟合

      • 双重误差问题,gbdt 在 lr 或 nn 基础上再进行拟合,如果外推模型本身存在过拟合,gbdt 会错上加错。
    • 缺点

      • 经典时间序列分解方法简单,精度低。电商的节假日无法分解

      • 季节性分解做的比较简单,每一个周期内的值都是不变的

      • 无法分解多个周期性嵌套的时间序列问题


时间序列缺失值处理

判断 Missing at Random 还是 Missing not at Random

  • 前者删除,后者插补

直接删除法

  • 舍弃数据中的一些重要信息

基于统计学的填充方法

  • 均值填充,中值填充,常用值填充,上下填补法,前后加权均值法

  • 忽略数据的时序信息

基于机器学习的填充方法

  • [[KNN]],[[RNN]],[[EM]],[[MF]]

  • [[E2GAN]] 时间序列插值算法框架,利用 GAN 来进行时间序列插值

  • 很少考虑两个相邻数据间的时序信息

Ref


时间序列预测/基本数学概念

自协方差

  • 信号与其经过时间平移的信号之间的[[协方差]]

    • 信号与其自身经过一定时间平移之后的相似性
  • r(k)=1nΣt=k+1n(ZtZˉ)(ZtkZˉ)r(k)=\frac{1}{n} \Sigma_{t=k+1}^n\left(Z_t-\bar{Z}\right)\left(Z_{t-k}-\bar{Z}\right)

[[自相关]]系数 ACF

  • ACF(k)=Σt=k+1n(ZtZˉ)(ZtkZˉ)Σt=1n(ZtZˉ)2A C F(k)=\Sigma_{t=k+1}^n \frac{\left(Z_t-\bar{Z}\right)\left(Z_{t-k}-\bar{Z}\right)}{\Sigma_{t=1}^n\left(Z_t-\bar{Z}\right)^2}

  • 衡量信号其自身在不同时间点的相关度

  • 找出重复模式或识别隐含在谐波频率中小时的基频

偏自相关系数 [[PACF]]

  • 自相关衡量想要衡量 z(t) 和 z(t-k) 的相关关系,实际上 z(t) 还会受到 z(t-1) 到 z(t-k-1) 的影响。

  • PACF 单纯测量 z(t-k) 对 z(t) 的影响

    • PACF(k)=E(ZtEZt)(ZtkEZtk)E(ZtEZt)2E(ZtkEZtk)2=cov[(ZtZˉt),(ZtkZtk)]var(ZtZˉt))var(ZtkZtk)P A C F(k)=\frac{E\left(Z_t-E Z_t\right)\left(Z_{t-k}-E Z_{t-k}\right)}{\sqrt{E\left(Z_t-E Z_t\right)^2} \sqrt{E\left(Z_{t-k}-E Z_{t-k}\right)^2}}=\frac{\operatorname{cov}\left[\left(Z_t-\bar{Z}_t\right),\left(Z_{t-k}-Z_{t-k}^{-}\right)\right]}{\left.\sqrt{\left.\operatorname{var}\left(Z_t-\bar{Z}_t\right)\right)} \sqrt{\operatorname{var}\left(Z_{t-k}-Z_{t-k}^{-}\right.}\right)}
  • 偏相关

    • 计算某一个要素对另一个要素的影响或相关程度时,把其他要素的影响视为常数u,即暂时不考虑其他要素的影响,而单独研究那两个要素之间的相互关系的密切程度
  • PACF 和 ACF 区别

    • ACF 一个期望,用整个时间序列的期望

    • PACF 两个期望,两个序列用各自序列的期望


时间序列预测/Ref

关于时间序列预测的一些总结 - 知乎 (zhihu.com)

  • 特征工程使用滑动窗口,最小值,最大值,均值,方差

  • 概念漂移

    • 目标标量的统计特征随着时间的推移以不可预见的方式变化,每过一段时间序列的规律会变化。

    • 不能用全部时间内的数据去训练

  • 序列自相关性

    • 如果预测结果和实际值存在滞后性,可能序列存在自相关性,可以通过差分运算消除自相关性

    • 计算一个基准值,用基准值做为预测结果计算平均绝对误差或 r2 系数

  • [[时间序列分解]]

    • 针对明显周期和非平稳时序数据,可以利用经验模式分解(empirical mode decomposition,EMD)和长短期记忆(long short-term memory, LSTM)的组合算法应用于预测

时间序列和回归分析有什么本质区别? - 知乎 (zhihu.com)

  • 时间序列分析的目标是:了解过去,预测未来

  • 时间序列数据的特征是

    • 自相关性

    • 不可交换性(样本顺序不能交换)

  • 时间序列利用数据之间的相关性进行预测,回归分析假设每个数据点都是独立的。

有什么好的模型可以做高精度的时间序列预测呢? - 知乎 (zhihu.com)

  • 预测打车订单和预测风速的区别

    • 形成机制

      • 前者人的行为驱动,后者由自然因素驱动

      • 人为因素驱动内在机理比较清楚

      • 自然因素驱动内在机理难以刻画

    • 预测人群行为相对来说更加简单

      • 个人行为有明显的规律性(早晚)

      • 个人行为有明显的周期性(每周)

      • 不同人的行为近似独立(你打车和我打车没有关系)

      • 打车订单可以看成大量的独立随机变量之和,波动性不大,呈现出明显的周期性

    • 风速预测难点

      • 时间粒度细

      • 影响风速的因素多,且难以量化

      • 风的周期通常以年为单位,对短期风速预测帮助不大

      • 风通常分为大风年和小风年,没有趋势项。搞清楚了大小风年有利于评估全年风力资源,但对短期风速预测帮助不大。

  • [[ARIMA]] 描述平稳的时间序列自相关性的典型方法

    • 当残差通过白噪声检验,表示建立一个合理的模型。

    • 如果需要给出置信区间,需要对残差的平方进行白噪声检验。

    • 如果存在异方差,需要通过 [[GARCH]] 进一步提取残差信息

  • [[时间序列分解]]

    • STH 分解

      • [[Prophet]]

      • 时间序列分解为周期项 + 趋势项 + 节假日项

      • 趋势项通过线性函数、对数函数和指数函数拟合

      • 周期项通过傅里叶分解、周期核函数拟合

    • 信号分解

      • 将时间序列分解为高频和低频信号,对分离后的信号用模型拟合

      • 分解方法

        • 傅里叶分解

        • 小波分解

        • 经验模态分解 EMD

        • 变分模态分解 VMD

    • LN 分解

      • 将时间序列数据分解成线性项L和非线性项N,再拟合。

时间序列预测

[[平稳性]] 是时间序列分析的基础,通过 [[ADF 检验]] 判断时间序列是否满足平稳性的要求。

[[时间序列预测/基本数学概念]] 介绍自协方差、自相关系数、偏自相关系数等概念。

[[时间序列预测/评价指标]]有 [[R2 score]]、MAE、MAPE、SMAPEWMAPE 等。

[[传统时间序列预测]]以 AR、MR、ARMA、ARIMA 等序列自回归方法为主。

[[深度学习时间序列预测]]

[[时间序列特征工程]] 三个方向: 时间戳衍生
, ((6302f9ee-1eb7-47ab-af57-17f933664bcb)), ((6302f9ee-52e1-48af-86b1-4e01ff3a4a64))

任务分类

  • Forecasting step

    • one-step

    • multi-step

  • Inputting variables

    • autoregressive

    • covariate

  • Outputting

    • Single point

    • Probability

  • Forecasting target

    • univariate 单变量

    • multivariate

[[时间序列预测/Ref]]

[[Transformer 是否适合时间序列预测]]


期望

离散情况下:结果乘以结果概率的总和

连续 $$E(x) = \int xf(x)dx$$


机器学习中的数学

[[PRML]] 贝叶斯视角

[[The Elements of Statistical Learning]] 统计角度,ensemble 和 decision tree

Probabilistic Machine Learning: An Introduction


机器学习

原则

  • 将学习的内容整理进入自己的框架,放在其他单独的页面没有价值。

    • 暂时不知道放在哪里的内容先统一放到一个地方
  • 参考[[AI算法工程师手册]]整理到什么程度

  • 之前遗留下来的

    • [[@百面机器学习]]

    • 李宏毅强化学习笔记

    • [[一文看懂深度学习模型压缩和加速]] 整理到模型压缩和相关部分

    • [[白板机器学习]]

什么是机器学习?

  • Mitchell 「对于某类任务 T 和性能度量 P,一个计算机程序被认为可以从经验 E 中学习是指,通过经验 E 改进后,搭载任务 T 上由性能度量 P 衡量的性能有所提升。」

  • 机器学习本质属于应用统计学,更多关注于如何用计算机统计估计复杂函数。

  • 基础知识 + 模型 + 实践

    • 模型可以从两个地方获得:论文以及工业实践的文章

任务分类

  • 样本特征向量和标签之间存在未知函数关系

  • 条件概率 $$p(y|x)$$ 服从某个未知分布

算法分类

  • 监督学习

    • 期望风险最小化

    • 最大似然估计

  • 无监督学习

    • 最大似然估计

    • 最小重构错误

  • 强化学习

理论和定理

  • 可能近似正确(Probably Approximately Correct,PAC)学习理论

  • 没有免费午餐定理(No Free Lunch Theorem,NFL)

  • [[奥卡姆剃刀]]

  • 丑小鸭定理(Ugly Duckling Theorem)

    • “丑小鸭与白天鹅之间的区别和两只白天鹅之间的区别一样大”
  • [[inductive bias]]

    • 贝叶斯学习中的先验[[Prior]]

基础知识

数据处理

  • [[特征工程]] 是当前大多数机器学习任务的瓶颈。

  • [[Normalization]]

    • [[为什么要做归一化]]

    • [[归一化方法]]

    • [[归一化和标准化]]

    • [[Internal Covariance Shift]]

    • [[Normalization 实战]]

    • [[Normalization操作的Re-Scaling不变性]]

    • 不同变种

      • [[Batch Normalization]]

        • [[Batch Normalization/维度理解]]

        • [[Batch Normalization/多卡同步]]

        • [[Batch Normalization 为何有效]]

      • [[Group Normalization]]

      • [[Layer Normalization]]

      • [[Instance Normalization]]

  • [[Initialization]]

  • [[Standardization]]

  • [[离散化]]

    • [[离散化方法]]

    • [[离散化和归一化有哪些优缺点]]

基础知识

评估指标

  • [[AUC]]

    • [[gauc]]

    • [[Base AUC]]

[[Tree Model]]

[[Logistic Regression]]

[[VAE]]

[[FM]]

  • [[FM模型与逻辑回归相比有什么优缺点?]]

深度神经网络 [[DNN]]

  • [[BNN]]

[[Optimization]]

卷积神经网络 [[CNN]]

  • [[TCN]]

  • [[CNN 卷积核]]

  • [[Pooling]]

    • [[为什么CNN需要 pooling操作?]]

图神经网络

[[Transformer]]

词向量 [[Word Embedding]]

[[CTR]]

[[集成学习]]

[[CV]]

  • linear probe

[[GAN]]

  • [[IRGAN]] 分类器生成文档序列,判别器去判别

[[评估指标]]

训练

  • 数据并行、模型并行

  • 同步训练、异步训练

  • Parameter Server架构、Ring allreduce架构

优化

  • [[Tensorflow 模型量化]]

  • 联邦学习

  • [[模型蒸馏]]

  • 数据集相关 [[Data]]

[[机器学习参考]]


机器学习模型设计五要素

{x,y}

  • 根据业务特点提取数据

f(x)

  • 参数量

    • 通过[[VC维]]衡量模型复杂度
  • 结构,都有自己的 [[inductive bias]]

    • [[Linear Regression]] 学习线性特征,特征工程提高非线性能力

    • [[MLR]] 每个分片拥有自己的参数

    • [[FM]] 自动做特征交叉

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)提高“信息利用率”,挖到之前挖不到的规律;


杀戮尖塔

碎心

路线选择

  • 一层

    • 除了观者,别的角色多走小怪,适当走?

    • 没把握少打精英,最好选择火堆数量较多的路线,卡组强化或者火堆回血苟命

    • 机器人和猎人最好不要碰一层精英

  • 二层

    • 除了观者,其他角色都选择?跑路。

    • 二层怪物强度远远超过一层

  • 三层

    • 自由选择
  • 观者

    • 敲完初始卡组中的暴怒,可以走精英。

卡牌

怪物

  • 一层前三个弱怪池,必须抓到过度的输出牌

  • [[杀戮尖塔怪物]]

  • [[杀戮尖塔精英怪物]]

  • [[杀戮尖塔/Boss]]

端口化理论

  • 数值类: 输出端防御端
  • 运转类: 弃牌端抽牌端加费端

职业分类

Ref


李录

[[Charlie Munger]] 在中国的传人,喜马拉雅资本

[[@文明、现代化、价值投资与中国]]


梯度

什么是梯度?

  • 梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。

  • 当函数为一维函数的时候,梯度其实就是导数。

[[梯度爆炸]] 以及 [[梯度消失]]

  • 解决方法

    • ReLU 等激活函数替代 sigmoid 函数

      • ReLU 的导数在正数部分恒等于 1
    • [[Batch Normalization]]

    • LSTM 结构设计代替 RNN

    • [[梯度裁剪]]

    • 权重正则化 [[Regularization]],通过对网络权重做正则限制过拟合

      • Loss=(yWTx)2+αW2\operatorname{Loss}=\left(\mathrm{y}-\mathrm{W}^{\mathrm{T}} \mathrm{x}\right)^2+\alpha\|\mathrm{W}\|^2

      • 发生梯度爆炸时,权值的范数就会变得非常大,通过正则化项,一直梯度爆炸的发生。

    • [[ResNet]]

[[DNN]] 不同层学习的速度差异很大,在网络中靠近输出的层学习情况很好,靠近输入的层学习很慢,有时甚至训练很久,前几层权值和刚开始随机初始化的值差不多。梯度消失、爆炸的根本原因在于反向传播训练法则。

image.png


梯度下降法

在机器学习任务中,需要最小化损失函数 L(θ){L(\theta )} 来,其中 θ{\theta} 是模型的参数。梯度下降法常用来求解无约束的最优化问题,它在选定的初始值 θ0{\theta_0} 基础上不断迭代得到新的 θ{\theta} 值,最终实现极小化损失函数。

迭代公式:θt=θt1+Δθ{\theta ^t = \theta ^{t-1} + \Delta \theta}

  • L(θt){L(\theta ^t)}θt1{\theta ^{t-1}} 处进行一阶泰勒展开:L(θt)=L(θt1+Δθ)L(θt1)+L(θt1)Δθ{L(\theta ^t)=L(\theta ^{t-1} + \Delta \theta) \approx L(\theta ^{t-1}) + L^\prime(\theta ^{t-1})\Delta \theta}

  • 要使 L(θt)<L(θt1){L(\theta ^t) < L(\theta ^{t-1}) },取 Δθ=αL(θt1){\Delta \theta = -\alpha L^\prime(\theta ^{t-1})}

  • 其中 α{\alpha} 是步长,可以通过 line search 确定,但一般直接赋一个小的数。

See Also


梯度消失

原因

  • 层数过多

  • 不合适的激活函数

    • sigmoid

当前层学习速率低于后面层学习速率,层数增加,分类准确率下降


梯度爆炸

原因

  • 层数过多

    • 链式法则是一个连乘的形式
  • 权重初始化值过大

    • 网络之间的梯度值大于 1.0

表现

  • 权重值很大甚至溢出

  • 模型不稳定,更新过程中损失出现显著变化

发生梯度爆炸有什么表现?

  • 模型无法从训练数据中获得更新

  • 模型不稳定,导致更新过程中的损失出现显著变化

  • 训练过程中,模型损失变成 NaN


梯度裁剪

常见做法

  • 根据参数的 gradient 值直接进行裁剪

  • 根据若干参数的 gradient 组成的 vector 的 L2 norm 进行裁剪

    • 设定 clip_norm

    • 反向传播后计算参数 gradient 构成 vector 的 L2norm,记为 LNorm

    • 计算缩放因子 scale_factor = clip_norm/LNorm

    • tf.clip_by_global_norm

image.png

Ref


概率论

[[条件概率]] :-> 在某一时间已发生的条件下,另一事件发生的概率。
[[联合概率]] :-> 两个或多个事件同时发生的概率
[[边缘概率]] Marginal Probability :-> 通过将联合概率对无关变量求和(或积分)得到单个事件的概率。
常用概率分布

[[大数定律]]

[[中心极限定理]]

[[Bayes theorem]]

概率和统计的区别?

  • 概率 :<-> 已知模型和参数,求数据。

  • 统计 :<-> 已知数据,推模型和参数。
    [[概率质量函数]] 描述 :-> 一个离散概率分布 (变量的取值范围是个离散集合)
    [[概率密度函数]] 描述 :-> 一个连续概率分布(变量的取值范围是个连续集合)

  • 对应 x 的概率取值 f(x)

  • 对 f(x) 求积分得到 [[累积分布函数]] F(a)=af(x)dxF(a)=\int_{-\infty}^a f(x) dx

[[KL Divergence]]

[[参数估计]] :-> 找到解释已有数据的参数 θ\theta

  • 频率学派观点是 :<-> 存在唯一的真值 θ\theta

    • 极大似然估计 [[MLE]] :<-> 在给定样本的情况下,使得样本发生概率最大的参数估计方法
  • 贝叶斯学派观点是 :<-> θ\theta 是一个随机变量

    • 最大后验概率估计[[MAP]]
  • 贝叶斯估计 [[BNN]]


正则表达式

工具网站

^apple\..{3,}$ ^ $ 文件名的起始位置和结束位置 .{3,} 三个或更多的任意字符

常见的正则表达式 . * + [abc] (RX1|RX2) ^ $ 含义?

  • $0 :<-> 引用匹配到结果

  • abc… :<-> 字母

  • 123…

    • Digits
  • \d :<-> Any Digit

    • 等价于 :-> [0-9]
    • 匹配3个数字 :-> \d{3}
    • 匹配一个或多个数字 :-> \d+
  • \D :<-> Any Non-digit character

  • . :<-> 除空格之外的”任意单个字符”

  • * :<-> 匹配前面字符零次或多次

  • + :<-> 匹配前面字符一次或多次

  • \. Period

  • [abc] :<-> Only a, b, or c

  • [^abc] :<-> Not a, b, nor c

  • [a-z] :<-> Characters a to z

  • [0-9] :<-> Numbers 0 to 9

  • \w :<-> Any Alphanumeric character

  • \W :<-> Any Non-alphanumeric character

  • {m} :<-> m Repetitions

  • {m,n} :<-> m to n Repetitions

  • ? :<-> Optional character

  • \s :<-> Any Whitespace

  • \S :<-> Any Non-whitespace character

  • ^$ :<-> Starts and ends

  • (…) Capture Group :<-> $1 第一个匹配结果

  • (a(bc)) :<-> Capture Sub-group

  • (.*) :<-> Capture all

  • | 或, (abc|def) :<-> 任何能够匹配abc 或 def的结果
    获取 hdfs 地址中的路网 (\d{10})

sublime 正则匹配提取

  • 打开搜索框,然后输入正则表达式,最后Find All 就可以复制

[[Ref]]


波斯公主选驸马

问题

  • 波斯公主到了适婚年龄,要选驸马。候选男子100名,都是公主没有见过的。百人以随机顺序,从公主面前逐一经过。每当一位男子在公主面前经过时,公主要么选他为驸马,要么不选。如果选他,其余那些还没有登场的男子就都遣散回家,选驸马的活动也 over 了。如果不选,当下这名男子就离开,也就是 pass 掉此人,下一人登场。被pass 掉的,公主不可以反悔再从选。规则是,公主必须在这百人中选出一人做驸马,也就是说,如果前99人公主都看不中的话,她必须选择第100名男子为驸马,不管他有多么丑陋。
    任务是,给公主设计选择方法,让她有最高概率选到百人中最英俊的男子为驸马。

深度学习中Attention与全连接层的区别何在?

Attention 的最终输出可以看成是一个「在关注部分权重更大的全连接层」,注意力机制可以利用输入特征信息来确定哪些部分更重要。

全连接的作用是对一个实体进行从一个特征空间到另一个特征空间的映射,注意力机制是要对来自同一个特征空间的多个实体进行整合

全连接层权重固定,存在位置依赖(空间和通道)

  • 注意力机制引入score函数,使得权重与输入相关

不同的注意力机制是通过相似性的衡量为不同位置加以权重

  • [[SENET]]

  • [[PSANet]] 空间注意力或点注意力

  • [[BAM]] 空间+通道注意力

  • CBAM 空间+通道注意力

  • PiCANet

Rulcy

  • 两种机制的区别?

    • 同样是给予输入特征不同的权重进行更深层的网络学习,fc Layer只能是在整个网络的训练过程中得到,而基于Attention机制的Layer可以通过更多的方式去获得权重。

    • Attention Layer目的在于关注局部信息,所以输出和输入是在同一个向量空间的。这一点同样表现在Attention Layer和fc Layer的连接方式上。

  • 为什么 Attention 机制能起到作用?

    • 给予网络输入部分一个更好的超参数

    • 传统的网络同样能够做到关注输入特征的局部信息,而Attention把关注局部信息这一重要部分单独进行设计,减少了整个网络的压力,使网络无需在输入特征的重要程度上下功夫,相对来说更多地关注了特征与结果的联系。


炉石传说

上大学后开始接触炉石,一直是豹子头(零冲)玩家。2021 年 8 月重新回坑,做了两套宇宙卡组,发现这游戏是真的贵。388(60包),全部分解奥术之尘的期望在 6000 左右。一套宇宙卡组成本会千元以上(不推荐新人玩家入坑)。

常用卡组(狂野)

  • 教训:少抄主播控制卡组,不要看 b 站视频合卡。

  • [[宇宙暗牧/纳斯利亚堡]]

    • 控场

    • 资源

    • 反制

    • 斩杀

  • [[宇宙术]]

  • [[任务术]]:气宗,疲劳任务术。

  • [[宝宝术]]

  • [[宇宙脏牧]]

  • [[宇宙牧]]

  • [[鬼灵贼]]

  • [[心火牧]]

  • [[宇宙偶数术]]

  • [[巨人术]]

  • [[战吼萨]]

  • [[剽窃贼]]

常见卡组

  • 骑士

    • 厕所骑

      • 花园惠景 +5+5
  • 萨满

    • 机械克苏恩萨

      • 带 1 费法术,用游荡恶鬼杀一费法术,先祖召唤出克苏恩,然后转生杀

单卡

[[佣兵战纪]]

Ref


热力学第二定律

自然界前进方向

[[第二类永动机]] 从一个热源吸收热量,把这些热量完全转化成做功。

开尔文

  • 不能从单一热源吸收热量使之完全转化成功

  • 例子,从高温热源吸热,一部分到低温热源 + 做功

image.png

克劳修斯

  • 低温物体热量不会自发地向高温物体传热

  • 不可能把热量从低温物体(低能量)传向高温问题(高能量)而不引起其他变化(能量和物质交换)

[[麦克斯韦妖]]

热力学第二定律是什么?“麦克斯韦妖”是什么鬼?李永乐老师告诉你 - YouTube


焦点地图

焦点地图(Focus Mapping)

  • 将行为集群中的所有行为都置入焦点地图

    • 在绘制焦点地图的第一回合,先不必考虑行为的可行性或现实性,只考虑行为的影响程度就好。

    • 第二回合要关注的重点是行为的可行性和现实性。

    • 选出你要设计的行为


特征交叉

自动高阶特征交叉效果一定好吗? #card

  • 信息表达能力强,但是模型复杂度高,导致模型学习难度增加。

  • 过拟合,

  • 手动交叉特征,效果非常明显。

主要工作

  • 人工设计交叉特征

    • [[Linear Regression]]

      • 原始 LR 没有非线性能力,无法建模非线性关系
    • [[POLY2]] 人工构造二阶特征加入 LR 模型,提升模型的表达能力

      • POLY2(w,x)=j1=1nj2=j1+1nwh(j1,j2)xj1xj2POLY2(w,x)=\sum^n_{j_1=1}\sum^n_{j_2=j_1+1}w_{h(j_1,j_2)}x_{j_1}x_{j_2}
    • [[Wide&Deep]]

  • 自动学习交叉特征

    • [[GBDT+LR]]
  • DNN 隐式建模 bit-wise 特征交叉

    • 只输入原始特征

    • DNN 系列

      • [[@Deep Neural Networks for YouTube Recommendations]]

      • [[DIN]] [[DIEN]]

      • [[DMT]]

  • 隐式和显示

    • 隐式交叉:类似于MLP通过非线性函数期望学习到交叉项的模型被称为隐式交叉 #card

      • 隐式交叉被认为既不确定能否学到也不确定学到了哪种交叉项,并且缺乏可解释性。
    • 显示交叉:使用 内积,外积,元素积等操作模拟交叉项 的模型

  • Bit-Wise和Vector-Wise

    • Bit-Wise:特征域内部也进行交叉,例如性别的Embedding为8维,对于这8个比特也进行交叉,即自身与自身做交叉,不过这些比特的物理意义已经很不明显了,将其再做交叉是否有意义有点存疑。#card

      • 代表性的模型为[[Deep Crossing]], [[DCN]] ,将所有特征Embedding Concat到一起后再做外积,即拼接后的大Embedding的比特分量两两相乘。
    • Vector-Wise、Field-wid:只在特征域之间进行交叉,比较符合物理意义,例如用户性别 x 商品类目,用户职业 x 新闻主题,代表性的模型为[[xDeepFM]]。#card

      • 每个特征学习 embedding 向量,多个特征间特征交叉通过 embedding 向量计算

      • 该类方法需要交叉的特征维度对齐,但是一般我们会为不同的特征设置相对合理的维度,此时为了进行Vector-Wise交叉,可以使用映射矩阵强行拉齐。

      • [[FM]]

      • [[FFM]] 为每个特征学习 f 个 embedding

      • [[DeepFM]]

      • [[NFM]]

  • 串行和并行

    • 串行交叉:交叉网络层与全连接层堆叠在一起,即在表征学习的过程中也进行交叉,例如 [[PNN]] 等。#card
      image.png

    • 并行交叉: 交叉网络层单独作为一列,即双塔结构两者互不干扰 ,例如DeepCross,xDeepFM等。

  • 共享与解耦

    • 共享参数:交叉的特征 Embedding 底层是共享的,参数共享有利于模型泛化到稀疏特征,但是也会破坏对交叉特征的记忆性,即所谓样本穿越[6]。
    • 解耦参数:与共享相反,交叉的特征 Embedding 参数是独立的,有利于记忆性,但是会导致Embedding层的参数量膨胀,代表性的工作[[CAN]]在两者之间进行了折中。
  • x2i与i2i

    • x2i交叉:user,query与target item的交叉,例如 #card

      • user/query x item cate/seller/brand近30天的pv/ipv/pay,是比较常见的一类交叉模式。

      • 特别地,相似推荐中,已点击item与待推荐item之间的交叉。

    • i2i交叉:sequence item与target item的交叉,是对行为序列兴趣建模的一种强化。

      • 在召回阶段往往会有一路 [[i2i 召回]] ,即以用户历史行为过的item作为trigger召回一些用户可能感兴趣的item,代表性的方法为[[swing]]等,其召回的是 :-> 一些共现强度较高的item。

      • 基于Transformer等序列模型对行为序列特征进行抽取是排序模型中一个重要的模块,代表性的方法为DIN,其使用待推荐的广告商品作为Q计算行为序列中商品的Attention分布,进一步我们可以使用Transformer模型,详情可以参考[[@浅谈行为序列建模]]

      • 多头注意力学习到了哪些含义的Attention分布?

        • 最直观的是相似强度,例如#card

          • 与target item同属于一个类目,品牌或卖家的sequence item,这些商品在相似语义空间会被赋予较大的权重。
        • 另一类是关注强度,#card

          • 这里是指模型通过点击次数,购买次数,停留时间,与当前时间差等行为的context特征学习到的用户对该行为过的商品的关注程度,显然行为次数越多,停留时间越长,距当前越靠近说明用户更关注该商品。
      • 还有一类容易被忽视的是共现强度,例如耳熟能详的“啤酒奶粉”,目前的行为序列建模能够学习到共现强度吗,

        • 理论上是可以的,分为两个阶段:#card

          • 1)Attention模块中的一个注意力头挑选出行为序列中共现强度高的item,例如共现更多的seq item与target item的点积距离更近,类比FM我们认为这是理论上可行的。最终的序列Embedding中融合了共现item的信息。

          • 2)MLP继续将得到的序列Embedding与target item做交叉从而学习到seq i 2 target i共现。

        • 但是存在着两点阻碍:#card

          • 1)相比FM Attention模块离最终目标还是太远,中间隔了一个MLP,梯度回传不一定能使模型通过点积学习到共现。

          • 2)喂入MLP的特征往往太多了,实际业务场景中往往多达上千个特征,想要MLP学习到seq i 2 target i不容易,很容易被其他众多特征所淹没。

        • 针对以上两个问题我们可以做出相应改进,在目前的场景经过实验也是行之有效的:#card

          • 离线统计i2i交叉特征并作为行为序列的context特征,帮助模型更快速更直接学习到i2i共现强度,从而挑出那些共现更多的item。

          • 使用一个小的专门的交叉网络来学习seq i 2 target i,避免这两个特征被淹没在其他众多特征中。例如,如果使用的是transformer模块,我们可以直接将FNN改造为小交叉网络,将sequence emb与target item emb concat后输入FNN。

Ref


狄利克雷分布

根据多项分布的形式 Mult(m1,m2,,mKμ,N)=(Nm1m2mK)k=1Kμkmk\operatorname{Mult}\left(m_1, m_2, \ldots, m_K \mid \boldsymbol{\mu}, N\right)=\left(\begin{array}{c}N \\ m_1 m_2 \ldots m_K\end{array}\right) \prod_{k=1}^K \mu_k^{m_k}
,所以 dirichlet 的 μ\mu 应该是 μk\mu k 的指数形式

  • p(μα)k=1Kμkαk1p(\boldsymbol{\mu} \mid \boldsymbol{\alpha}) \propto \prod_{k=1}^K \mu_k^{\alpha_k-1}

    • 0μk10 \leqslant \mu_k \leqslant 1 and kμk=1\sum_k \mu_k=1

    • α1,,αK\alpha_1, \ldots, \alpha_K 是分布的参数

    • α\boldsymbol{\alpha} denotes (α1,,αK)T\left(\alpha_1, \ldots, \alpha_K\right)^{\mathrm{T}}

    • 满足这一约束的全体 μ{\mu} 构成一个 K-1 维度的[[单纯形]] simplex

Dir(μα)=Γ(α0)Γ(α1)Γ(αK)k=1Kμkαk1\operatorname{Dir}(\boldsymbol{\mu} \mid \boldsymbol{\alpha})=\frac{\Gamma\left(\alpha_0\right)}{\Gamma\left(\alpha_1\right) \cdots \Gamma\left(\alpha_K\right)} \prod_{k=1}^K \mu_k^{\alpha_k-1}

  • α0=k=1Kαk\alpha_0=\sum_{k=1}^K \alpha_k

用强力研读书

使用的范围:

  • 思想类闲书

    • 大部分人不看这种书

    • 如果真看了,大多数人没有看完

    • 即时看完了,大多数人没有看懂

      • 卧底经济学 强调 稀缺
  • 专门研究怎么读那些看完之后能够加深自己对某一领域的理解,能够获得一种智慧上升的感觉的非小说类的书。

理论基础:身体力行是获得见识最好的办法,读书是获取见识最快的方法

目的:追求读书的深度,掌握一套思维方式

特点:

  • 不好玩,

  • 用时少,每天只有少量时间有精力强力研读

  • 读得慢

收获:深刻认识到事物本质的原理

  • 第一,这件事其实没什么,我知道比这个更好/更坏/更怪的事;

  • 第二,那个所谓专家说的意见属于 xx 流派,而学术界对这派有很大争议其实他们已经过时了,比如获得 xx 年诺贝尔经济学奖的 xx 理论,就是个更好的理论;

  • 第三,我估计此事将会向 xx 方向发展。。。

经验

  • 强力研读,读完之后,再读一遍。

  • 按原书的章节给读书笔记划分章节,每一章的开头,写下这一章作者到底想说什么,各章穿起来就形成了系统。

  • 发现作者写作的脉络

例子 [[精英日课第一季中的参考]]


目标编码

解决 [[One-hot Encoding]] 稀疏问题

[[均值编码]],列中的每一个值换成该类别的均值目标值

  • A: 0.3 A: 0.4 中 A 用 0.35 替换

模型会倾向与拟合所看到的目标编码值

Leave-one-out encoding, leave-me-out

  • 不计算当前行的平均值,弥补对 y 变量的依赖,防止信息泄露

编码中加入正态分布的噪音

[[Ref]]


电纸书

为了微信阅读想要更换阅读设备,看到有个问题,感觉微信读书上面的书都是删减的?有点遗憾?还是在 kindle 上购买电子书来看?

使用过的设备

  • Kindle PaperWhite 2

    • 2014 年 8 月购于淘宝,日版,702。19 年 200 在公司内部出了。

    • 刚开始还可以刷机用多看,不过之后多看系统不在维护 kindle 版本,也没有折腾过。

  • Kindle Oasis 2

    • 2019 年 5 月购于淘宝,美版,1629。印象中,一个月后 3 代也出了。

    • 和之前产品相比,有侧边按键,非左右对称设计,还是祖传 usb 充电口(日常剃须刀都是 type-c)。另外,电池容量比较小,续航时间比 kindle 其他系列短。

    • 搭配交通银行赠送的 Kindle Unlimit 会员使用,但是会员书库和微信读书会员书库相比完全是 limit。

  • 文石 Boox Note3

    • 印象中价格超过 3k,JD 购买后,觉得体验对不起价格就退货了。

    • 安卓系统,高通 CPU。

  • 墨案 inkPad X

    • 2020 年 8 月 购于淘宝官方店。1599

    • 10寸,ppi 比较低。半开放安卓系统,电纸书专用的 CPU。

    • 2020 年 12 月有一天开快递柜时,从手中脱落到地上。磕了一角,然后再也开不了机。

    • 使用接近一年半的时间,差不多在微信读书上阅读 80h。

需求

  • 支持微信读书

  • 7-10 寸

  • 有实体按键

  • 20210113 参考

    • BOOX Leaf

    • iReader

    • 墨案 MIX 7

[[Ref]]


相关系数

r(Zt1,Zt2)=cov(Zt1,Zt2)δt12δt22r\left(Z_{t_1}, Z_{t_2}\right)=\frac{\operatorname{cov}\left(Z_{t_1}, Z_{t_2}\right)}{\sqrt{\delta_{t 1}^2} \sqrt{\delta_{t 2}^2}}

相关系数大小的关系

  • 0.8-1.0 极强相关

  • 0.6-0.8 强相关

  • 0.4-0.6 中等程度相关

  • 0.2-0.4 弱相关

  • 0.0-0.2 极弱相关或无相关


知识管理带动文献阅读

另外一篇 一种基于 Obsidian 的科研工作流(研究生版) - 知乎 (zhihu.com)

  • 记录闪念

研究生论文阅读方法(包含泛读、略读、精读、深读)_Qiuf0812的博客-CSDN博客

论文笔记模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
---
title: "{{title}}"
authors: {{authorString}}
year: {{year}}
from: {{containerTitle}}
tags:
date created:
date modified:
---

# 附件一:文献阅读模板

阅读状态: 泛读/略读/精读/深读
PDF Link:

## 主要贡献

写完笔记之后最后填,概述文章的内容,以后查阅笔记的时候先看这一段。注:写文章summary切记需要通过自己的思考,用自己的语言描述。忌讳直接Ctrl + c原文。
### 解决了什么问题?

### 主要创新点在哪里?

## Abstract

{{abstract}}

## Conclusion

## 阅读目的

- [ ] 写文献综述、查资料
- [ ] 了解新领域
- [ ] 训练提升学术能力
- [ ] 借鉴文章具体方法
- [ ] 回答下列问题:

## 作者的写作目的

- [ ] 总结其他研究
- [ ] 建议未来方向
- [ ] 报告新发现
- [ ] 发展理论/算法
- [ ] 表达特别的观点

## Motivation

作者的研究目标是什么?
关于这个问题,其它学者提出了哪几类的解决方案,有何缺陷?
## Background

作者需要解决的问题是什么?
## Method(s)

## Evaluation

作者如何评估自己的方法?
实验的setup是什么样的?
感兴趣实验数据和结果有哪些?
有没有问题或者可以借鉴的地方?
从结果(含曲线)上看,作者是如何有力地证明他解决了问题?
## Structure

本文的结构怎样?对你写文章有什么参考作用?
## 阅读笔记

## 阅读挑战

这篇论文的缺陷在哪儿?
尝试一下,在你所阅读的论文与现实生活之间建立物理与逻辑联系,找出一个可以拓展的点?
对于作者提出的解决方法,你有何看法和建议
## 对我有什么用

回答了我为什么要读的问题了吗?
同意/反对
准备正面/负面的引用吗?
准备深度的讨论吗?
## 改进思路

## 全文翻译

## Reference

(optional) 列出相关性高的文献,以便之后可以继续track下去。

[[See Also]]


知识的分类

大脑运作模式视角下的知识分类 - 知乎 (zhihu.com)机器学习理论引入的知识分类 - 知乎 (zhihu.com)

[[思考类知识]]

  • 需要精度高,该中大脑模式速度慢,记忆容量低的缺点,尽可能减少问题所涉及的因素。

[[运动类知识]]

  • 对速度有更多的要求,大脑可以同时并行处理多个因素,也有很强的容错性和鲁棒性。

  • 任何知识在熟悉之后会逐渐被大脑放到无意识模式下处理。

  • 缺点

    • 这种模式下若不重复,则不会进行学习。

    • 但当谬想知识对精度有要求时,就要稍加注意。

  • 学习这类知识,尽可能让大脑无意识的直接从输入得到输出,用大量的不同的例子反复加强新大脑神经连接的形成。

[[分类知识]],判断一个事物属于哪个模型

  • 思考类知识中大部分都是分类知识

  • 应用任何知识之前,都是先用分类知识来判断问题属于哪一类,然后才能够应用公式和性质来解决。

  • 画思维导图对应的关键词是主谓结构

    • 它是什么来区分输入和输出

    • 为什么是来决定判断的边界

[[回归知识]],从定性到定量,如何从一种状态变成另一种状态

  • 大部分运动类都是回归知识

  • 数学的特别

    • 数学公式是将同一类知识进行二次提取,都是别人总结好的“知识的描述”。

    • 做不出数学题?

      • 无法判断某个问题属于哪一类,连用公式和性质的机会都没有。

      • 到这种情况时,很多家长和老师都简单的归因为“不熟”,提升方式也基本靠悟。但是什么叫“不熟”?这种“不熟”又该如何提升。

      • 工作后通过实际例子,基本上等于重学一遍。

    • 为什么大部分人都难以学好数学?数学明明被用于所有科学的现实问题,可为什么大部分人都觉得自己学不会。一遍一遍的记住了数学公式,甚至理清了这些公式是怎么来的,但在现实问题面前全面崩溃。

  • 画思维导图时,对应的关键词一般是动宾结构

    • 它的目的来明确输入变成什么样的输出

    • 问“如何达到”来明确具体的步骤

image.png

[[思维导图]]

WechatIMG3.jpeg


知识管理的误区

[[信息成瘾]] 大脑追求多巴胺带来的那种快乐,促使不断获取新的信息——无论什么样的信息都可以。

  • 自制力不足

  • 好奇心

    • 我们的大脑在捕捉到新信息的时候,分泌[[多巴胺]]用作奖励,让我们感到快乐。

    • 《贪婪的多巴胺》一书中丹尼尔·利伯曼揭晓了答案:[[多巴胺]]是我们不停追逐尚未得到东西过程中的那种心情,一旦追逐到了,多巴胺就会命令我们去找下一件事物。

  • 如何避免信息成瘾

    • 读信息质量高的内容,信息创作和信息消费所花费的时间比例构成信息密度。

    • 每天设置一个固定的消费信息限额

囤积癖

  • 囤积的行为让我们有一种似乎取得进步的假象。

  • 囤积的材料越多,心理压力越大。最终逐渐失去消化的动力,用各种借口推脱。

  • 不断的切换和遗忘,只是一种低级的勤奋,徒然浪费时间。

  • 如何克服囤积症

    • 放弃收藏一切的念头,收藏的信息并不能增加我们的知识。

    • 习惯无法记录信息,将其转化为情节记忆。

    • 在《如何有效整理信息》一中书作者强调,最应该记录的是「对你造成极大触动的信息」,不是去收藏「知识生产的素材(即某种答案)」。

    • 逆向思考

    • 认知科学家比约克夫妇(Robert A. Bjork与Elizabeth Ligon Bjork) [[必要难度]] Desirable Difficulty

      • 记忆竞争类型

        • 存储优势和提取优势
      • 存储于提取负相关

    • 定时处理自己感兴趣的信息,删除超过一段时间没有安排的内容

墙头草

  • 知识管理最难但又最容易忽略的地方,不是工具难用,不是方法难学,而是不知道自己要去向何方。

  • 我想创造自己的产品,为何要学习那些不重要的东西

  • 通过 [[认知地图]] 厘清领域和兴趣

    • 领域是指,我们将那些做了对别人有帮助,做砸了自己要承担责任的事情。需要持续不断精进,持续积累。

    • 兴趣是指,自己持续感兴趣,但对别人没影响,别人也不在乎的事情。

    • 优先在领域投入时间和精力,有余力再培养兴趣。

  • 内心欲望,找到自己的北极星

工具控

  • 建立流程之前,工具都是无用的。

  • 如何设计自己的流程

    • 以终为始,从自己的需求和场景出发
  • Light 的笔记系统

    • 内功心法

    • 招式套路

    • 实践事实

输出怪:输出不是写文章,而是影响现实世界

  • 输出倒闭输入不一定正确

  • 人们总是会高估第二曲线(自媒体)带来的收益,却低估第一曲线(主业决策)持续投入后带来的价值。

  • 真正的成事者,从来不以知识渊博而闻名,他只是在关键的节点,恰当地运用知识,做出正确的决策。

  • [[笔记软件搜索结果展现方法]]


矩阵

方阵 symmetric matrix

  • 对称矩阵 symmetric matrix

    • 左下和右上元素以主对角线镜像对称

    • 转置结果为本身

      • A=ATA=A^T

[[对角矩阵]] diagonal matrix

副对角矩阵 anti-diagonal matrix

单位矩阵 identity matrix

  • 对角线上元素是 1,其他元素是 0

三角矩阵 (triangular matrix)

  • 如果矩阵 A 为可逆矩阵 (invertible matrix, non-singular matrix),A 可以通过 LU 分解变成一个下三角矩阵 L 与一个上三角矩阵 U 的乘积。

[[矩阵逆]]

  • AB=BA=IAB=BA=I

  • 逆 inverse A1A^{-1}

  • 矩阵可逆也称为非奇异 non-singular

    • 方阵

    • 满秩

  • [[广义逆阵]]

  • [[正交矩阵]] orthogonal matrix

行列式 determinant

  • 将方阵A根据一定规则映射到一个标量

  • 二阶矩阵行列式的几何意义

    • A=[a11a12a21a22]\mathbf{A}=\left[\begin{array}{ll}a_{11} & a_{12} \\ a_{21} & a_{22}\end{array}\right]

    • 行列式值是两个列向量构成的平行四边形面积

      • 第一个向量顺时针到第二个向量的夹角小于 180 度结果为正

  • 三阶矩阵行列式的几何意义

    • 列向量构成平行六面体的体积
  • 多维

    • 多元高斯分布 φ(x,μ,Σ)=1(2π)n2Σ12e12(xμ)TΣ1(xμ)\varphi(x, \mu, \Sigma)=\frac{1}{(2 \pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}} e^{-\frac{1}{2}(x-\mu)^{T} \Sigma^{-1}(x-\mu)}

    • 矩阵行列式 Σ12|\Sigma|^{\frac{1}{2}},体积缩放

迹 trace

  • 方阵主对角线之和

  • tr(A)=i=1nai,i=a1,1+a2,2++an,n\operatorname{tr}(\boldsymbol{A})=\sum_{i=1}^{n} a_{i, i}=a_{1,1}+a_{2,2}+\cdots+a_{n, n}

矩阵乘向量:线性方程组

  • Ax=bAx=b

  • 解的个数

    • 欠定方程组 underdetermined system

    • 超定方程组 overdetermined system

  • 线性组合 linear combination

    • [a1a2aD]1×D[x1x2xD]D×1=bn×1\left[\begin{array}{llll}a_{1} & a_{2} & \cdots & a_{D}\end{array}\right]_{1 \times D}\left[\begin{array}{c}x_{1} \\ x_{2} \\ \vdots \\ x_{D}\end{array}\right]_{D \times 1}=b_{n \times 1}

向量乘矩阵乘向量:二次型

  • quadratic form

  • xTQx=qx^TQx=q

    • xTQx=i=1Dqi,ixi2+i=1Dj=1Dqi,jxixj=q\boldsymbol{x}^{\mathrm{T}} \boldsymbol{Q} \boldsymbol{x}=\sum_{i=1}^{D} q_{i, i} x_{i}^{2}+\sum_{i=1}^{D} \sum_{j=1}^{D} q_{i, j} x_{i} x_{j}=q
  • 二次曲线

    • f(x1,x2)=[x1x2][abcd][x1x2]=ax12+(b+c)x1x2+dx22f\left(x_{1}, x_{2}\right)=\left[\begin{array}{ll}x_{1} & x_{2}\end{array}\right]\left[\begin{array}{ll}a & b \\ c & d\end{array}\right]\left[\begin{array}{l}x_{1} \\ x_{2}\end{array}\right]=a x_{1}^{2}+(b+c) x_{1} x_{2}+d x_{2}^{2}

方阵乘方阵 [[矩阵/分解]]

  • [[幂等矩阵]] idempotent matrix

    • A2=AA^2=A

[[对角矩阵]] :批量缩放

[[置换矩阵]] permutation matrix:调整元素顺序

  • 由 0 和 1 组成的方阵,每一行每一列恰好有一个 1。

  • 行向量左右翻转

    • 行向量乘以副对角线上元素为1的方阵

长方阵

  • [[奇异值分解]]

  • 拉格姆矩阵 Gram matrix

    • G=XTXG=X^TX

    • (XTX)i,j=xiTxj\left(\boldsymbol{X}^{\mathrm{T}} \boldsymbol{X}\right)_{i, j}=\boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j}

    • 两两向量之间的相似度

    • [[协方差]]矩阵

    • 元素平方和

      • trace(XTX)=trace[x1x1x1x2x1xDx2x1x2x2x2xDxDx1xDx2xDxD]=x1x1+x2x2++xDxD=i=1nxi,12+i=1nxi,22++i=1nxi,D2=j=1Di=1nxi,j2\begin{aligned} \operatorname{trace}\left(\boldsymbol{X}^{\mathrm{T}} \boldsymbol{X}\right) &=\operatorname{trace}\left[\begin{array}{cccc}\boldsymbol{x}_{1} \cdot \boldsymbol{x}_{1} & \boldsymbol{x}_{1} \cdot \boldsymbol{x}_{2} & \cdots & \boldsymbol{x}_{1} \cdot \boldsymbol{x}_{D} \\ \boldsymbol{x}_{2} \cdot \boldsymbol{x}_{1} & \boldsymbol{x}_{2} \cdot \boldsymbol{x}_{2} & \cdots & \boldsymbol{x}_{2} \cdot \boldsymbol{x}_{D} \\ \vdots & \vdots & \ddots & \vdots \\ \boldsymbol{x}_{D} \cdot \boldsymbol{x}_{1} & \boldsymbol{x}_{D} \cdot \boldsymbol{x}_{2} & \cdots & \boldsymbol{x}_{D} \cdot \boldsymbol{x}_{D}\end{array}\right] \\ &=\boldsymbol{x}_{1} \cdot \boldsymbol{x}_{1}+\boldsymbol{x}_{2} \cdot \boldsymbol{x}_{2}+\cdots+\boldsymbol{x}_{D} \cdot \boldsymbol{x}_{D} \\ &=\sum_{i=1}^{n} x_{i, 1}^{2}+\sum_{i=1}^{n} x_{i, 2}^{2}+\cdots+\sum_{i=1}^{n} x_{i, D}^{2} \\ &=\sum_{j=1}^{D} \sum_{i=1}^{n} x_{i, j}^{2} \end{aligned}
  • 张量积

[[爱因斯坦求和]] 约定

  • np.einsum('ij,jk->ik', A, B)

分块矩阵

列满秩

  • 每一行都有非零的数

  • 对应多个方程有解

[[正交投影]]


第 8 章 深度学习推荐系统的前沿实践

[[GBDT+LR]]

  • 实时数据流架构

    • waiting window

      • 曝光行为是否产生对应的点击
    • action id

  • 降采样和模型校正

    • 负采样 - CTR 漂移

[[DLRM]]

DONE [[@Real-time Personalization using Embeddings for Search Ranking at Airbnb]]

  • 长期和短期兴趣的房源 Embedding 方法

  • [[Word2Vec]]

  • 全局正样本

  • 冷启动

  • 相似用户和房源做聚合

DONE [[@Deep Neural Networks for YouTube Recommendations]]

阿里巴巴推荐算法发展历史


简悦和 Logseq 联动

加入稍后读,保存离线 HTML 文件,手动编辑原始信息,阅读

http://localhost:7026/reading/ 加载本地快照

授权管理

开放平台

稍后读列表

[[Logseq SimpRead Sync]]:集文章标注实时同步到 Logseq、本地快照实时保存到本地、管理你全部的稍后读于一身的 Logseq + 简悦全流程化一站式解决方案

Ref


算法工程师

很容易陷入误区,花大力气理解已经被淘汰技术

  • [[AlexNet]] Local Response Normalization(Norm Layers)

  • [[Word2Vec]] Hierarchical softmax

参考


矩阵求导

向量的导数

image.png

标量对向量的偏导数

image.png

标量对方阵的导数

  • A\mathrm{A}n\mathrm{n} * n\mathrm{n} 的矩阵, A|\mathrm{A}|A\mathrm{A} 的行列式,计算 AA\frac{\partial|A|}{\partial A}

1in,A=j=1naij(1)i+jMijAaij=(j=1naij(1)i+jMij)aij=(1)i+jMij=AjiAA=(A)T=A(A1)T\begin{gathered} \forall 1 \leq i \leq n,|A|=\sum_{j=1}^n a_{i j} \cdot(-1)^{i+j} M_{i j} \\ \frac{\partial|A|}{\partial a_{i j}}=\frac{\partial\left(\sum_{j=1}^n a_{i j} \cdot(-1)^{i+j} M_{i j}\right)}{\partial a_{i j}}=(-1)^{i+j} M_{i j}=A_{j i}^* \\ \frac{\partial|A|}{\partial A}=\left(A^*\right)^T=|A| \cdot\left(A^{-1}\right)^T \end{gathered}

[[Ref]]


立直麻将

名词

  • [[振听]]

  • 副露 :-> 吃碰杠,暗杠不算副露。

  • 立直 :-> 对应报听,宣布自己听牌,不能改手牌,在不改听的基础上,摸到牌可以开暗杠。

  • 荣和 :-> 自己听牌后,别人打出所听之牌(只允许对别人刚打出的牌进行),宣告后使自己和牌。比鸣牌都优先。

  • 染手 :-> 缺两门的打法,混一色、清一色、字一色、绿一色等等都归为染手。

  • 流听 :-> 流局时已经听牌,向未听牌的人收取罚点,一人流听收3000,各家交1000;两人流听收1500;3人流听收1000;4人流听不收。

  • 序数牌的表示:条、饼、万对应 :-> s、p、m,

    • 1s即1条(索),2p即2饼,0m即红宝牌5万。
  • 红宝牌(aka) :-> 雀魂里采用的是3张红宝牌(5s、5m、5p各一张),红宝一张算一番,但不算役牌。

  • 宝牌(朵拉、dora)

    • 宝牌指示牌 :-> 开局时翻开牌山倒数第三墩上层的牌
    • 宝牌为 指示牌加一 的牌
      • 如果指示牌是 9 那宝牌就是 1
      • 如果指示牌是字牌,则按 东南西北白发中 的顺序向后推一位:如指示牌为北,则宝牌为 ,指示牌为发,则宝牌为
    • 宝牌算一番,可累计, 不算 役。
  • 里宝牌 :-> 宝牌指示牌下面的牌为里宝牌指示牌,性质与宝牌几乎一样,

    • 什么时候生效 :-> 不同之处在于,只有在立直和牌时才翻开里宝牌指示牌并计算里宝牌,非立直和牌不翻开里宝牌指示牌,也不计算里宝牌。
  • [[役牌]]

[[立直麻将和牌]]

[[役种]]

[[点数计算]]

[[日麻参考资料]]

[[立直麻将开局切牌]]

防守的底层逻辑是源自于振听规则,对手打过的牌没法荣和只能自摸

  • 最基础的防守 :-> 就是打对面牌河里出过的牌(现物),
  • 然后就是筋壁理论,147,258,369,举个简单的例子,#card
    • 对面打过5,那你打28的点铳概率就会降低,因为对面34和67的两面听会振听,

    • 当然也不是现物那种绝安,依然存在13和79坎张以及听双碰和雀头的可能


精英日课第一季中的参考

注意我这份笔记里做到了如下几点:

  • 有对原文的直接引用,特别是一些有意思的句子和亮点

  • 用不同字体和颜色标记了重点,方便以后再读

  • 原文是一段一段的句子,我把要点用列清单的方法总结出来

  • 最重要的是,我用【】标记了我对这些内容的个人理解和评论。

读书笔记:电影行业怎样规避风险

  • 电影,包括媒体事业,是一个非常 高风险 的东西,一个电影能不能成功完全不可预测。投入大未必大卖,投入少也可能大卖,不知道怎么才能得到一个 “hit”(超级流行的),而hit一旦出来,你的盈利是其他片的很多很多倍 ——第一名和第二十名相差极远。

    • 归根结底,电影的不确定性是因为 人们并不迫切“需要”文化,你只能让人“想要”文化 ——they don’t NEED the culture, 你只能让人 WANT the culture. 不是生活必需品,没有稳定利润。
  • 那么怎么面对高风险?四个策略: #incremental #card #depth-1

    • 1.傍上一个传统工业巨头。 Ross本身有很多传统工业项目,租车等行业,用这些行业补贴电影。GE有几千个billion的业务,而universal studio 才一两个billion,无所谓的事情。一个电影失败,对巨头来说无所谓。#card

      • 这个策略确保了电影公司可以随便玩,确保了创新。

      • 而巨头愿意投资电影,并不是为了赚钱,他们想要的是社会认同感和名望。Ross以前只有钱和权力,而没有名望,现在可以给女星当干爹了。

      • 【许家印马云搞足球也有点这个意思吧?打着赚钱的旗号去玩。其实二人合作投资足球的决策过程很不严肃。Soccernoimcs一书也提到,足球的经营者都很愚蠢。其实是根本不在乎。】

      • 【本质上,因为娱乐业不是必需品,也许永远只能依附于其他行业。那么一个办法也许就是让纳税人直接出钱养着?】

    • 2.用明星,用被市场证明是可以的东西。#card

      • 2000到2010年投入最大的前十部电影,除《阿凡达》外都是改编和续集,都是基于已经被市场证明是成功的作品。——可是在六十年代,电影几乎全是新的。
    • 3.搞周边产品,续集,集团化。#card

      • 电影工业已经不再仅仅拍电影了,而是“制造角色”,这些角色都是公司的财产。

      • 比如一个好的动画人物。拍续集、做广告、出周边产品,都是在这个角色上赚钱。

      • 六十年代的电影拍出来好看看完就完了,用现代人的话说这是浪费了观众的注意力!

      • 以前美国政府不赞成给艺术形象专利,现在只要不是无关紧要的配角,是个鲜明形象,就可以申请专利。

      • 整个观念变了——你不是在制造一部电影,而是在创造一个人物。只要这个人物立起来了,你可以源源不断地赚钱。

    • 4.搞电影节,让评委审片,给发奖,让小制作也可能获得很高的票房。

  • 有了这些手段,偶尔出一两部票房惨败的电影对电影工业来说是无所谓的,只不过是个统计误差。这是完全成熟的电影工业。

我们专门研究怎么读那些看完之后能够加深自己对某一领域的理解,能够获得一种智慧上升的感觉(哪怕是错觉)的非小说类的书。关于这种书有三个基本事实。 #card #incremental #depth-1

  • 第一,大多数人不看这种书。他们不是读书人。

  • 第二,如果真看了的,其中大多数人没有看完。

    • 在亚马逊买Kindle版的电子书有一个好处是可以看到别的读者在书上划的最流行的重点。Kindle允许你读书的时候在认为是重点的语句上划线,而亚马逊会把众人划线比较多的语句在书中标记出来。我看了很多非小说类的书,发现一个规律是绝大多数流行重点出现在前两章。而书的四分之一以后,就基本上看不到众人划的流行重点了。

    • 难道说这些书的后面都没有重点值得划了么?答案显然是大多数人对大多数书看了四分之一就不看了。最近华尔街日报上一篇文章使用统计kindle上重点句子的方法发现,大多数读者读《时间简史》只读到了6.6%,读《思考,快与慢》只读到了6.8%,而读被视为近年来最重要经济学著作的《二十一世纪资本论》,则只读到2.4%,尽管这本是当前亚马逊上最畅销的书。爱买书的人不一定真读书,很多人只不过是藏书而已。

  • 第三,即使看完了的,其中大多数人没有看懂。

我就举蒂姆·哈福德的成名作《卧底经济学》(Undercover Economist)这本书做个例子。在我写此文的最初版本时候,此书在豆瓣有三个页面,其中只有中文版页面有不算灌水的读者书评。在豆瓣上的6篇热门评论中,最热的一篇,"子不曰"的《撕开面皮给你看》,谈到了书中说的星巴克咖啡和超市搞乱价格现象;第二篇的题目就是此书的标题,内容不是读书心得,而更像是给书做的广告;第三篇《真实世界经济学》,提到星巴克,然后不知为何开始谈另一本讲经济学的书和自己读经济学读物的过程;第四篇,谈到星巴克,房价,超市定价,和大学生的火车票。读这些书评,似乎《卧底经济学》是一本讲述生活中的经济小故事的漫谈。

  • 但这本书并不是纯粹漫无边际的瞎侃。它的观点相当鲜明,主题很突出。此书反复强调一个概念,“稀缺”。

  • 第一章说星巴克卖咖啡的例子,为的是指出没有稀缺就不可能赚钱。

  • 第二章说有了稀缺你也未必能赚到很多钱:哪怕附近只有你一家超市,顾客也未必会在你这里花很多钱买东西。你必须使用一系列的手段,甚至诡计,来让人掏钱。最典型的办法是对顾客实行区别定价。

  • 第三到第五章说经济学家为什么喜欢市场,因为市场调节可以自动把稀缺的东西变得不那么稀缺!然后谈到市场为什么有时候会失灵。政府的有些政策,表面上为了公平,但客观上是促进了稀缺,比如说不让优质小学的入学市场化。

  • 第六章指出像亚马逊这样的公司并没有真正意义上的稀缺力量。

  • 第七到第十章则是前面这些理论在当前热点问题中的应用。

  • 如果我们看完这本书只记住两个字,这两个字应该是"稀缺"。但是看看排在前四名的豆瓣书评,发现竟然没有一篇提到"稀缺"这个词!如果你只看这四篇书评,你记住的两个字是"咖啡"。而星巴克怎么卖咖啡,其实是该书前四页说的事情。

  • 用这种读法就算再读十五本讲经济学的书也学不会用经济学家的眼光去看世界,得到的只不过是一大堆饭桌上的小段子而已。等到下次听专家说话,感觉还是似曾相识,自己又说不出来。

强力研读跟"刻意练习"有三个共同点:

  • 第一,不好玩。:-> 世界冠军培训基地没有"寓教于乐"这个概念。"强力研读"不是为了娱乐和休息,而是用非常严肃认真的态度,非得把一本书给融会贯通以至于长在自己的大脑里不可。这种读法相当累。我认为写读书笔记是一个非常正经的工作。
  • 第二,用的时间很少。:-> 就如同在那种专门培养天才的最好的音乐学校里,孩子们每天真正练琴的时间绝对不超过2个小时一样。没人能长时间坚持那样的强度,而没有强度的训练还不如不练。你可能每天花很多时间阅读,但你很难做到用很多时间强力研读。要把精力充沛而又不受打扰的时间段留给最好的书。
  • 第三,不追求快。:-> 很多读书方法教人怎么用最快的速度读完一本书,其实那些有必要快速读完的书根本不配让我们读。读书的一个关键技术在于对不同的读物采取不同的阅读速度。#card
    • 娱乐性的小说,纯粹信息性的新闻,读得越快越好。

    • 而对于处在我们的"学习区"内的好书,则应该慢慢的仔细读。

    • 追求把一本书快速读完,就好像追求把一支曲子快速弹完一样,这不是练琴是完成练琴任务。

    • 读书人的一个秘密就是,读得慢,吸收知识和增长内力的效率反而更高。据说失读症患者中之所以特别容易出人才就是因为他们读得慢。


组合数学

[[Stirling Number]]

a0a_0 个物品 0,a1a_1 个物品 1, … aka_k 个物品 k,排列成一排的方案数:

  • (a0+a1+...+ak)!a0!×a1!×...×ak!\frac{(a_0+a_1+...+a_k)!}{a_0! \times a_1! \times ... \times a_k!}

  • 分母是 n 的全排列数,一个可行的方案中物品 k 的方案有 $$a_k!$$ 种($$a_k$$ 个位置放置物品 k 的方案数,由于物品k都相同,所以需要把这部份删除)

N 个盒子放 M 个球的方案数

  • M 个球可能不一样的方案数

罗翔

我怎么是这样的人。

罗翔:与虚荣心作战-虎嗅网

  • 让内心的幽暗不至于越过堤坝

  • 你会在大街上被认出来,只是因为你的讲授释放出了人们内心对公平和正义的向往,于是大家因为对公平和正义的向往,把这个你不配有的掌声投射于你身上。

  • 你当自卑视己,切勿狂妄自大

  • 我当年像今天的年轻人一样,面临着像阿克顿勋爵说的四大挑战:对极度权力的渴望,对贫富不均的憎恶,对人间天堂乌托邦的向往,以及将自由和放纵混为一谈。

  • 2020 年,我意外地拿到了一个聚光灯下的剧本,也感到了有一些沉重。只是一只无形的大手把你托举起来,至于这只无形的大手会把你带到何方,你也不知道。只是在被托举的时候,你得做好该做的事情,并从容地接受未来将要下场的命运。

[[电车难题]] 【罗翔】牺牲1个智力残疾者救5个有前途的年轻人?合理吗?_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

  • 道德主义:只能是目的,不能是手段,天塌下来,正义也要得到践行。

  • [[功利主义]]:事物的结果来判断值不值得做

  • 生命能不能进行比较?

  • 牺牲一个人拯救五个人,会导致更多的问题。

  • 种族屠杀:人道主义毁灭

  • 连体婴儿案:B 寄生者,正当防卫理论

  • 道德义务,牺牲自己来保全他人。

  • 道德是一种自律而不是他律。

罗翔与舞台

  • 在某次厚大法考视频中引用[[爱比克泰德]]: 我们登上并非我们所选择的舞台,演出并非我们所选择的剧本。

  • 某一个杂志访谈「值得感叹的是,当初越来越多的人登门找他时,会有人告诉他应该接过剧本上台演好这个公众角色,但未来如果他不再火,不再受千万人追捧,却不会再有人提醒他下场,他最终只能孤独地谢幕。」

  • 这次十三邀「舞台既然来了,就循着当前的认识来尽可能努力演一出好戏,不用担心什么时候退场。、 我不能够弃演

【罗翔】《沉默的真相》沉重的剧情令人愤慨,我们都需要江阳们的勇气_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

  • 古典时代四大美德即 智慧正义勇敢节制
  • 当命运之手把我们交付特殊的时刻 :<-> 愿我们能有我们想象中那么勇敢。

罗翔:非功利性阅读

很多人说“万般皆下品,唯有读书高”,因为读书能获得知识,读书能找到工作,我也不能说这是错的。相信大家都知道中国古人所说的“书中自有黄金屋,书中自有颜如玉”、“书中自有千钟粟”。这是谁说的?这是一个皇帝说的,宋真宗。但是各位会发现, 如果你读书的目的只是这样一种功利性的目的的话,那你接收的就一定是一种成功主义的价值观

如果读书的目的只是为了成功,其实很多书是没有必要读。你学习法律就天天读法条就可以了嘛,还需要读莎士比亚吗?还需要读《论法的精神》吗?没有必要啊,你的目的就成功了,多读读成功学不就得了吗?的确,各大畅销书基本上就是成功学的鸡汤类读物。

所以各位一定要注意,我们的读书一定有两种目的。当然,我不否定一功利性的目的,很多东西要准备高考,要准备其他考试,那有功利性的读书。但是, 更重要的一种读书是非功利性的读书,因为只有这种非功利性的读书,你才能够抵制成功主义的读书,你才能够坦然的接受自己的命运,坦然的接受自己的失败

一个人真正的成功不是在他辉煌的时候有多么风光,关键在于在你挫折的时候,在你低迷的时候,你是不是依然有勇气继续的前行。这就是为什么我们依然要进行非功利性的阅读,因为 只有非功利性的阅读,才能够给我们提供一种真正的人生勇气,去面对人生的大风大浪

每个人这一生一定会遭遇苦难,那在苦难的时候,你是否依然有继续活下去的勇气。如果你接受的仅仅是成功主义的熏陶,你一定不会有这种力量,所以我们需要这种非功利性的阅读。

有很多同学说,老师我读着读着就忘了。记住,读书不是为了炫耀,读书只是为了培养你的智慧。有哪个同学记得你昨天吃了什么,记得三天前你的菜单?你记不住了,但这些东西都成为了你的养分。读书也是这样。我们很多时候好读书不求甚解,我们并不需要去记住那些精彩的段落,我们只需要去读,慢慢的就成为了我们的养分。我们需要与人类伟大的灵魂对话。

卡夫卡说:“ 一本书就像一把利斧劈开我们冰封的内心。”您准备好了吗,和人类伟大的灵魂对话,用他的利斧劈开你那冰冷、傲慢、自恋与自怜的内心。


腾讯传

[[腾讯传]]1998-2016:中国互联网公司进化论 (吴晓波)

  • 令人失望。在之后的10年里,腾讯一直在商用市场上

  • 哈佛大学商学院教授理查德·泰德罗在描述铁路和电报的商业意义时说:“任何能打破对于人、产品和信息的时空限制的新发展,都会对商业运作的方式产生巨大的影响。”

  • 不要告诉我世界是怎样的,告诉我如何创造世界”

  • 必须破坏原有的秩序和道德规则,同时,你必须致力于秩序和规则的重建,你是破坏的后果承担者和“遗产继承人”。


自行车

[[rs500]]

极客助力轮

轮胎

  • continental gp5000防刺胎

组成

  • 自行车 = 车架+ 套件 + 轮组 + 车把把立 + 车杆车座

  • 三大件 = 车架+ 套件 + 轮组,也就是自行车最重要的三部分

  • 大套 = 驱动件(驱动盘+曲柄)+变速器套件+刹车

  • 小套 = 变速器套件(前变后变前拨后拨)

  • 轮组 = 轮圈 + 辐条 + 花鼓 + 内外胎

迪卡侬[[公路车]]

  • Triban

  • [[Van Rysel]]

    • EDR,ENDURANCE 耐力公路车系列

    • AF,碳纤维前叉+铝制车架

    • CF,碳纤维车架

    • RCR,比赛用

捷安特[[公路车]]

  • 命名规则:型号+材质和工艺+级别

    • 型号就是:TCR、PROPEL、DEFY、XTC这类的

      • defy 耐力架
        pp 破风架
    • 材质和工艺:SL、SLR、ADV、 ADV PRO、ADV SL

    • 后缀:DISC、KOM等等

      • kom 压缩盘
    • 级别 0-3

  • tcr adv pro 0 ut电变,功率计


范数

范数是一种用来度量某个向量空间中的向量长度或大小的手段。

P范数

  • xp=(x1p+x2p++xDp)1/p=(i=1Dxip)1/p\|\boldsymbol{x}\|_{p}=\left(\left|x_{1}\right|^{p}+\left|x_{2}\right|^{p}+\cdots+\left|x_{D}\right|^{p}\right)^{1 / p}=\left(\sum_{i=1}^{D}\left|x_{i}\right|^{p}\right)^{1 / p}

  • 考虑 f(x1,x2), p 越大,范数值的图形越接近正方形

+ 

凹凸形

  • p>1 范数等高线形状为凸

  • 0<p<1 范数等高线形状为凹

L1 范数

  • 曼哈顿距离

  • 套索回归 [[LASSO regression]]

L2 范数

  • 欧几里得距离

  • [[岭回归]]

[[弹性网络回归]] 不同比例引入 L1 和 L2 正则项

LL^{\infty} 范数:正方形

  • 切比雪夫距离 Chebyshev distance

  • x=max(x1,x2,,xD)\|\boldsymbol{x}\|_{\infty}=\max \left(\left|x_{1}\right|,\left|x_{2}\right|, \cdots,\left|x_{D}\right|\right)

  • 几何图形

    • max{x1,x2}=1\max \{\left|x_{1}\right|,\left|x_{2}\right| \}= 1

      • {x1=±1x12x22>0x2=±1x12x22<0\begin{cases}x_{1}=\pm 1 & x_{1}^{2}-x_{2}^{2}>0 \\ x_{2}=\pm 1 & x_{1}^{2}-x_{2}^{2}<0\end{cases}
    • x12x22>0x_1^2 - x_2^2 > 0

      • x12x22=0x_1^2 - x_2^2 = 0 双曲线

+ 该范数对应的图形


自相关

缩写 :-> ACF

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# https://github.com/Arturus/kaggle-web-traffic/blob/master/make_features.py#L88
def single_autocorr(series, lag):
"""
Autocorrelation for single data series
:param series: traffic series
:param lag: lag, days
:return:
"""
s1 = series[lag:]
s2 = series[:-lag]
ms1 = np.mean(s1)
ms2 = np.mean(s2)
ds1 = s1 - ms1
ds2 = s2 - ms2
divider = np.sqrt(np.sum(ds1 * ds1)) * np.sqrt(np.sum(ds2 * ds2))
return np.sum(ds1 * ds2) / divider if divider != 0 else 0

Rk=i=1nk(XiXˉ)(Xi+kXˉ)i=1n(XiXˉ)2R_{k}=\frac{\sum_{i=1}^{n-k}\left(X_{i}-\bar{X}\right)\left(X_{i+k}-\bar{X}\right)}{\sum_{i=1}^{n}\left(X_{i}-\bar{X}\right)^{2}}

  • 取值范围 -1 到 1,越大越相关

  • 比如一个序列长度是 L,如果具有周期性且周期性为 t,那么子序列 0:L-1-t 和 子序列 t:L-1 的相关性是最大的

Ref


营销人群四象限

TR 营销目标人群 Treatment and Response

CR 自然增长人群 Control and Response

TN 营销顽固人群 Treatment and no Response

CN 待评估营销人群 Control and No Response

image.png


观者进阶

[[2023/10/18]] [[杀戮尖塔/A13]] 观者 伪红蓝无限,没有内心宁静,不惧妖邪不太可靠,回环踢前期需要敲,后期没有易伤伤害吃力。

[[2023/10/18]] [[杀戮尖塔/A14]] 观者 猛虎红蓝无限,达成无限后不需要再补防以及其他姿态牌,需要考虑如何稳定启动


观者卡牌

化智为空

  • 双化智+1费平静 无限

发泄

  • [[@nosl观者卡组评估攻略]] 放回抽牌堆和低费多段的特性也有多种后期玩法:

    • 放回抽牌堆的特性可以大幅度增加一轮洗牌的伤害,这个特质对于天罚战很重要。

    • 有虎甚至双虎时发泄放到抽牌堆顶也可以跨回合启动。

    • 发泄的放回特质可以做到和双1费蓝蓝一起循环11牌猛虎无限。

猛虎下山

  • [[@nosl观者卡组评估攻略]] 最强上限,但是需要找到启动

碰撞连击

  • [[@nosl观者卡组评估攻略]] 强过渡,针对 1、2 层敌人,一抓碰撞疾风选碰撞

[[疾风连击]]

  • [[@nosl观者卡组评估攻略]],前期不强,后期容易因为姿态浓度上升,获取力量升值

粉碎关节

  • 吃敲,配合红姿态三倍伤害,上限的重要构成

[[通晓万物]]

  • [[@nosl观者卡组评估攻略]] 陷阱牌,高费不好开

[[五体投地]]

  • 小循环加费牌,小卡组、至少 2 张抽 2 以上卡牌或者有斋戒缺上限可抓

停顿

点穴

  • 无法和姿态配合,抓位不高

  • 只有一张点穴相关卡牌

强度

image.png

Ref


观者

红蓝无限打法:一层抓高数值卡、二层补防御和终端、三层保启动。姿态在缺少的时候就抓。能删牌就删牌。

  • 猛虎无限,启动后 <10 牌就可以无限,打心脏最好控制在 8 张

    • 一张猛虎可以暴怒 + 冷静无限

image.png

image.png

image.png

神格

image.png

端口化观点

  • 过渡期

  • 防御

image.png

  • 防御替代

image.png

image.png

姿态

  • 愤怒

  • 平静

  • 神格

[[观者卡牌]]

[[观者进阶]]

[[杀戮尖塔/删牌]]

  • 一层删防御

  • 一层boss 是蹲起就下一张删打

  • 是史莱姆或者六火继续删防

  • 第三张删打

[[杀戮尖塔/Act1]]

  • 10分:金字塔

  • 5分:鸟笼,圣水

  • 4分:星盘,潘多拉,红石

  • 3分:咖啡杯,奴隶贩子项圈,诅咒钥匙,锤子(有神/学时5分)

  • 2分:圆顶,黑星,添水

    • 拿圆顶后不好打蛇花
  • 1分:树皮,屋子

  • -1分:金冠,狗圈,绿帽

  • 浮动:紫花,蛇眼

    • 紫花,没蓝牌加不了费,有复数蓝牌没加费也能玩。判断拿了好不好用。

    • 蛇眼,方差大,当头之类的高费牌、机械降神

Ref


行为序列建模

行为序列的时间窗口

  • 短期序列

    • N < 200

    • 聚集在一个或几个类目上

    • 提取出用户的短期兴趣

  • 长期序列

    • 千或万量级

    • 用户长期购物习惯

    • 提取出用户的长期兴趣

  • Session 序列

    • 几分钟或几十分钟访问行为

建模的属性信息

  • 物品 id

  • 物品属性的信息

  • 行为时间

  • 行为类型

  • 行为的详细信息

    • 停留时长、点击图片、查看评论

负反馈

  • 隐式负反馈

    • 曝光未点击
  • 显示负反馈

建模方法

  • [[Pooling]]

    • 行为序列特征 embedding 做 mean, sum 或 max pooling

    • 用户历史序列中的行为有相同的重要程度,反应用户主要兴趣。

    • [[@Deep Neural Networks for YouTube Recommendations]]

  • [[Attention]]

  • RNN

  • [[Capsule]]

    • MIND
  • Transformer

    • DSIN

    • BST

  • 基于记忆网络

    • HPMN

    • MIMN

  • 基于检索的模型

    • UBR4CTR

    • [[SIM]]

[[@日久见人心:论建模用户长期兴趣的几种姿势]]

长期用户行为序列处理模型

  • MIMN、UBR4REC、SIM、ETA、SDIM,每个模型都在解决什么问题,有什么优缺点,注意时间复杂度

    • 比如,SIM用hard search来缩短行为序列长度,但是用于检索的离线索引构建耗时,因此有了不需要构建索引的ETA,但ETA仍然需要[[target attention]],因此有了一步到位的SDIM

参考


许知远对话罗翔

为权利而斗争

法律人物:

  • 马丁路德金

  • 甘地

  • 林肯

  • 沈家本

    • 故居 北京宣武门外

    • 历代刑法考

    • 刑法是威吓的工具

      • 民不畏死,奈何以死惧之

      • 极端残酷性实现罪行平衡

网络暴力

  • 朋友对罗翔说:别人对你的表扬名不副实,你就很开心,对你的批评名不副实,你就不高兴了,你这不是典型的双标吗?

理念上的乌托邦是有意义的,但是现实中的乌托邦是不可能的。我们画不出那一个完美的圆,我们无法追求到绝对的美,但是你不能推导出,这个世界没有美,这个世界一切都没有意义,那人的存在是没有意义的,人类追求美的是没有意义的。

逐字稿,不紧张

湖南话 昨天、今天和明天

[[Plato]] 学习是一种回忆

  • 人类的原初设置

泛道德倾向:

  • 道德是自律,不是他律

    • 道德是要求自己的,不是要求他人的。
  • 道德完美主义

  • 积极道德主义

    • 是以道德作为惩罚正当化的一种依据,只要一种行为违背了道德,那我们就要千方百计地对他进行惩罚。

    • 对违反道德的行为,进行惩罚

    • 中国传统

  • 消极道德主义

    • 是把道德作为一种出罪的依据,作为一种正当化的依据。

    • 如果在道德上是值得谴责的,那它不一定是犯罪,

    • 但如果一种行为在道德生活是被鼓励的一种行为,把它就不应该受到惩罚。

法律强调程序正义

  • 人们往往有朴素的正义之心、道德之心,但这种正义之心、道德之心又是有高度压迫性的。

  • 罪行法定

  • 因为司法是一定会存在错误的一种过程。司法的错误如何被人所接受,就是它是强调程序的。

    • 程序中可以达到可见的正义,有瑕疵的正义
  • 网络进行道德审判

    • 民众很多时候是希望撇开程序,去寻求他心目中的一些正义,而这种正义会导致一种非正义。

    • 往往是善良的愿望把人们带入地狱。

  • [[侠客行]]

大宪章:公权和私权分开

法律高度技术化

人承认自己是有限的

  • 人要接受自己的有限性,人承认自己是有限的,于是承认你的逻辑是有限的,承认你的理性是有限的,承认你的阅读是有限的,承认你整个人就是在偏见之中,你这一生就是在走出偏见。

    • 古人说的行千里路,读万卷书。因为你行了千里路,就一定会从地方性偏见走出来,了解了各地各异的风俗人情,就不会觉得只有自己老家或者自己所处的地方就是最好的。

    • 读万卷书就会走出时代偏见,因为你在读书的过程中你会跟古人,跟过去的时代,跟其他的时代进行交流,那就可能走出时代性的偏见。

  • 一生是走出偏见

人最大的痛苦是无法跨越知道和做到的鸿沟

  • 你自己所教的,你做不到。你是在骗别人,你也在自我欺骗。

  • 我思故我在:幻想

  • 我始终告诫我自己,人能真正影响的人其实很少很少,很多人所谓的被你影响只是片刻的感动,最后还是投入到自己以前的生活。人片刻地感动,不可能持久地感动。

  • ^你为自己想到的所感动^

我不能够弃演

人被你片刻地感动

  • 许:但现在片刻的感动已经成为这个时代重要的一种方式。

  • 罗:这很多时候是一种自我欺骗,你在欺骗自己,你也在欺骗别人,你也让别人陷入了一种自我欺骗。

  • 技术主义背后的价值

做城邦中的[[牛虻]]

  • 知识分子的一个重要的特点,可能还是像苏格拉底所说的,做城邦中的牛氓。

  • 作为我们法律人,我们是双向牛氓。

    • 一方面,我们是城邦的牛氓,我们要对权力进行警惕;

    • 一方面,我们是民众身上的牛氓,我们要提醒他们,激情是有界限的,激情也是要在法治的界限之中。

民众对公平和正义的期待在视频中找到回响

[[Socrates]]的狂喜是真诚对待[[德尔斐神谕]]

  • [[认识你自己]]

  • 凡事勿过度

  • 妄立誓则祸近

我始终相信我们不可能追求到绝对善,但是我们也不能因为绝对善追求不到而退向相对主义。

大部分人想的不是金箍棒,也是定海神针。大部分人想的是怎么混进蟠桃会吃个桃子。


诺贝尔经济学奖

[[1978]] [[Herbert A. Simon]]

[[1993]] 道格拉斯·诺斯使用 [[路径依赖]] 理论成功诠释经济制度的演进

[[1996]] Vickrey 他在《反投机、拍卖与竞争性密封投标》文中对拍卖理论做了非常开创性的工作,首次运用博弈论来分析拍卖问题, 极富预见性地提出了拍卖理论中的多数关键问题, 从而引导了该理论的基本研究方向。

  • [[Vickrey auction]]

[[2002]] [[Daniel Kahneman]] 把心理研究的成果与经济学融合到了一起,特别是在有关不确定状态下人们如何做出判断和决策方面的研究

[[2007]] 机制设计

[[2017]] 行为经济学 理查德·塞勒 [[社会人]]

[[2020]] 保罗·米尔格罗姆(Paul R. Milgrom)和罗伯特·B·威尔逊(Robert B.Wilson)改进[[拍卖理论]]和发明新的新拍卖形式

[[2021]] David Card、Joshua D. Angrist和Guido W. Imbens,使用自然实验方面做出挑战传统智慧的开创性工作。劳动经济学和因果关系分析

  • David Card 提高最低工资并不一定会导致就业机会减少

  • Joshua D. Angrist和Guido W. Imbens的工作解决了方法论的问题,他们的研究表明可以从自然实验中得出关于因果关系的精确结论,帮助推动了自然研究的使用。

  • Joshua D. Angrist 学校教育对收入影响

[[2022]] 美联储前主席伯南克、Douglas W. Diamond和Philip H. Dybvig,银行和金融危机的研究


试验次数和后验分布的关系

求未知参数 θ\theta,数据集是 DD

θ\thetaDD 下的期望写成

  • Eθ[θD]=Ep(θD)[θD]=θp(θD)dθ\mathrm{E}_{\theta}[\boldsymbol{\theta} \mid D]=\mathrm{E}_{p(\theta \mid D)}[\boldsymbol{\theta} \mid D]=\int \boldsymbol{\theta} p(\boldsymbol{\theta} \mid \boldsymbol{D}) \mathrm{d} \boldsymbol{\theta}

如果取遍全部的数据集,期望可以写成

  • Eθ[θ]=ED[Eθ[θD]]={θp(θD)dθ}p(D)dD=θ{p(θ,D)dD}dθ=θp(θ)dθ=Ep(θ)[θ]\begin{aligned} \mathrm{E}_\theta[\boldsymbol{\theta}] =\mathrm{E}_D\left[\mathrm{E}_{\boldsymbol{\theta}}[\boldsymbol{\theta} \mid D]\right] & =\int\left\{\int \boldsymbol{\theta} p(\boldsymbol{\theta} \mid \boldsymbol{D}) \mathrm{d} \boldsymbol{\theta}\right\} p(\boldsymbol{D}) \mathrm{d} D \\ & =\int \boldsymbol{\theta}\left\{\int p(\boldsymbol{\theta}, D) \mathrm{d} D\right\} \mathrm{d} \boldsymbol{\theta} \\ & =\int \boldsymbol{\theta} p(\boldsymbol{\theta}) \mathrm{d} \boldsymbol{\theta} \\ & =\mathrm{E}_{p(\boldsymbol{\theta})}[\boldsymbol{\theta}]\end{aligned}

θ{\theta} 的先验均值 Eθ[θ]\mathrm{E}_\theta[\boldsymbol{\theta}] = 后验均值在全部数据集下的期望 ED[Eθ[θD]]\mathrm{E}_D\left[\mathrm{E}_{\boldsymbol{\theta}}[\boldsymbol{\theta} \mid D]\right]

  • 先验期望和数据集无关

[[PRML/2.24]] 参数 θ{\theta} 先验分布的方差等于参数 θ{\theta} 后验分布方差的均值加上后验分布均值的方差

  • varθ[θ]=ED[varθ[θD]]+varD[Eθ[θD]]\operatorname{var}_\theta[\boldsymbol{\theta}]=\mathbb{E}_{\mathcal{D}}\left[\operatorname{var}_\theta[\boldsymbol{\theta} \mid \mathcal{D}]\right]+\operatorname{var}_{\mathcal{D}}\left[\mathbb{E}_{\boldsymbol{\theta}}[\boldsymbol{\theta} \mid \mathcal{D}]\right]

  • 在考虑了全部的数据集后,后验方差的均值总是小于等于先验方差。
    ls-type:: annotation
    hl-page:: 65
    hl-color:: yellow

    • 根据 2.24 可以推导出 varθ[θ]ED[varθ[θD]]\operatorname{var}_\theta[\boldsymbol{\theta}] \geq \mathrm{E}_D\left[\operatorname{var}_\theta[\boldsymbol{\theta} \mid \boldsymbol{D}]\right],后验分布均值的方差总是大于等于 0

    • 给定某个数据集时,参数 theta 的方差会小于等于给定数据集之前的方差。

      • 只有这样才能满后验方差的均值小于等于先验方差

        • 可学习,用数据训练出来的参数比先验参数更加有意
      • 特定数据集下(数据集构造不合理,数据集没有正确反应数据集的整体特性), theta 的后验方差反而比先验方差更大 varθ[θ]<varθ[θD]\operatorname{var}_\theta[\theta]<\operatorname{var}_\theta\left[\theta \mid D^{\prime}\right]

试验越多,模型参数(后验)越准,方差越小。为什么不用先验而是用后验的原因。


赛博

高科技下的低生活

控制下的反抗

Cyber- (赛博)源自希腊语 “kybernetikos” 的词根,意为"舵手" (steersman ) 。诺伯特·维纳( Norbert Wiener ) 发明了"cybernetics" (控制论) 这个词,用它来描述利用反馈来做调整的事物

  • 比如利用左右转向来纠正自行车或汽车的方向。

所以“控制论” 实际上研究的是“控制链接",即事物与控制事物之间的连接方式。

但是随着它被非正式地引用至计箕机的各个领域,控制论这个词引起了令人绝望的混乱。人们开始用"cyber-" 开头, 创造出一些愚蠢的词汇,用来描述一些他们不懂的概念。

  • 比如"cyberware" ( 数码假肢)、“cyberculture” ( 数字文化)、“cyberlife” ( 网络生活), 它们几乎没有任何意义。

  • 从那之后, 一般而言由"cyber-" 开头的词的意思是, 我不懂我在说什么,或者是我只是在愚弄和迷惑你” 。


赵赛坡关于如何记笔记的想法

1/N 没有什么万能或完美的笔记工具,更多时候还是在构建一个流程,形成若干个工具的使用流程;

2/N 你必须足够信任你的工具,只有这样,你才能放心地把笔记放在这些工具里;

3/N 不管是用哪一种笔记产品,我建议通过链接的形式把内容联系起来,包括笔记工具内部的链接以及外部网盘公开链接或者文章的互联网链接等等,形成自己的索引机制;

4/N 索引类似于目录,但应该比目录内容更多,可以是时间顺序,比如我一直在做的每日笔记,每天一条笔记,存放当天的想法和收集的资料(链接),并有自己的解释说明;或者是主题形式,选择一个主题整理想法与资料(链接);

5/N 把笔记索引与笔记存储做适当分离,比如分成两个应用,或者让索引单独成为一个笔记,你每天阅读更新的,应该是索引而非存储的内容;

6/N 你必须不断完善自己的索引机制,通过增删链接,调整索引内容层次和架构,来带动整个笔记流程的优化;

7/N 最后补充一个关于存储与收集时的建议,尽量不要收集与过往没有联系的内容,除非你打算关注一个新领域,你需要不断思考进入笔记存储的每一条内容与之前内容的联系。(完)


逻辑谬误例子

希希吃了一种药,出现过敏反应。因此,希希认为这种药必然导致过敏反应。 :-> 巧合谬误

  • 解释 :-> 希希遇到的只是个别例子,不能因此论断该药必然导致过敏反应。
    神为何在世上创造这麽多苦难?答案是:你必须明白,神自有祂神奇的安排,我们没有特权去知道的。 :-> 片面辩护
    星座是准确的,但你必须先了解背後的理论。 :-> 片面辩护
    你还有没有干那非法勾当?(你有干非法勾当吗?是否还有继续?)#card

  • 复合问题(Complex Question) 错谬

  • 解释:简单的一句提问,其实隐藏了两个问题。你给予其中一条问题的答案,并不一定和另外一条的一样。例如你有干非法勾当,但未必等於你还有继续。

如果有些人相信祈祷的力量,相信的人只会注意到少量「有回应」的祈祷,而忽略大多数无回应的祈祷。#card

  • [[确认性谬误]]

  • 这表示祈祷的价值最差只是随机,最好也只有心理上的安慰作用。

“向慈善组织捐助是正确的,因此,慈善组织向我们要钱也是正确的。” :-> [[词语歧义谬误]] #card

  • 这里"正确"(right)一词有歧义,既可以指某事是对的或者好的(例如"这次测验我的答案都正确"),也可以指某人对某物拥有权利(例如"人人都有生命权")。

  • 有些论证会有意偷换词语含义,常见的此类词语有"自由"、“正义”、 "正确"等等;有些词语歧义问题则属于差错或者误解。

  • 但是,无论属于哪种情况,重要的是应保证在论证中所使用的主要词语的含义始终一致。

因为我希望明天在户外打球,所以明天一定天晴。 #card

  • [[一厢情愿谬误]]

  • 解釋:這只表示個人願望,並不能作推論根據。

我们必须鼓励年青人去崇拜神,以灌输道德行为。 :-> [[窃取论点谬误]],可是宗教与崇拜真的产生道德行为吗?
我知道有上帝,因为《圣经》是这样说,而《圣经》是不会错,因为它是上帝写的。 :-> [[窃取论点谬误]]
她去了中国之後病了,所以中国有些东西令到她病。 :-> [[事后归因谬误]]
有位心理学家曾经说过,每人都有犯罪倾向。:-> [[诉诸权威谬误]],匿名权威
锻炼身体无法完全预防感冒,还是不要锻炼了吧。 :-> [[完美解决方案谬误]]
"若干世纪以来,人们都一直在努力证明上帝的存在,但迄今尚无人能够证明。因此,上帝并不存在。"与此观点相反但存在同样逻辑谬误的说法则是:“多年来,人们一直试图证明上帝并不存在,但迄今尚无人能够证明。因此,上帝确实存在。” :-> [[诉诸无知谬误]]

  • 解释 :-> 这两种论证都是利用证据不足来支撑结论的正确性。
    小强!小强你怎么了小强?小强,你不能死啊!我跟你相依为命,同甘共苦了这么多年,一直把你当亲生骨肉一样教你养你,想不到今天,白发人送黑发人。 :-> [[诉诸感情谬误]]
    “他为什么那么害怕?” “因为它是胆小鬼。” :-> [[乱扣帽子谬误]]
    他曾经是个罪犯,不要相信他说的话。:-> [[井中投毒谬误]]
    “主动型安乐死在道义上是可以接受的,协助他人籍由死亡而摆脱痛苦乃是正当的,符合伦理的。” :-> [[窃取论题谬误]]
  • 论据: 协助他人籍由死亡而摆脱痛苦乃是正当的,符合伦理的 。 结论: 主动型安乐死在道义上是可以接受的。 #card
    • 把这里的论据稍加变换,就能看出同一个意思重复了两遍:“正当的,符合伦理的"很大程度上也就是"在道义上是可以接受的”,而"协助他人籍由死亡而摆脱痛苦"意思就是"主动型安乐死"。

    • 因此,该论据实际上在说:“主动型安乐死在道义上是可以接受的”,而这与相应结论完全一样!

    • 对于为什么安乐死可以接受,该论证并未给出任何真正的理由,反而难免让人质疑:“呃,那么,你为什么认为安乐死可以接受呢?”。

    • 这里的论证"窃取"(亦即规避)了真正的问题。

“杀人在道义上是错误的。因此,主动型安乐死在道义上是错误的。” :-> [[窃取论题谬误]] #card

  • 论证所需但却含糊的论据完全被略去

  • 这里略去了论据"主动型安乐死是杀人 “,而这一论据又是大可争议的——这样的论证同样是只字不提相关论据从而"窃取"了或者"规避"了主动型安乐死是否属于杀人这一问题,意在让人们只注意到没有争议的论据"杀人在道义上是错误的”,而看不到相关的假定。

互联网是街道广场,要自由也要安全,因此要加强网络管控。 :-> [[错误类比谬误]]
“惩罚的严厉程度应当与违法的严重程度相吻合。现如今,对酒后驾车的惩罚也许不过只是罚款。然而酒后驾车乃是非常严重的违法,可以导致无辜行人的丧命。因此,酒后驾车应当适用死刑。” :-> [[推不出谬误]]

  • 解释 :-> 这里的论据实际上可以支撑若干结论,例如"对酒后驾车应当严惩"等等,但是就本例而言,却不能支持适用死刑的正当性。
    当地人都说那湖里有水怪,千万不要去。 :-> [[诉诸公众谬误]]
    “琼斯总统提高了税收,之后暴力犯罪上升。因此,琼斯总统对犯罪上升负有责任。” :-> [[事后归因谬误]]

  • 为什么 :-> 税收增加可能是也可能不是犯罪上升的一个因素,但本例并未揭示二者存在因果关系。要避免"事后归因",本例的论证就需要给出一定的解释,阐明税收增加如何最终就会引起犯罪上升。因此,避免这一谬误的办法就是:如果要说甲导致乙,就还应说明甲如何导致乙,而不能仅仅说是因为甲先发生乙则后发生!
    “我的舍友说她的哲学课很难,我的哲学课也很难,因此,所有的哲学课必定都很难!” :-> [[以偏概全谬误]]

  • 原因 :-> 本例的依据仅为两个人的感受,是不足以得出这样的结论的。

  • 本例结论若改为不那么绝对的" 某些哲学课对某些学生来说是很难的 “,则不属于"以偏概全”。
    “你说川普通俄现在还没有证据,不应该定罪,可是别忘了科米听证会才过了一个多月,当年尼克松被弹劾可是调查了好几个月呢,你们为什么这么急呢?” :-> [[偷换概念谬误]]
    “改革开放以后贪官多了,就是改革开放才导致的腐败。” :-> [[因果混淆谬误]]
    “我们的同胞现在失踪了,你在这里谈程序正义,是没良心。没良心的人说出来的东西有什么价值?” :-> [[诉诸感情谬误]]
    “我虽然不反对同性恋,但是如果我们鼓励同性恋,那没有人生孩子,人类就灭绝了。” :-> [[滑坡谬误]]
    把给一个人发一次,直接推广到之后会一个人发十次。 :-> [[滑坡谬误]]
    “你一个川粉说川普没通俄?呵呵。你们开心就好。” :-> [[人身攻击谬误]]
    “朱总理让几千万人下岗,是根本不在乎老百姓的死活。你问我怎么知道的?不然他怎么会让他们下岗?” :-> [[循环论证谬误]]
    好好活就是干有意义的事,有意义的事就是好好活! :-> [[循环论证谬误]]
    “我有一朋友富二代,靠关系出国,回来家里人安排进了国企,整天屁事不干,光玩跑车搞女人。富二代没有一个好东西。” :-> [[以偏概全谬误]]
    “我虽然自己没做过律师,但这些经历都是我朋友的,你凭什么质疑?我评论冰箱难道还要自己会制冷吗?” :-> [[错误类比谬误]]
    神存在是因为圣经有记载,圣经存在是因为神所默示的。 :-> [[循环论证谬误]]
    发达地区人们的平均寿命比较高,所以是高经济水平导致了人们的长寿。 :-> [[忽略常见原因谬误]]
    进化论说人是由猩猩演化而来。 :-> [[稻草人谬误]]

  • 解释 :-> 进化论只是说人和猩猩有共同祖先。
    进化论者认为所有事物都是随机的。 :-> [[稻草人谬误]]

  • 解释 :-> 大部份进化论者认为,在自然选择的解释下,可能包括偶发的成份,但并非全然依靠随机。
    还没有外星人存在的可靠证据,因此外星人是不存在的。 :-> [[强求确定性谬误]]
    军事专家张召忠说雾霾对激光武器是最好的防御。因此制造雾霾有利于国防。 :-> [[诉诸权威谬误]],可疑权威
    今天我们伟大祖国68岁生日。 :-> [[偷换概念谬误]]

  • 错误点是 祖国(地域人文概念)≠ 中华人民共和国(政治/政权概念)。
    网络直播平台的兴起一定是因为无聊的人太多了。 :-> [[过度简化因果关系谬误]]
    这次考试顺利通过一定是因为之前所做的祈祷。 :-> [[事后归因谬误]]
    坐轮椅是危险的,因为大多数坐轮椅的人都经历过事故。 :-> [[因果混淆谬误]]
    作为享有崇高威望的卓越领导人,伟大的马克思主义者,伟大的无产阶级革命家、政治家、军事家、外交家,久经考验的共产主义战士,他有着对人民无比热爱的伟大情怀,实事求是的理论品质,不懈开拓创新的政治勇气,高瞻远瞩的战略思维,坦荡无私的博大胸襟,定会带领我们继往开来,实现民族的伟大复兴。 :-> [[光环效应谬误]]
    要爱情还是要面包? :-> [[虚假的两难选择谬误]]
    “Caldwell Hall大楼状况很遭,我们要么把它拆掉重建,要么就只能继续拿学生的人身安全冒险。显然,不应拿任何人的安全冒险,那么就必须把它拆掉。” :-> [[虚假的两难选择谬误]]

  • 解释 :-> 这里的问题在于没有指出还有这种可能:我们可以维修该建筑,或者采取某种措施保证学生安全;例如,如果只有若干教室破损,那么我们也许可以不给这些教室排课。
    假定父母对你讲明了不能吸烟的道理,列举了很多非常好的理由,例如有损健康、费钱等等,而你则回答说:“你说的我不能接受,因为你在我这个年龄也抽烟。你也是这样!” :-> [[你也一样谬误]]

  • 解释 :-> 即使父母在过去也做过他们现在反对的事情,这一事实也无损于他们的论据(吸烟有害健康而且费钱),因此,你的回答存在逻辑谬误。
    “刚才为什么不接电话?” “在开会,不方便接听。” “你根本就不在乎我!” :-> [[转移话题谬误]]
    希望你接受我这个多月来天天通宵撰写的建议书。 :-> [[诉诸怜悯谬误]]

  • 解释 :-> 建议书的好坏,不在乎花了多少时间,而是取决於其内容,提出「多月来天天通宵撰写」只为搏取同情。
    例如:在月圆时出生的人较多。结论:月圆引致出生率上升。 #card

  • 不当结论(non sequitur

  • 可是,是月圆引致较多出生,还是由於其他原因(可能是统计上的期望差异)?


部署 hexo 博客到 cos

在 github 上搜索发现,有挺多发布 hexo 博客到 cos 的插件


逻辑谬误

[[逻辑谬误例子]]

给出的论据的确能够支撑某种结论,然而却非欲论证的结论。 :<-> [[推不出谬误]]
[[你也一样谬误]] :<-> 责对手实际上也做了他自己所反对的事情,因此他的论证不听也罢。
[[诉诸无知谬误]] :<-> 因为不能否定,所以必然肯定,反之亦然。
[[窃取论题谬误]] :<-> 要求读者径直接受结论而并不给出任何真正的证据;论证要么是建立在与结论内容相同的论据之上(即所谓"循环论证"),要么就是略去了论证以为依据的某一重要(然而可疑的)假定。

  • 有时,人们会把" 窃取论题"用作一种常见的评语,泛指结论缺乏充分理据的那些情形,但这不是我们这里所说的含义。

[[窃取论点谬误]] :<-> 以假定正确的论点得出结论。
[[词语歧义谬误]] :<-> 即在论证中某一重要词语的两个或更多含义之间游移不定。
[[完美解决方案谬误]] :<-> 认为一个方案不完美,就索性摒弃这种方案。
[[井中投毒谬误]] :<-> 将一个人无关的不利信息呈现出来,以用来质疑其观点。
诉诸其他支持(Appeals to Motives in Place of Support)

  • [[诉诸怜悯谬误]] :<-> 指激起人们的恻隐之心,从而接受自己的结论。
    [[人身攻击谬误]] :<-> 对人不对事,讨论时针对对方的人格、动机、态度、地位、阶级或处境等,而进行攻击或评论,并以此当作提出了理据去驳斥对方的论证或去支持自己的论点
    [[滑坡谬误]] :<-> 假设采取提议的行动会引发一系列不可控的不利事件,而事实上却有现成的程序来防止这类连锁事件发生。
    追求完美解决方案谬误 :<-> 尝试某种解决方案后还有遗留问题未解决,那么这种解决方案就不应该采纳。
    确认性偏见(confirmation bias)#card

  • (类似监视下的选择)这是指一种选择性的思想,集中於支持相信的人已相信的证据,而忽略反驳他们信念的证据。

  • 确认性偏见常见於人们以信心、传统及成见为根据的信念。

片面辩护(special pleading)#card

  • 以新鲜或特别的声称,抗衡对手的陈述;展示论据时只着重主题中有利或单一的范畴。

构成谬误(composition fallacy)#card

  • 当某论据的结论,是倚靠由某东西从部份至整体、或从整体至部份的错误特性。

  • (例如:人类有意识,而人体和人脑都是由原子组成,所以原子都有意识。

  • 又例如:文书处理软件由佷多原位组(byte)组成,所以一个原位组是组成文书处理软件的一部份。)

[[偷换概念谬误]] :<-> 论证中关键词语有两种或以上的含义。将似乎一样的概念进行偷换,实际上改变了表达的含义。
监视下的选择(observational selection)#card

  • (类似确认性偏见)指出有利的,却忽略不利的事实。谁去过拉斯维加斯(Las Vegas)赌场会见到人们在赌桌上和老虎机上赢钱,赌场经理会响钟及鸣笛以公告胜利者,却永不会提及失败者。这可令人觉得胜出的机会看来颇大,但是事实却刚刚相反。

[[诉诸公众谬误]] :<-> 引述大部分人都持有这一观点的说法来竭力证明某个论断有道理,错误地假设大部分人喜欢的一切就是有道理的、可接受的。
[[诉诸权威谬误]] :<-> 引用某一权威的话来证明结论,但该权威对这一论题并没特别的专门知识。
[[诉诸感情谬误]] :<-> 使用带有强烈感情色彩的语言来分散读者或听众的注意力,让他们忽视相关的理由和证据。被利用的情感有害怕、希望、爱国主义、怜悯和同情。
证明不存在(proving non-existence)#card

  • 当辩者无法为他的声称提供证据,他可能会挑战他的对手,叫对手证明他的声称不存在。

  • (例如:证明神不存在;证明不明飞行物体未曾到过地球;等等)尽管有人可以在特定的限制中证明不存在,如在盒中没有某些东西,可是却无法证明普遍性、绝对性或认知性的不存在。无人能证明一些不存在的东西。提出声称的人必需自己证明那声称的存在。

[[稻草人谬误]] :<-> 歪曲对方的观点,使它容易受到攻击,即使我们攻击的观点并不存在。
[[虚假的两难选择谬误]] :<-> 现实中存在两种以上的选择的时候却假设只存在两种选择。
[[乱扣帽子谬误]] :<-> 错误假设因为你为特定事件或行为提供一个名称,你也可以合情合理的解释这一事件。
[[光环效应谬误]] :<-> 使用模糊、引发人们强烈感情认同的美德词汇,使我们倾向于同意某件事而不去细致检查其理由。
[[转移话题谬误]] :<-> 一个不相关的话题被插进来,将注意力从原来的论题上转移走,通过将注意力转移到另外一个论题上来帮助赢得一场论战。
[[循环论证谬误]] :<-> 推理过程中假设自己的结论成立的论证。其形式是A正确因为B正确;B正确因为A正确。
[[一厢情愿谬误]] :<-> 以自己单方面想法作为论证根据,形式是我希望X是对的(或错的),因此X是对的(或错的)。混淆了“是什么”和“该是什么”、“做什么”和“该做什么”的问题。
[[以偏概全谬误]] :<-> 根据人群中一小部分人的经历就得出有关整个人群的结论。在证据不足的基础上进行归纳概括,本质上是在不考虑所有变量的情况下做出一个匆忙的结论。
[[强求确定性谬误]] :<-> 一个研究如果不能百分百确定就应该被抛弃,它声称命题是真实的,因为它还没有被证明是错误的,或命题是错误的,因为它还没有被证明是正确的。
[[错误类比谬误]] :<-> 作并不成立的类比,提出的类比存在重要而又相关的不同点
[[过度简化因果关系谬误]] :<-> 指依赖并不足以解释整个事件的具有因果关系的因素来解释一个事件,或者过分强调这些因素中一个或多个因素的作用。
[[因果混淆谬误]] :<-> 将事件的起因和结果相混淆或是认不出两件是之间可能是相互影响的关系。
忽略常见原因谬误 :<-> 认不清两件事之所以有联系是因为常见的第三种因素在起作用。
[[事后归因谬误]] :<-> 假设某事件乙是由事件甲导致,仅仅因为乙在时间上紧随甲之后。

统计三段论的谬误(Fallacies Involving Statistical Syllogisms)

  • 例外(Accident) :-> 以概括情况加诸应有的例外情况
    • 例子:政府法例规定,行走此公路的汽车最高时速为七十公里。所以即使载着快要生产的产妇,亦不可开得快过 :-> 七十公里。
  • 相反的例外(Converse Accident)#card
    • 错谬:以例外情况加诸应有的概括情况。

    • 例子:我们准许濒死的病人注射海洛英,基於人人平等,也应让其他人注射海洛英。

因果的谬误(Causal Fallacies)

  • 巧合谬误(Coincidental Correlation)错谬 :-> 以个别情况肯定某种因果关系

  • 复合结果(Joint Effect) :-> 错谬:当两件事都为某原因的结果时,以一事为另一事的原因。

    • 例子:记者报导离乡背井的战争难民中的一家人:「他们因为房子被炮火所毁而逃到这里。」

      • 解释 :-> 炮:火导致这家人的房子被毁及离乡逃难;房子被毁并不导致这家人离开原居地。
  • 无足轻重(Genuine but Insignificant Cause):-> 错谬:举出无足轻重的次要原因论证,遗漏真正的主因。

    • 例子:吸烟使香港空气质素每况愈下

      • 解释 :-> 导致香港空气质素差的主因是交通公具的废气和天气情况。
  • 倒果为因(Wrong Direction)#card

    • 错谬:颠倒事件的因果关系。
      例子:癌症导致吸烟
      解释:吸烟才是癌症的原因。
  • 复合原因(Complex Cause)#card

    • 错谬:只指出多个原因中的其中一个为事件主因。

    • 例子:你一日到晚都只是玩游戏机而不温习,难怪你考试成绩那麽差。

    • 解释:除了玩游戏机而不温习外,还有其他原因,例如考试期间一时大意或者试题太难,但它们和玩游戏机一样,不一定是主因。

论点缺失谬误(Missing the Point)

  • 不恰当结论(Irrelevant Conclusion):-> 提出作支持的论据主要支持其他结论
    含糊不清谬误(Fallacies of Ambiguity)

  • 含糊其辞(Equivocation) #card

    • 错谬:使用有多於一个含义的字眼。

    • 例子:甲:喇叭中学又发生学生殴斗事件。乙:噢!是九龙那所吗?甲:&%^%&%#…

    • 解释:甲这里没有表明是新界喇叭,使乙误会成九龙的喇叭书院。

  • 模棱两可(Amphiboly) 错谬:句子结构含多种解释方法。#card

    • 例子:下雨天留客天留我不留
  • 重音谬误(Accent) 错谬:以重音强调某字眼或字句,达致其他意思。#card

    • 例子:難道你這個黑人可以在我們白人議會說話嗎?

类目错误(Category Errors)

  • 构成谬误(Composition) 错谬:以总体的某部份符合某条件推断总体均符合某条件。(由個別推出普遍)

    • 例子:熱火隊奧尼爾的身裁如此厲害,熱火隊的身裁亦一定如此厲害。

      • 解釋 :-> 奧尼爾是一位球員,但誰人叫熱火隊?
  • 分割谬误(Division) 错谬:以总体符合某条件推断总体的所有部份均符合某条件。(由個別推出普遍)

    • 例子:熱火隊奧尼爾的身裁如此厲害,熱火隊的其他隊員身裁亦一定如此厲害,例如積遜威廉斯。

      • 解釋 :-> 他們的身裁是小巫見大巫之別呢!
        不根据前题的推理(Non Sequitur)
  • 肯定後件(Affirming the Consequent) 错谬:所有依此结构的推论:若A则必定B;B,所以便A。#card

    • 例子:如果他在中环,他一定在港岛。因此如果他现在在港岛,他一定在中环。

    • 解释:在港岛不一定要在中环,可以在金钟、湾仔、铜锣湾等。因港岛包含了以上各项。

  • 否定前件(Denying the Antecedent) 错谬:所有依此结构的推论:若A则必定B; 非A,所以非B。#card

    • 例子:如果他在中环,他一定在港岛。因此如果他现在不在中环,那麽他一定不在港岛。

    • 解释:不在中环,也可以在金钟、湾仔、铜锣湾等。因港岛包含了以上各项。

  • 前後矛盾(Inconsistency)错谬 :-> 断言两件矛盾的事件都正确
    诉诸其他支持(Appeals to Motives in Place of Support)

  • 诉诸传统(appeal to tradition)#card

    • (类似主流思想谬误)(例如:占星、宗教、奴隶)只因为人们以此为传统,与它本身的存活能力无关。
  • 诉诸势力(Appeal to Force) 错谬:以势力服人。#card

    • 例子:若你不想被解雇,你必须认同公司的制度。

    • 解释:这是以工作机会强迫员工认同制度,员工不是依据制度好坏来决定认同与否。

  • 诉诸怜悯(Appeal to Pity) 错谬:以别人的同情心服人

    • 例子:希望你接受我这个多月来天天通宵撰写的建议书。

    • 解释 :-> 建议书的好坏,不在乎花了多少时间,而是取决於其内容,提出「多月来天天通宵撰写」只为搏取同情。

  • 诉诸结果(Consequences) 错谬:以讨好或不讨好的结果服人。#card

    • 例子:你若不听我的话,我便打你,不准你外出,扣起你的零用。

    • 解釋:誰願意被打?又有誰願意被扣零用?但這並不表示因此你要聽我的話是合理的。

  • 诉诸不中肯字词(Prejudicial Language) 错谬:以不中肯的字词修饰论点。#card

    • 例子:凡是爱国的人都会认同订立国家安全法的必要。

    • 解釋:怎樣才是「愛國」?如果所訂立的國家安全法是不合人道的,是違法的,難道我們還要認同嗎?

  • 诉诸大众(Popularity) 错谬:以被广泛接纳为理由服人。#card

    • 例子:看!人人都这样说,还会错吗?

    • 解釋:它是量化問題的一種;難道眾口一詞,則「指鹿可以為馬」嗎?

  • [[一厢情愿谬误]]
    改变话题(Changing the Subject)

  • [[人身攻击谬误]]

  • [[诉诸权威谬误]]

  • 作风盖过本体(Style Over Substance) #card

    • 错谬:讨论者以作风盖过事件本身使人认为其论点正确。

    • 例子:以他一向的对人的态度,他一定不会对你好的。

归纳的谬误(Inductive Fallacies)

  • 轻率的归纳(Hasty Generalization) 错谬 :-> 用作归纳总体的样本太少。

    • 例子:我问了十个人,有九个说反对民主党。结论:原来九成香港人反对民主党。#card
      • 解释:单凭十个人论断香港七百万人?未免太轻率吧。若说访问了数万人,得出来的结果便较有说服力。
  • 不具代表性的例子(Unrepresentative Sample) 错谬:用作归纳的例子不能代表其总体。#card

    • 例子:叶继欢持械行劫;林过云奸杀多女;欧阳炳强纸盒藏屍。香港人肯定有杀人倾向。
  • 不当类比(Weak Analogy) 错谬:以两件不相似的事件/事物作类比。#card

    • 例子:他对朋友这麽好,对女朋友一定很好呢。
  • 懒散的归纳(Slothful Induction) 错谬:否定归纳得出来的恰当结论。#card

    • 例子:即使有万多个实验证明化学物质影响我们的感觉,我就是不相信。
  • 排除证据谬误(Fallacy of Exclusion) 错谬:故意把重要的证据隐藏,以得出不同的结论。#card

    • 例子:秦始皇修長城,卻匈奴,統一文字度量,為中國建立國家規模,確是明君。

    • 解釋:他的暴虐又應如何看待?

全知论据(argument from omniscience)#card

  • (例如:所有人都相信某些东西,每个人都知道的。)

  • 辩者需要有全知能力以清楚每个人的信仰、怀疑或他们的知识。小心如「所有」、「每个人」、「每种东西」、「绝对」等词语。

诉诸信心(appeal to faith)#card

  • (例如:如果你不相信,是不能清楚明白的。)

  • 如果辩者倚仗信心作为他论据的根基,那麽你在以後的讨论所能得到的将不多。根据定义,「信心」是倚靠相信,并非靠逻辑或证据支持。信心倚赖非理性的思想,并会产生不妥协。

恐吓论据(argumentum ad baculum)#card

  • 论据根基於恐惧或威胁。(例如:如果你不信神,你将会下地狱被火烧。)

不良後果论据(argument from adverse consequences)

  • (例如:我们应判被告有罪,否则其他人会仿效而犯上类似的罪行。)#card

    • 只因为讨厌的罪行或行为出现,并不足以代表被告犯了该罪,或代表我们应判他有罪。
  • (又例如:灾难的出现是因为神惩罚不信者,所以我们都应该信神。)#card

    • 只因灾害或惨剧发生,与神是否存在、或我们该信甚麽并无关系。

混淆相关及起因(confusion of correlation and causation)#card

  • (例如:玩象棋的人男性比女性多,所以男性棋艺也比女性高。又例如:儿童观看电视的暴力场面,成长後会有暴力倾向。)

  • 但是,那是由於电视节目引致暴力,还是有暴力倾向的儿童喜欢观看暴力节目?

  • 真正引致暴力的原因可能是完全与电视无关。Stephen Jay Gould 把相关引致的无效假设称为「可能是人类推理上两三种最严重和最普遍的错误」。

隐藏证据(half truths / suppressed evidence)#card

  • 故意欺骗的陈述,通常隐藏一些事实,而那是构成准确描述所必需的。

铁甲战士

必备

    1. 震荡波
    1. 狂怒,升级后相当于激活。

力量战

  • 突破极限:翻倍力量战,升级去掉消耗

  • 活动肌肉

  • 燃烧

  • 观察弱点

  • 撕裂战

    • 撕裂

    • 残暴

  • 死亡收割:加血,两张以上(可以带双持复制)

防御战

  • 巩固:格档翻倍

  • 壁垒

  • 全身撞击

  • 耸肩无视、火焰屏障

  • 外挂

    • 恶魔形态:补充输出

    • 狂宴:提高最大生命值

其他流派

不建议抓的牌

  • 头槌,铁斩波,闪电霹雳,顺劈斩,交锋,金刚臂,双重打击,哨位

烧牌

  • 恶魔之焰

过渡牌

  • 一层,力量

  • 有力量,可能拿愤怒

无限

  • 耸肩 剑柄 +0费

    • 日晷提供费用,比如肚皮输出

    • 放血提供费用

  • 黑拥 医疗箱 振撑的伤口

    • 打伤口过牌,用肚皮之类的打输出, 肚皮刚开始不要拿
  • 双持复制剑柄,然后加上日晷无限

    • 破灭烧牌

链接

推荐

机器学习

其他

产品

  • 产品沉思录 · Product Thinking:少楠主理的 Newsletter 以及产品数据库,内容包括但不限于产品设计,服务设计,数据分析,互联网技术,经济学,心理学,社会学,决策学,自然科学,城市规划,零售,团队管理等内容。

推荐文章


集成学习

分类

  • Boosting 减少偏差

    • 串行训练

    • 逐步聚焦基分类器分错的样本,减少集成分类器的偏差。

  • Bagging 减少方差

    • 并行训练

    • 多次对训练样本进行采样,并分别训练多个不同的模型,然后做综合,减少集成分类器的方差。

  • [[stacking]] 提升预测精度

    • 一个母模型整合多个子模型

    • 子模型用整个训练集来训练,但是使用的算法不同,异质集成

基本步骤

  • 找到误差相互独立的基分类器

  • 训练基分类器

  • 合并基分类器的结果

    • voting

    • [[stacking]]

      • [[Adaboost]] 对数据处理而非算法进行处理,使得下一次子模型使用的训练数据更加侧重上次预测不准的部分。

        • 对分类正确的样本降低权重

        • 对错误分类的样本升高或者保持权重不变

        • 在模型融合过程中,根据错误率对基分类器进行加权融合,错误率低的分类器拥有更大话语权

基分类器

  • 可否将随机森林中的基分类器,由决策树替换为线性分类器或K-近邻?请解释为什么?

    • Bagging 好处集成后的分类器方差比基分类器小

    • 基分类器最好是不稳定的分类器,对样本分布比较敏感。

    • 线性分类器或K-近邻都是比较稳定的分类器,bagging 并不能在原有的分类器基础上获得更好的表现。

      • bagging 中对数据进行采样,可能导致他们比较难收敛,增大偏差。
  • 可以将基分类器换成神经网络

[[Q - 集成学习是否能学到子分类器没有的新东西?]]

[[Ref]]


随风@时间序列分析

时间序列分析的核心是挖掘该序列中的自相关性

特征

  • 趋势

  • 季节变化

  • 相关性 serial correlation

    • 自相关性是时间序列可以预测未来的前提

    • 波动聚类 volatility clustering

  • 随机噪声

[[时间序列分解]]

  • 从时间序列的波动中挖掘信息

  • 核心

    • 数据序列本身是隐藏着规律的,不可预测的部分很小

    • 分解方法要合适,周期判断准确

  • [[Python/package]] statsmodels.tsa.seasonalseasonal_decompose

    • trend 趋势序列

    • seasonal 季节序列

    • resid 残差序列

[[平稳性]]

  • [[ADF 检验]]

  • [[ACF]]

    • graphics.tsa.plot_acf
  • [[PACF]]

    • graphics.tsa.plot_pacf
  • 相关图可以帮助判断模型是否合适

    • 自相关性

      • 原始时间序列与模型拟合的时间序列之间的残差应该近似于随机噪声

      • 标准的随机噪声的自相关满足 ρ0=1,ρk=1\rho_0 = 1, \rho_k =1

        • 任意不为 0 的间隔,随机噪声的自相关均为 0

[[传统时间序列预测]]

[[Linear Regression]] 预测

  • 残差散点图

  • [[R2 score]]评分指标

    • R2=1SSresSStot,SSres=(yifi)2,SStot=(yiyˉ)2R^2=1-\frac{S S_{r e s}}{S S_{t o t}}, S S_{r e s}=\sum\left(y_i-f_i\right)^2, S S_{t o t}=\sum\left(y_i-\bar{y}\right)^2

    • fi预测,yi样本

    • SSres 残差平方和

    • SStot 真实值与其平均值的残差的平方和

    • 将拟合模型与数据均值相比较

      • R2=0 模型拟合和均值一样

      • R2 越接近于 1 说明模型效果越好

      • R2 < 0 说明拟合模型还不如均值模型

线性与非线性模型应用于同一时间序列

  • [[ARIMA]] 从线性自相关角度进行建模

  • 单时间序列 LSTM 从非线性自相关角度进行建模

  • 多元 LR 从线性互相关角度进行建模

  • 多元 LSTM 从非线性互相关角度进行建模

[[TCN]]

Ref


高斯核函数

[[高斯函数]]

  • 一元 f(x)=exp(x2)f(x)=\exp (-x^2)

  • 二元 f(x1,x2)=exp((x12+x22))f(x_1,x_2)=\exp (-(x_1^2+x_2^2))

κRBF(x,q)=exp(γxq22)=exp(γxq2)\kappa_{\mathrm{RBF}}(\boldsymbol{x}, \boldsymbol{q})=\exp \left(-\gamma\|\boldsymbol{x}-\boldsymbol{q}\|_{2}^{2}\right)=\exp \left(-\gamma\|\boldsymbol{x}-\boldsymbol{q}\|^{2}\right)

  • xq2\|\boldsymbol{x}-\boldsymbol{q}\|^{2} 是 [[L2 范数]] 平方,x 和 q 的欧几里得距离平方

  • 另外一种形式 [[高斯核函数]] K=exp((xx)22σ2)K=exp(-\frac{(x-x')^2}{2 \sigma ^2})

例子


项飙回答现代人生活处境艰辛

在一次访谈中,有位年轻读者提道:许多年轻人的现实生活处境非常艰辛。他们可能没有机会享受到你们当年享受到的资源,所以在这时候让他们谈“自我”是很奢侈的。

如果缺乏好奇心,一个人很可能会对这种说法进行反驳。比如,年轻人怎么艰难了?怎么就没享受到更好的资源了?不是还有互联网吗?等等。但是项飙没有直接回答,而是用好奇心去拆解那位读者提的问题,比如何谓艰辛?哪个人群感到艰辛?提问人属于哪个人群?一项一项分析清楚。

正因为项飙坚持用好奇心去挖掘背后的信息,所以他可以和问题保持距离。在此之后,他才发现了其中隐藏着的反直觉信息——现代人不是经济上的贫穷,而是意义上的贫困,不知道自己做事情是为了什么,于是很容易被裹挟,以至于看不见自己


Lesson 5 – How to Build a Process

想法

  • 介绍使用流程来管理在 Roam Research 中的工作。举例讲解如何构建工作流。

为什么构建流程是重要的 #card

  • measureable 可测量

  • Cyclical & Improvable

X - Process Build - Building Process in Roam

  • What does it look like? description、tags、diagram 流程图 #card

image.png

  • WHY: Why do you need this process. What problem are you trying to solve or avoid? #card

    • EX: I need to make it clear how the two systems work together and product is created to avoid confusion, missed work and deadlines.
  • WHAT: What is the end result of this process? State your ideal here.

    • EX: A fast, efficient production cycle with no role confusion, no missed data as it is exchanged between systems, and opportunities for product, data transclusion. 快速高效的生产周期,角色分工明确,系统间数据交换无遗漏,并为产品和数据嵌入提供机会。 #card
      • Start Point 开始信号是什么 :-> When I have a product idea I want to work on
      • End Point 结束信号是什么 :-> When that idea has generated new idea
  • WHEN: When will this process be used?#card

    • Ex: This process will be used whenever product/project data is transferred between graphs.
  • Process Components

    • Actors: Who is involved in this process (individuals, groups, departments)? #card

      • EX: Swimlane 1 - Lisa-Marie

      • EX: Swimlane 2 - Stephanie

    • Data: What data is involved in this process? #card

      • EX: Project and Product data
    • Systems: What systems are involved in this process? #card

      • EX: Roam Research Graphs

      • Do they perform an action?

        • Yes

          • EX: Swimlane (NA)
        • No

          • EX: Overlays
  • Process Steps 写下流程,问自己已经完善了吗?如果没有完善继续补充。

    • 例子 #incremental #card

      • 1: LM finishes X - Gardening process and identifies a product potential

      • 2: LM creates a project to build process within personal graph

      • 3: LM creates a Product Creation project within Newco graph

      • 4: LM and SA use Newco Mgt processes to work on PC project to completion

      • 5: Is Product Complete?

        • Yes

          • 5.1: LM creates a Product record in personal graph

          • 5.2: SA creates a Product in Newco graph

          • 5.3: LM & SA launch Tribal Marketing Processes

          • 5.4: SA begins Pruning Process

          • 5.5 Does pruning process create product ideas?

            • Yes

              • 5.51: LM moves ideas into Gardening process
            • No: END

        • No

          • Continue process
    • 流程图 #card
      image.png

  • Measurement: What measurement(s) will you use to determine if this process is successful? #card

    • EXAMPLE

      • Products completed

      • Average time to completion

  • Review: How often will you review the measurements and effectiveness of this process #card

    • EX: Monthly Process Review
  • Revisions: What revisions have you made to this process #card

    • EX: Changed Tribal Marketing activity to Tribal Marketing Process | tag with date

Process Library #card

  • A process library is simply a folder that all of your individual processes together under groupings. Roam makes it easier as you can just nest under bullets and keep all in one place. I like to keep my Smart Blcoks on my process pages as they are relevant to each process.

@Magical Academic Note Taking

链接:Magical Academic Note Taking - YouTubeLMC’s Magical Academic Notes - Roam Graph - Google 云端硬盘

想法

  • 学到的概念

    • [[read with a pen in hand]]

    • [[X - Processes]]

Introduction

  • [[Lesson 1 – Introduction]] (23:31)

  • [[Lesson 2 - The Academic Writing Process Problem & Solution]] (42:55)

Academic Scaffolding

  • [[Lesson 3A - Academic Scaffolding - Roam Set-Up]] (25:24)

  • [[Lesson 3B - Management Process]] (50:12)

  • [[Lesson 3C - Academic Scaffolding - Outlining Framework]] (17:59)

  • [[Lesson 4 – Introduction to Smart Notes]] (22:45)

The Collect Session

The Curate Session

The Synthesize Session

The Create Session

  • [[10 - Writing in Roam Research]] (34:39)

  • [[11 - Editing in Roam Research]] (24:23)

Wrapping Up

  • [[12 - Roam Output]] 导出文档,没有什么太多用。。。

vimtutor

跟着 [[@如何提高编程速度:Emacs高手教授轻松精通所有编辑器和IDE的秘诀]] 学习 vim 官方教程的记录。


vs code menus

跟着 [[@如何提高编程速度:Emacs高手教授轻松精通所有编辑器和IDE的秘诀]] 过 VS Code 菜单的笔记,有些功能不看真不知道。


VS Code Menus

跟着 [[@如何提高编程速度:Emacs高手教授轻松精通所有编辑器和IDE的秘诀]] 过 VS Code 菜单的笔记,有些功能不看真不知道。


vimtutor

跟着 [[@如何提高编程速度:Emacs高手教授轻松精通所有编辑器和IDE的秘诀]] 学习 vim 官方教程的记录。


logseq

从 2019 年开始使用 [[Roam]],2022 年底迁移到 Logseq,自己可以算得上一名资深双链笔记软件爱好者。得益于这几年日常高强度使用,已经积累超过 7k+ 笔记。本文记录我的 Logseq 最佳实践。


融合公式

推荐系统会产生多个不同目标的预估分,需要将多个分数融合得到最终唯一的排序依据。


Logseq

从 2019 年开始使用 [[Roam]],2022 年底迁移到 Logseq,自己可以算得上一名资深双链笔记软件爱好者。得益于这几年日常高强度使用,已经积累超过 7k+ 笔记。本文记录我的 Logseq 最佳实践。


融合公式

推荐系统会产生多个不同目标的预估分,需要将多个分数融合得到最终唯一的排序依据。


pointer network

求解凸包、TSP 等问题有一个特点:输出是输入的子集。由于输入序列就是词表(不定长),无法使用传统的 seq2seq 模型去建模。


Pointer Network

求解凸包、TSP 等问题有一个特点:输出是输入的子集。由于输入序列就是词表(不定长),无法使用传统的 seq2seq 模型去建模。


rerank

推荐系统中的一环,考虑上下文信息对推荐结果的影响。


ReRank

推荐系统中的一环,考虑上下文信息对推荐结果的影响。


f-string

Python 3.6 新引入的一种字符串格式化方式,形式 f'xxx'

替换变量格式化 {value:.2f}


git pull 报错 MERGE_HEAD exists

git pull 时,出现如下报错信息:

1
2
3
error: You have not concluded your merge (MERGE_HEAD exists).  
hint: Please, commit your changes before merging.
fatal: Exiting because of unfinished merge.

Github Publisher

原来一直用 Logseq 写笔记,等了好久也没有等到一个可以把笔记导出成 md 文章的插件。昨天晚上看其他人博客的时,发现 Obsidian 插件 Gihub Publisher,可以通过内建的命令把笔记上传到指定的 github 仓库,从而实现使用 Obsidian 管理 blog 文章。


@A Consumer Compensation System in Ride-hailing Service

[[Attachments]]

代驾和货运的补贴系统

  • 价格弹性建模 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

  • 个保法下公平原则(不同用户相同 odt 补贴相同) 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

  • 常规训练 uplift 模型需要大量随机补贴下的响应数据(成本高),本文方法使用大量线上观测数据(有偏,受线上策略影响)和少量随机补贴数据训练模型。

  • DNN + GBDT:解决 tabular input space and transfer learning
    ls-type:: annotation
    hl-page:: 2
    hl-color:: yellow

    • 超过 90% 特征是 dense numerical feature ,需要用 GBDT建模,但是 GBDT 不好 fine-tuning 新数据以及处理稀疏特征。

    • 训练 s-learner model

      • [:span]
        ls-type:: annotation
        hl-page:: 3
        hl-color:: yellow

      • 两个 XGB 模型分别用观测数据 observational data 和随机数据 RCT data 训练,目标是二分类(用户是否下单)。

      • 数据过两个 XGB 模型得到叶子信息,再过 embedding 层,concat 两个 embedding 过 inner 层。

        • 先用 observational data 训练整个网络 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 用另外一个输出层训练 RCT data is used to fine-tune using a different output layer
          ls-type:: annotation
          hl-page:: 3
          hl-color:: red

        • fine-tuning 时使用 early stopping

Optimization Formulation
ls-type:: annotation
hl-page:: 3
hl-color:: yellow

  • 订单聚类成 OD 网格

    • 网格内历史订单平均弹性作为网格弹性 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

离线实验

  • Uplift 模型

    • 特征

      • 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
    • 模型细节

      • ob data xgb,35 棵树,1120 个叶子节点

      • rct xgb,51 棵树,1314 叶子节点

      • embedding size 8

      • 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

    • 结果分析

      • T-XGB+DNN AUUC 效果比 S-XGB+DNN 效果好,说明需要两棵树去提取特征?

        • S-XGB+DNN:a single GBDT distiller DNN

        • T-XGB+DNN:two-distiller GBDT distiller DNN

      • [:span]
        ls-type:: annotation
        hl-page:: 4
        hl-color:: yellow

  • 优化结果评估

    • 假设 uplift 模型结果是真值,评估不同分配策略的影响。

    • No Cluster Oracle
      ls-type:: annotation
      hl-page:: 4
      hl-color:: yellow
      不对订单聚类,考虑用户特征。

    • Open Loop 用前 14 天数据预测后 7 天

    • 新系统补贴率低但是更高利润 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

image.png

一些问题?

  • 为什么不是常规构建 uplift 模型的方法(实验组 + 空白对照组)?

  • T-XGB 和 S-XGB 具体怎么训练?

  • 为什么 rct 树的数量比 ob 树多?从样本角度 ob 树样本更多

  • uplift 没有给纯 xgb 的


从 umami cloud 迁移到自建 umami

Umami 是自己从今年年初开始使用网站统计工具,和 Google Analytics 相比,Umami 更加轻量和美观。根据 P.J. Wu 吳秉儒博客文章 中介绍,一直通过 Umami Cloud 免费试用。

5 月 5 日突然收到官方邮件,Umami Cloud 结束 Beta 测试以及公布 Pricing,基础 Hobby Plan(Free) 支持 3 个网站/保存 6 个月内统计数据/10k以内请求量,下一档 Basic 直接是 9 刀一个月。由于免费计划保留数据时间太短,收费计划价格太贵,开始考虑从 Umami Cloud 迁移。


从 Umami Cloud 迁移到自建 Umami

Umami 是自己从今年年初开始使用网站统计工具,和 Google Analytics 相比,Umami 更加轻量和美观。根据 P.J. Wu 吳秉儒博客文章 中介绍,一直通过 Umami Cloud 免费试用。

5 月 5 日突然收到官方邮件,Umami Cloud 结束 Beta 测试以及公布 Pricing,基础 Hobby Plan(Free) 支持 3 个网站/保存 6 个月内统计数据/10k以内请求量,下一档 Basic 直接是 9 刀一个月。由于免费计划保留数据时间太短,收费计划价格太贵,开始考虑从 Umami Cloud 迁移。


@How to write good prompts: using spaced repetition to create understanding

This guide aims to help you create understanding  in the context of an informational resource like an article or talk.

  • By that I mean writing prompts not only to durably internalize the overt knowledge presented by the author , but also to produce and reinforce understandings of your own , understandings which you can carry into your life and creative work.
    The most common mechanism of change for spaced repetition learning tasks is called retrieval practice .

  • In brief: when you attempt to recall some knowledge from memory , the act of retrieval tends to reinforce those memories.

  • The learning produced by retrieval is called the [[testing effect]] because it occurs when you explicitly test yourself, reaching within to recall some knowledge from the tangle of your mind.

  • retrieval practice is about testing your knowledge to produce learning , rather than to assess learning 评估 .

    • [[e.g.]] What distinguishes retrieval practice from typical school tests? #card
      • Its purpose is to produce learning, not assess it.
  • [[e.g.]] In general, writing an SRS prompt amounts to giving your future self a recurring task .
    Properties of effective retrieval practice prompts

  • (This guide’s) properties of effective prompts: focused, precise, consistent, tractable, effortful

    • Precision: Vague questions will elicit vague answers.
    • Focus: Prompts with too much detail tend to stimulate incomplete retrievals.
  • When prompts produce inconsistent answers, what happens to the memories which aren’t retrieved? #card

    • They’re inhibited.
  • How often do spaced repetition systems expect you to be able to answer a given prompt in review sessions? #card

    • Almost always.
  • How does question scope impact spaced repetition scheduler efficiency? #card

    • Tightly-scoped prompts allow easy and difficult elements to be scheduled at different rates.
  • Why is it important that you can’t infer a prompt’s answer from the question? #card

    • Retrieval practice depends on recalling the answer from memory.
  • 文章目的 So we must learn two skills to write effective retrieval practice prompts:

    • how to characterize exactly what knowledge we’ll reinforce, 准确描述要学习的知识

    • and how to ask questions which reinforce that knowledge. 增强知识

  • 用挖空来练习回顾列表

    • If a focused prompt feels intractable, what text might you add to the question (parenthetical)? :-> A cue.

    • What must a prompt’s cue not do? #card

      • Allow you to infer the answer without recalling it.
    • 可以给每一个空一些提示

  • [[elaborative encoding]]: information easier to recall if you can connect it to other memories
    Interpretation; the “more than you think” rule of thumb

  • Writing good prompts often involves interpretation : extracting information which isn’t explicitly written.

  • Prompt-writing rule of thumb: how many prompts should you write? #card

    • More than feels natural. 比自然感觉更多
  • What cognitive factor does the appropriate scale of a ‘focused’ prompt depend on? #card

    • The scale of the concepts you’ve internalized (aka ‘chunk size’)

Procedural   knowledge 程序化知识

  • Simple procedures can be mechanically translated into a single set of prompts by treating the steps like a list .

  • To emphasize discrete details of procedures in prompts, what should you identify? 强调提示中程序的具体细节 #card

    • Keywords (important verbs, conditions, adjectives, adverbs, subjects, objects)
  • Procedures can often be broken down into keywords like this.

    • What are the important verbs,

    • and when should you move between them?

    • What are the key adjectives, adverbs, subjects, objects?

What stock is and why it matters: conceptual knowledge

  • (This guide’s) five lenses for writing conceptual prompts: #card

    • attributes and tendencies, similarities and differences, parts and wholes, causes and effects, significance and implications.
  • To write prompts about a concept’s attributes and tendencies, what should you identify about its instances? #card

    • What’s always / sometimes / never true.
  • To write conceptual prompts using the ‘parts and wholes’ lens, what kind of diagram is helpful to visualize? #card

    • A Venn diagram.
  • Write a prompt about types of shapes using the “similarities and differences” lens. (try to create a new one; change the concept if needed) #card

    • Q. How is a parallelogram like a square? / A. All four sides parallel
  • To write prompts about a concept’s significance and implications , ask: why does that concept matter?

    • Significance and implications: write prompts which make the concept personally meaningful.
      Open lists
  • [[generation effect]] you remember information better when you generated it yourself.

  • What’s the difference between an open list and a closed list? #card

    • Closed lists have a specific set of members;

    • open lists can grow over time.

  • Digital bookmarking metaphor for open lists :-> tags

  • What’s the common problem with writing only a ‘give an example’-type prompt for an open list? #card

    • You’ll usually end up remembering only one or two examples.
  • What distinguishes the task of a ‘creative prompt’ from that of a retrieval prompt? #card

    • You’re asked to give a new answer each time, not answer from memory.
  • Creative prompts are only possible when you’re able to generate many different responses.

  • What knowledge does a creative prompt reinforce through retrieval practice? #card

    • Whatever you consistently use when generating new answers.

Salience prompts and the [[Baader-Meinhof phenomenon]] 显著性提示

  • new ideas are particularly salient, so we notice them more readily.

  • Selective attention: we’re more likely to notice occurrences of something when it’s highly salient 显著的,突出的 .

  • Without intervention, how does salience tend to change over time? 如果不进行干预,显著性会如何随时间变化 :-> Fades

  • To integrate new ideas into your life, it’s helpful to keep them salient until when? #card

    • You can use them or connect them to something meaningful in your experience.
  • [[Baader-Meinhof phenomenon]]: when you hear something for the first time then suddenly notice it everywhere

  • How might spaced repetition prompts relate to the Baader-Meinhof phenomenon? 间隔重复提示如何与巴德尔-迈因霍夫现象相关? #card

    • Prompts can extend that phenomenon by keeping ideas salient over time.

    • 提示可以通过在一段时间内保持想法的显著性来延续这一现象。

  • When possible, phrase salience prompts around contexts where those ideas might be meaningful in your life.
    Writing prompts, in practice

  • What simplifying goal can you adopt to make prompt-writing feel less onerous while reading? #card

    • Aim to write a small number of prompts on each pass through the text.
  • When writing prompts about ideas in a challenging text, which details does Andy suggest you initially focus on? #card

    • Basic details you can build on.
  • If you notice a feeling of completionism when writing prompts about a text, remind yourself that you can always write more prompts later.

  • Why might you be able to write better prompts from a text when you return to it later? (a trigger) #card

    • Something meaningful might have motivated your return (a new connection, a problem, a gap)
  • Prompt-writing litmus tests: what’s a ‘false positive’? #card

    • You can produce the answer, but you don’t know the information you intend to know.
  • What false positive can arise when a prompt’s question includes unusual words or cues? #card

    • Pattern matching (knowing the answer by the shape of the question, without thinking about the words)
  • What should you do with binary prompts? (which ask yes/no or this/that) #card

    • Rephrase them as more open-ended prompts.
  • What prompt-writing problem is the most common cause of false negatives? #card

    • Not including enough context.
  • Retrieval practice prompts must unambiguously exclude alternative correct answers.
    Revising   prompts over time

  • What does Andy believe the most important thing to “optimize” in spaced repetition practice is? #card

    • Your emotional connection to review sessions and their contents.

    • 您与复习课程及其内容的情感联系。


@DuETA: Traffic Congestion Propagation Pattern Modeling via Efficient Graph Learning for ETA Prediction at Baidu Maps

[[Attachments]]

核心贡献

  • 新颖性:通过 route-aware graph transformer 捕捉拥堵敏感图中长距离相关性,建模拥堵传播模式

    • The design of DuETA is driven by the novel ideas that directly capture the long-distance correlations through a congestion-sensitive graph, and that model traffic congestion propagation patterns via a route-aware graph transformer.
      ls-type:: annotation
      hl-page:: 2
      hl-color:: yellow

    • 捕捉任意两个( 距离很远,但是在路况状态上很相关的)segment 之间的交互

      • These designs enable DuETA to capture the interactions between any two road segment pairs that are spatially distant but highly correlated with traffic conditions.
        ls-type:: annotation
        hl-page:: 2
        hl-color:: yellow
  • 通过学习交通拥堵传播模式可以有效提高 ETA 预测效果

    • traffic congestion propagation patterns
      ls-type:: annotation
      hl-page:: 2
      hl-color:: yellow

核心问题

  • 业务需求

    • 预测的未来路况状态和真实状态不一致会导致 ETA 误差传播 we observed that a propagation of ETA errors arises from the sharp inconsistency between the predicted traffic condition in the future and ground truth.
      ls-type:: annotation
      hl-page:: 2
      hl-color:: green

    • 建模 traffic congestion propagation patter

      • Traffic congestion propagation pattern modeling is challenging, and it requires accounting for impact regions over time and cumulative effect of delay variations over time caused by traffic events on the road network.
        ls-type:: annotation
        hl-page:: 1
        hl-color:: red

      • 当前交通拥堵路段会影响路网上相邻道路的通行能力 As illustrated in it, the impact regions and cumulative delays over time caused by traffic congestion (the road segments in red) would inevitably affect all the interdependent segments on the road network.
        ls-type:: annotation
        hl-page:: 2
        hl-color:: green

        • 用户请求 ETA 时,只有 3-hop 拥堵,但是由于拥堵传播,等用户到达 target 时,2-hop 拥堵,部分y1-hop 缓行

        • 之前使用 [[STGNN]] 类方法建模直接相邻的路段 existing studies have applied spatial-temporal graph neural networks (STGNNs)[7 , 8 , 21 , 34, 35 , 38 ] to model traffic conditions
          ls-type:: annotation
          hl-page:: 2
          hl-color:: blue
          存在两个问题

          • 没有直接建模路网上不相邻 segment 的远距离相关性,网络传播过程中会有信息损失 The long-distance correlations of indirectly connected road segments are not explicitly modeled, which inevitably suffer from information loss during the multi-step message passing.
            ls-type:: annotation
            hl-page:: 2
            hl-color:: blue

          • 由于 STGCNN 方法计算的复杂度,大部分时候补数很少。两个距离较远的 segment 的路况状态特征不能很好传递。 Traffic conditions are not sufficiently transmitted between two road segments that are spatially distant, because they typically execute only a few steps of message passing (one step in most cases), due to the computational complexity of STGNNs.
            ls-type:: annotation
            hl-page:: 2
            hl-color:: blue

        • [:span]
          ls-type:: annotation
          hl-page:: 2
          hl-color:: green

  • 面临挑战

    • ETA 任务需要建模 contextual and predictive factors, such as spatial-temporal interaction, driving behavior, and traffic congestion propagation inference
      ls-type:: annotation
      hl-page:: 1
      hl-color:: green

    • 路网中新 segment 和 未知区域 we plan to investigate the transferability of our model to deal with unseen road segments or regions.
      ls-type:: annotation
      hl-page:: 9
      hl-color:: yellow

    • 路线旁边 poi 的影响 Second, given the observation that the travel times of some routes have a considerable correlation with the POIs distributed along the roads.
      ls-type:: annotation
      hl-page:: 9
      hl-color:: yellow

      • 特定地点特定时间

      • poi 密集区域对 eta 预测影响 To address this issue, we plan to utilize the POI retrieval system [5, 11, 13] as an auxiliary tool to forecast which POIs would be densely populated and how extensively they would affect the ETA prediction.
        ls-type:: annotation
        hl-page:: 9
        hl-color:: yellow

      • TODO 待找 poi 相关

        • MetaLearned Spatial-Temporal POI Auto-Completion for the Search Engine at Baidu Maps.

        • Personalized Prefix Embedding for POI Auto-Completion in the Search Engine of Baidu Maps

        • HGAMN: Heterogeneous Graph Attention Matching Network for Multilingual POI Retrieval at Baidu Maps

相关工作

  • ETA 任务方法

    • segment-based methods

      • computationally efficient and scalable
        ls-type:: annotation
        hl-page:: 9
        hl-color:: blue

      • do not account for the information of the travel route
        ls-type:: annotation
        hl-page:: 9
        hl-color:: blue

    • end-to-end methods

      • 之间方法对 拥堵传播建模不够 most existing methods are inefficient for modeling the traffic congestion propagation patterns along the route.
        ls-type:: annotation
        hl-page:: 9
        hl-color:: blue
  • STGCNN [[Traffic Flow Forecasting]]

    • 提升 GNN 层数感受野增加太多 increasing the depth of a GNN often means exponential expansion of the neighbor scope
      ls-type:: annotation
      hl-page:: 9
      hl-color:: blue

    • 子图 properly extracted subgraph
      ls-type:: annotation
      hl-page:: 9
      hl-color:: blue

  • [[@ConSTGAT: Contextual Spatial-Temporal Graph Attention Network for Travel Time Estimation at Baidu Maps]] 建模时空关系

  • [[@SSML: Self-Supervised Meta-Learner for En Route Travel Time Estimation at Baidu Maps]] 建模驾驶员行为

解决方法

  • traffic conditions 是动态特征

    • 过去 1 小时路况特征,每 5 分钟一个分桶,共 12 个 he traffic conditions of the past one hour are collected as features, which are divided into 12 time slots (5 minutes per time slot)
      ls-type:: annotation
      hl-page:: 3
      hl-color:: yellow

    • median speed, max speed, min speed, mean speed, and record counts as features
      ls-type:: annotation
      hl-page:: 3
      hl-color:: yellow

  • Congestion-sensitive Graph GCS=(L,{Erf}r=15,Eh)\mathcal{G}^{C S}=\left(\mathcal{L},\left.\left\{\mathcal{E}_r^f\right\}\right|_{r=1} ^5, \mathcal{E}^h\right)

    • we construct a congestion-sensitive graph based on the correlations of traffic patterns.
      ls-type:: annotation
      hl-page:: 2
      hl-color:: yellow

    • 对于某一个 link 找一阶相邻 link 以及高阶相邻link(可能和当前 link 的路况状态有关系)

      • we take advantage of the first-order neighbor links, as well as the high-order neighbor links whose traffic patterns are highly correlated to that of link 𝑙
        ls-type:: annotation
        hl-page:: 3
        hl-color:: yellow
    • First-order Neighbors
      ls-type:: annotation
      hl-page:: 3
      hl-color:: yellow

      • [[ConSTGAT]] 不同相邻 link 对于当前 link 的影响

        • 当前 link 的路况状态可能受下游影响大于上游 the traffic congestion is more likely to propagate from downstream links to upstream links.
          ls-type:: annotation
          hl-page:: 3
          hl-color:: blue
      • 具体过程

        • 定义多种 link 之间关系,并在建图中考虑这些关系 define multiple types of link relations and incorporate these relations into the construction of the congestion-sensitive graph
          ls-type:: annotation
          hl-page:: 3
          hl-color:: yellow

        • 用 attention 分别处理各种关系捕捉影响 use attention mechanism separately for each relation to capture the impact of neighbor links,
          ls-type:: annotation
          hl-page:: 3
          hl-color:: yellow

        • 用 edge 描述两个 link 之间的关系,一共有 5 种类型

          • [:span]
            ls-type:: annotation
            hl-page:: 3
            hl-color:: yellow

          • An edge describes the relation between two links
            ls-type:: annotation
            hl-page:: 3
            hl-color:: yellow

          • 2 是上游 link

          • 3 是下游 link

          • 剩余三种 link 不在路线中,但是这些 link 的路况状态可能影响目标 link(车辆阻塞路口)

    • High-order Neighbors
      ls-type:: annotation
      hl-page:: 3
      hl-color:: yellow

      • 间接连接 link 也很重要 the long-distance associations between indirectly connected links are also crucial for ETA prediction
        ls-type:: annotation
        hl-page:: 3
        hl-color:: yellow

      • 如何从高阶邻居采样?

        • link 从 historical route 从取 2-hop 到 5-hop 的邻居 link

        • 计算 link 和邻居 link 的 Pearson correlation
          ls-type:: annotation
          hl-page:: 4
          hl-color:: yellow
          ci,jr=cov(T1,T2)ρT1ρT2c^r_{i,j} = \frac{\operatorname{cov}\left(T_1, T_2\right)}{\rho_{T_1} \rho_{T_2}}

          • 取 link 过去 2 小时,每 5 分钟的平均通过时间序列 T1=[t10,t11,,t123]T_1=\left[t_1^0, t_1^1, \cdots, t_1^{23}\right]T2=[t20,t21,,t223]T_2=\left[t_2^0, t_2^1, \cdots, t_2^{23}\right]
        • 累加同一个 link pair 在不同 route 上的相关系数得到 ci,jfinalc^{final}_{i,j}

        • 每个 link 取相关系数 top5 的邻居 link

      • 连接 link 和 high-order neighbor links high-order edge is defined as an edge that connects a link and one of its high-order neighbor links.
        ls-type:: annotation
        hl-page:: 4
        hl-color:: yellow

      • [:span]
        ls-type:: annotation
        hl-page:: 3
        hl-color:: yellow

  • [[Graph Transformer]] Masked Label Prediction: Unified Message Passing Model for Semi-Supervised Classification

    • 多头学习 edge 的权重 t adopts the multi-head attention mechanism [ 23] to learn edge weights.
      ls-type:: annotation
      hl-page:: 4
      hl-color:: yellow

      • 对于每个 edge 计算 attention score

        • qc,i=WcQxi+bcQ,kc,j=WcKxj+bcK,vc,j=WcVxj+bcV,αc,i,j=qc,i,kc,jkN(i)qc,i,kc,k,\begin{gathered}\mathbf{q}_{c, i}=\mathbf{W}_c^Q \mathbf{x}_i+\mathbf{b}_c^Q, \\ \mathbf{k}_{c, j}=\mathbf{W}_c^K \mathbf{x}_j+\mathbf{b}_c^K, \\ \mathbf{v}_{c, j}=\mathbf{W}_c^V \mathbf{x}_j+\mathbf{b}_c^V, \\ \alpha_{c, i, j}=\frac{\left\langle\mathbf{q}_{c, i}, \mathbf{k}_{c, j}\right\rangle}{\sum_{k \in \mathcal{N}(i)}\left\langle\mathbf{q}_{c, i}, \mathbf{k}_{c, k}\right\rangle},\end{gathered}
      • 计算 link i 的表示

        • hi=xi+1Cc=1CjN(i)αc,i,jvc,j\mathbf{h}_i=\mathbf{x}_i+\frac{1}{C} \sum_{c=1}^C \sum_{j \in \mathcal{N}(i)} \alpha_{c, i, j} \mathbf{v}_{c, j}
    • resnet 解决 [[GNN]] 的 oversmoothing 问题 t addresses the oversmoothing problem in vanilla GNNs by residual connections.
      ls-type:: annotation
      hl-page:: 4
      hl-color:: yellow

  • route-aware graph transformer

    • [:span]
      ls-type:: annotation
      hl-page:: 4
      hl-color:: yellow

tags:: #[[Model Architecture]] #[[Graph Transformer]]

+ 重新构建的图$\mathcal{G}^{C S}=\left(\mathcal{L},\left.\left\{\mathcal{E}_r\right\}\right|_{r=1} ^6\right)$有六种类型的边,拆分成六张子图,每一张子图用一个 transformer

  + $\mathbf{h}_i=\mathbf{x}_i+\frac{1}{6 C} \sum_{r=1}^6 \sum_{c=1}^C \sum_{j \in \mathcal{N}_r(i)} \alpha_{c, i, j}^{(r)} \mathbf{v}_{c, j}^{(r)}$

+ 之前的特征 transformer 无法区分一个 link 是否在路线上,无法生成不同的表示

  + the graph transformer is unable to identify whether a link belongs to a given route or not

ls-type:: annotation
hl-page:: 5
hl-color:: yellow

  + 5a 中路线不同,但是 a 通过 transformer 学习到表示可能相同

  + [:span]

ls-type:: annotation
hl-page:: 5
hl-color:: yellow

+ route-aware structural encoding

  + position encoding

    + 与当前 link 的最近距离

    + encode the order information of a link.

ls-type:: annotation
hl-page:: 5
hl-color:: yellow

    + 控制控制依赖这条 link 路况的程度 be regarded as a gate to control the degree of dependency of the traffic condition when a user requests the ETA.

ls-type:: annotation
hl-page:: 5
hl-color:: yellow

  + route identifier

    + 表示当前 link 是否在路线上

+ Integration

ls-type:: annotation
hl-page:: 5
hl-color:: yellow

  + a 1-D convolution layer (Conv1D) with a window size of 3

ls-type:: annotation
hl-page:: 5
hl-color:: yellow

  + MLP+ReLU 预估每条 link 的 travel time,累加得到整个行程的 eta

    + $\left[\hat{y}_1, \hat{y}_2, \cdots, \hat{y}_m\right]=\operatorname{MLP}\left(\operatorname{Conv1D}\left(\left[\mathbf{h}_1, \mathbf{h}_2, \cdots, \mathbf{h}_m\right]\right)\right)$

  + [\[\[Multi-Task Learning\]\]](/post/logseq/Multi-Task%20Learning.html) 优化 link 级别和路线级别 eta Multi-task learning is adopted to optimize the model parameters from both the link-level and the route-level.

ls-type:: annotation
hl-page:: 5
hl-color:: yellow

    + link-level loss function [[Huber Loss]]

      + $L_{l i n k}\left(\hat{y}_i, y_i\right)= \begin{cases}\frac{1}{2}\left(\hat{y}_i-y_i\right)^2, & \left|\hat{y}_i-y_i\right|<\delta, \\ \delta\left(\left|\hat{y}_i-y_i\right|-\frac{1}{\delta}\right), & \text { otherwise }\end{cases}$

    + route-level loss function

      + $L_{\text {route }}(\hat{y}, y)=\frac{|\hat{y}-y|}{y}$

    + 最终 loss

      + $L=\frac{1}{n} \sum_i^n\left(\frac{1}{m^{(i)}} \sum_{j=1}^{m^{(i)}} L_{\text {link }}\left(\hat{y}_j^{(i)}, y_j^{(i)}\right)+L_{\text {route }}\left(\hat{y}^{(i)}, y^{(i)}\right)\right)$

实验结论

  • 实验数据

    • 行程 link 数和 didi 差不多

    • 2021.10.10-2021.11.20,5周训练,1周测试

  • 指标

    • mae rmse mape
  • Baseline

    • AVG 请求时刻路况速度

    • STANN

      • STGNN、attention+LSTM

      • 只考虑相邻 link

    • [[DCRNN]]

      • GCN 处理 spatial info

      • LSTM 处理 temporal info

    • DeepTravel

      • bidirectional LSTM
    • [[ConSTGAT]]

    • DuETA

      • the embedding size and the hidden size of DuETA to be 32
        ls-type:: annotation
        hl-page:: 6
        hl-color:: green

      • attention heads 𝐶 is set to be 8
        ls-type:: annotation
        hl-page:: 6
        hl-color:: green

      • Adam

      • 3e-5

  • 结果

    • DeepTravel 和 ConSTGAT

      • End-to-end methods are more effective than the segment-based methods
        ls-type:: annotation
        hl-page:: 6
        hl-color:: yellow

      • the correlations of spatial and temporal information are jointly modeled.
        ls-type:: annotation
        hl-page:: 6
        hl-color:: yellow

    • DuETA

      • 对远距离拥堵更加敏感 sensitive to long-distance traffic congestion,
        ls-type:: annotation
        hl-page:: 6
        hl-color:: yellow

      • 处理交通事件带来的影响 On the other hand, the cumulative effect of delay variations over time caused by traffic events on the road network can be alleviated by the high efficiency of traffic congestion pattern modeling.
        ls-type:: annotation
        hl-page:: 6
        hl-color:: yellow

    • [:span]
      ls-type:: annotation
      hl-page:: 6
      hl-color:: yellow

  • Ablation Studies
    ls-type:: annotation
    hl-page:: 7
    hl-color:: yellow

    • 主要组件对比

      • removing both components hurts performance significantly in all three cities.
        ls-type:: annotation
        hl-page:: 7
        hl-color:: yellow

      • [:span]
        ls-type:: annotation
        hl-page:: 6
        hl-color:: yellow

  • route identifier 效果 To obtain an understanding of the effect of the route identifier, we visualize the distributions of the attention weights in Figure 7.
    ls-type:: annotation
    hl-page:: 7
    hl-color:: yellow

    • w/o 组 Off route 的 attention weight 比 Complete 组大,加上这个模块模型能更关注路线上的 link

      • enables DuETA to pay more attention to the links that are in the travel routes.
        ls-type:: annotation
        hl-page:: 7
        hl-color:: yellow
    • [:span]
      ls-type:: annotation
      hl-page:: 7
      hl-color:: yellow

  • congestion-sensitive graph
    ls-type:: annotation
    hl-page:: 7
    hl-color:: yellow

    • 存在部分远处 link 相关性比附近 link 强 he average Pearson correlation coefficients of our selected high-order neighbors is much higher than those of the second-order and third-order neighbors
      ls-type:: annotation
      hl-page:: 7
      hl-color:: yellow

    • [:span]
      ls-type:: annotation
      hl-page:: 7
      hl-color:: yellow

    • 远处拥堵 case 提升效果大 examine the relative improvements of high-order neighbors in cases of traffic congestion2 and normal traffic.
      ls-type:: annotation
      hl-page:: 7
      hl-color:: yellow

      • [:span]
        ls-type:: annotation
        hl-page:: 8
        hl-color:: yellow

  • Practical Applicability
    ls-type:: annotation
    hl-page:: 8
    hl-color:: yellow

    • P 发生拥堵,dueta 能预测未来路线上会堵

    • [:span]
      ls-type:: annotation
      hl-page:: 8
      hl-color:: yellow

  • Online Evaluation
    ls-type:: annotation
    hl-page:: 8
    hl-color:: yellow

    • 2022.4.12-2022.4.18

    • 全部、长短单、平峰和高峰

    • 在线 RMSE 高 averaged RMSE scores in the online evaluation of DuETA are higher than those in the offline evaluation
      ls-type:: annotation
      hl-page:: 8
      hl-color:: green

      • 数据噪音大
    • [:span]
      ls-type:: annotation
      hl-page:: 9
      hl-color:: yellow

读后总结

  • 只考虑下游关系,tcn 之类的考虑上游真的有用吗

@Interpreting Trajectories from Multiple Views: A Hierarchical Self-Attention Network for Estimating the Time of Arrival

[[Attachments]]

关键信息

相关工作

  • traffic flow prediction [[Traffic Flow Forecasting]]

    • GMAN: A graph multi-attention network for traffic prediction 基于图的多注意力机制来预测交通状况 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
        [[ConSTGAT]]

  • travel time estimation

  • trajectory recovery and inference

  • DeepTTE
    ls-type:: annotation
    hl-page:: 3
    hl-color:: yellow
    raw GPS sequences geo-convolutional network LSTM

  • [[WDR]] wide-deep-recurrent network

    • CoDriverETA 2020 滴滴
  • ConSTGAT 和 CompactETA 图建模

  • DeepGTT
    ls-type:: annotation
    hl-page:: 3
    hl-color:: yellow
    deep generative model for learning the distribution of travel time

  • [[HetETA]] learns the representation of spatio-temporal information using a multi-relational network;
    ls-type:: annotation
    hl-page:: 3
    hl-color:: blue

  • [[TTPNet]] 张量分解和图embedding从历史轨迹中学习速度和表示 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

核心贡献

  • 利用三个视图之间的层次关系对道路底层结构进行建模 HierETA exploits the hierarchical relationship among the three views to portray the underlying road structure
    ls-type:: annotation
    hl-page:: 2
    hl-color:: yellow

  • 分层自自注意力网络根据 segment, link, intersection 之间自然关系进行高效组织 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

    • 利用多视图序列明确捕捉轨迹的时空依赖关系 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
  • hierarchy-aware attention decoder
    ls-type:: annotation
    hl-page:: 2
    hl-color:: yellow
    利用从不同粒度的信息上学习到上下文特征预估最终 ETA

核心问题

  • 传统 ETA 方法采用分治策略,将一个轨迹拆分成多个小段,然后累加每个小段的预测结果得到整体 ETA 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 将轨迹拆分成多个小段,然后通过小段计算同行时间 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

      • 累积误差
  • 多视图下建模困难

    • 常规方法用 segment 建模,不考虑 link On the one hand
      ls-type:: annotation
      hl-page:: 2
      hl-color:: yellow

      • 不使用 link 建模,现有的研究很困难对同一个 link 中的多个段之间的一致性建模 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
    • segment 和 intersection 的属性是不一致的, 很难用同一个网络去建模,大部分选择忽视路口或简化建模 On the other hand
      ls-type:: annotation
      hl-page:: 2
      hl-color:: yellow

    • ETA 会受到路口等待影响

  • 什么是 trajectory

    • 三个角度 link、Intersection、Segment

      • segement

        • segment 是人工生成的,用来捕捉细粒度的局部交通情况,在表征道路网络结构方面并不完全 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
      • link

        • 提供静态道路属性,pavement type,道路宽度、道路等级 preserve static road characteristics, such as pavement type, road width and road functional level
          ls-type:: annotation
          hl-page:: 1
          hl-color:: green
      • intersection

        • 等待时间、交通灯数量、历史车流量 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
    • link 和 intersection 粗粒度表示轨迹属性,link 可以进一步拆分成多个小段,segment 可以细粒度对空间依赖性进行建模 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

      • 猜测基于作者的假设,两个Intersection 之间的整条路被称之为 Link
    • [:span]
      ls-type:: annotation
      hl-page:: 2
      hl-color:: green

HierETA Hierarchical Self-Attention Network for Estimating the Time of Arrival

  • [:span]
    ls-type:: annotation
    hl-page:: 4
    hl-color:: yellow

tags:: [[Model Architecture]] [[ETA]]

  • Attribute Feature Extractor
    ls-type:: annotation
    hl-page:: 3
    hl-color:: yellow

    • 连续特征 z-score

    • 类别特征 embedding

    • 全局特征共享

  • Hierarchical Self-Attention Network for Multi-View Trajectory Representation
    ls-type:: annotation
    hl-page:: 4
    hl-color:: yellow

    • segment encoder

      • 对同一个 link 内的时空依赖进行建模 capture the spatiotemporal dependencies of segments in the same link
        ls-type:: annotation
        hl-page:: 4
        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
      • 利用 BiLSTM 处理 [xjsxr][x^s_j|x_r],正向和反向结果 concat 成 segment 的表示 HjsH^s_j

      • 同一个 link 内 segement 记作 Hs=[H1s,,Hns]Rn×dsH^s=\left[H_1^s, \ldots, H_n^s\right] \in \mathbb{R}^{n \times d_s}

        • 计算出 j-th segment 和 link 内其他 segment 的全局相似度 GPj=QjKTdsG P_j=\frac{Q_j K^T}{\sqrt{d}_s}

        • a local semantic pattern
          ls-type:: annotation
          hl-page:: 4
          hl-color:: yellow
          局部相似度

          • LPj(k)={GPj(k),jkω, otherwise L P_j(k)= \begin{cases}G P_j(k), & |j-k| \leq \omega \\ -\infty, & \text { otherwise }\end{cases}

          • 取 j 相邻 ω\omega 个 segment 计算相似度

          • 捕获局部 segment 的依赖,加强局部的拥堵转移

      • 用门控机制平衡全局和局部attention结果 a gating mechanism
        ls-type:: annotation
        hl-page:: 4
        hl-color:: yellow

        • Fjs=(1zj)Att(GPj)+zjAtt(LPj)F_j^s=\left(1-z_j\right) \odot \operatorname{Att}\left(G P_j\right)+z_j \odot \operatorname{Att}\left(L P_j\right)

          • 控制参数怎么学 zj=σ(WhHjs+WgAtt(GPj)+WlAtt(LPj)+bz)z_j=\sigma\left(W_h H_j^s+W_g A t t\left(G P_j\right)+W_l A t t\left(L P_j\right)+b_z\right)
        • ResNet + LN

      • 所有 link 的 encoder 参数共享以及并行计算

        • n adaptive self-attention module is designed to boost performance
          ls-type:: annotation
          hl-page:: 1
          hl-color:: yellow
    • Joint Link-Intersection Encoder.
      ls-type:: annotation
      hl-page:: 4
      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

      • 为什么要设计这个模块?

        • segment-view 无法对同一个 link 内 segment 共享的一致性进行建模

          • t fails to model the consistency shared within the same link
            ls-type:: annotation
            hl-page:: 4
            hl-color:: red
        • 粗粒度表示 coarse-scale representation
          ls-type:: annotation
          hl-page:: 4
          hl-color:: red

        • link 和 intersections 交替出现 as links and intersections appear alternatively
          ls-type:: annotation
          hl-page:: 4
          hl-color:: yellow

      • link 表示:xil=j=1nγijhijsx_i^l=\sum_{j=1}^n \gamma_{i j} h_{i j}^s

        • link 内的 segment 表示是 {hijs}j=1n\left\{h_{i j}^s\right\}_{j=1}^n

        • 加权融合 segment 得到 link 表示,权重计算方法 [[Attention]] γij=softmaxj(Wγhijs+bγ)\gamma_{i j}=\operatorname{softmax}_j\left(W_\gamma h_{i j}^s+b_\gamma\right)

      • 得到 link 和 intersections 的表示后,分别用编码 employ two BiLSTMs to respectively encode the links and intersections
        ls-type:: annotation
        hl-page:: 5
        hl-color:: yellow
        得到 Hil{H^l_i}Hic{H^c_i},concat 在一起得到 H^il=[HilHic]\hat{H}_i^l=\left[H_i^l \mid H_i^c\right]

      • 上一步得到向量经过 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
        得到 {hil}i=1m\left\{h_i^l\right\}_{i=1}^m

      • 去除这个 encoder 中的 local pattern
        ls-type:: annotation
        hl-page:: 5
        hl-color:: red
        ,因为相邻 link 之间的交通影响更加弱和稀疏,避免过拟合

      • 总结

        • segement-view 捕捉局部交通信息 segment-view context feature that captures the local traffic conditions
          ls-type:: annotation
          hl-page:: 5
          hl-color:: yellow

        • link-intersection context 表达道路属性 joint link-intersection context feature that preserves the common road attributes
          ls-type:: annotation
          hl-page:: 5
          hl-color:: yellow

  • Hierarchy-Aware Attention Decoder
    ls-type:: annotation
    hl-page:: 5
    hl-color:: yellow
    层次感知注意力解码器

    • realize a tradeoff between the multi-view spatio-temporal features
      ls-type:: annotation
      hl-page:: 1
      hl-color:: yellow

    • sub-route 对于最后的 eta 贡献是不一样的(拥堵路口和道路应该给予更多关注)

      • travel time estimation is closely related to the critical components
        ls-type:: annotation
        hl-page:: 5
        hl-color:: green
    • ETA R=(1λ)i=1mj=1nαijhijs+λi=1mβihil\mathcal{R}=(1-\lambda) \sum_{i=1}^m \sum_{j=1}^n \alpha_{i j} h_{i j}^s+\lambda \sum_{i=1}^m \beta_i h_i^l

      • segment 的表示以及 link-intersection 的表示

      • alpha 和 beta 都是注意力权重

      • 设计注意力引导机制,利用 link-view 之间的关系调整 segment-view 之间的 attention attention guidance that adopts the link-view consistency to further adjust the segment-view attention
        ls-type:: annotation
        hl-page:: 5
        hl-color:: red

        • 先计算 link 的注意力 βi=softmaxi(fl(hil,xr))\beta_i=\underset{i}{\operatorname{softmax}}\left(f^l\left(h_i^l, x^r\right)\right)

          • fl(hil,xr)=vTtanh(w1hil+w2xr+b)f^l\left(h_i^l, x^r\right)=v^T \tanh \left(w_1 h_i^l+w_2 x^r+b\right)

          • xr 是外部影响因素

        • 根据 link 注意力计算 segment 之间注意力 αij=softmax(i,j)(βifs(hijs,xr))\alpha_{i j}=\underset{(i, j)}{\operatorname{softmax}}\left(\beta_i f^s\left(h_{i j}^s, x^r\right)\right)

          • 考虑 segment 之间的重要性,如果不考虑 link 之间的重要性, 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
      • 改方法可以自适应选择不同表示粒度中最相关的特征 we can adaptively select the most relevant features from different representation granularities.
        ls-type:: annotation
        hl-page:: 5
        hl-color:: yellow

        • 可以实现是几个 link 权重大,还是几个 segment 权重大
    • L(Θ)=1Nk=1NYkY^k\mathcal{L}(\Theta)=\frac{1}{N} \sum_{k=1}^N\left|Y_k-\hat{Y}_k\right|

EXPERIMENTS
ls-type:: annotation
hl-page:: 5
hl-color:: green

  • 20 天训练,1 天评估,预测 7 天

  • 数据分布 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
    训练 5 次取平均

  • 指标 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]] 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

    • HierETA 更具有可解释性,对潜在道路网络结构进行建模

    • 误差分析:所有距离分桶中指标都提升了,长单提升更加明显。

      • 层次化建模效果好 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

      • [:span]
        ls-type:: annotation
        hl-page:: 7
        hl-color:: green

  • 模型分析

    • window sizes
      ls-type:: annotation
      hl-page:: 8
      hl-color:: green

      • 局部窗口效果好

      • segment 之间距离越远,之间的关联性越弱 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:: yellow

    • segment 和 link 的权重

      • 只考虑其中一个指标差
    • [[Ablation Study]]

      • 有无 local 或 global 特征

        • 建模细粒度交通信息 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

      • 有无 guide

        • 无引导信息
      • 有无 路况信息

      • 有无 层次化结构 removing the joint link-intersection encoder
        ls-type:: annotation
        hl-page:: 8
        hl-color:: green
        ,没有这个效果显著下降

      • 从 1s 就是变化很大来说,这些网络结构都挺重要的

        • 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
      • [:span]
        ls-type:: annotation
        hl-page:: 8
        hl-color:: green


@Learning to Discover Causes of Traffic Congestion with Limited Labeled Data

[[Abstract]] 拥堵成因解释

  • traffic congestion

  • Traffic congestion incurs long delay in travel time, which seriously affects our daily travel experiences. Exploring why traffic congestion occurs is significantly important to effectively address the problem of traffic congestion and improve user experience.

  • Traditional approaches to mine the congestion causes depend on human efforts, which is time consuming and cost-intensive.

  • Hence, we aim to discover the known and unknown causes of traffic congestion in a systematic way. However, to achieve it, there are three challenges:

      1. traffic congestion is affected by several factors with complex spatio-temporal relations;
      1. the amount of congestion data with known causes is small due to the limitation of human label;
      • 有拥堵原因的数据很少
      1. more unknown congestion causes are unexplored since several factors contribute to traffic congestion.
  • To address above challenges, we design a ^^congestion cause discovery system^^ consisting of two modules:

      1. congestion feature extraction, which extracts the important features influencing congestion;
      • 拥堵特征提取
      1. congestion cause discovery, which utilize a deep semi-supervised learning based method to discover the causes of traffic congestion with limited labeled causes.
      • 拥堵成因发现
  • Specifically, it first leverages a few labeled data as prior knowledge to pre-train the model. Then, the deep embedded clustering method is performed to produce the clusters under the supervision of the data reconstruction loss and Kullback-Leibler divergence loss.

  • Extensive experiments show that the performance of our proposed method is superior to the baselines. Additionally, our system is deployed and used in the practical production environment at Amap.

[[Attachments]]


@DeeprETA: An ETA Post-processing System at Scale

[[Abstract]]

  • Estimated Time of Arrival (ETA) plays an important role in delivery and ride-hailing platforms. For example, Uber uses ETAs to calculate fares, estimate pickup times, match riders to drivers, plan deliveries, and more.

  • Commonly used route planning algorithms predict an ETA conditioned on the best available route, but such ETA estimates can be unreliable when the actual route taken is not known in advance.

    • route eta 无法解决偏航问题
  • In this paper, we describe an ETA post-processing system in which a deep residual ETA network (DeeprETA) refines naive ETAs produced by a route planning algorithm.

  • Offline experiments and online tests demonstrate that post-processing by DeeprETA significantly improves upon the accuracy of naive ETAs as measured by mean and median absolute error. We further show that post-processing by DeeprETA attains lower error than competitive baseline regression models.

[[Attachments]]


@Pyraformer: Low-Complexity Pyramidal Attention for Long-Range Time Series Modeling and Forecasting

[[Abstract]]

  • Accurate prediction of the future given the past based on time series data is of paramount importance, since it opens the door for decision making and risk management ahead of time. In practice, the challenge is to build a flexible but parsimonious model that can capture a wide range of temporal dependencies.

  • In this paper, we propose Pyraformer by exploring the [[multiresolution representation]] of the time series.

    • Specifically, we introduce the [[pyramidal attention module]] (PAM) in which

      • the inter-scale tree structure summarizes features at different resolutions

      • and the intra-scale neighboring connections model the temporal dependencies of different ranges.

    • Under mild conditions, the maximum length of the signal traversing path in Pyraformer is a constant (i.e., O(1)\mathcal O(1)) with regard to the sequence length LL, while its time and space complexity scale linearly with LL.

  • Extensive numerical results show that Pyraformer typically achieves the highest prediction accuracy in both single-step and long-range forecasting tasks with the least amount of time and memory consumption, especially when the sequence is long.

[[Summary]]


@Transformers in Time Series: A Survey

[[Abstract]]

  • Transformers have achieved superior performances in many tasks in natural language processing and computer vision, which also triggered great interests in the time series community.

  • Among multiple advantages of transformers, the ability to capture long-range dependencies and interactions is especially attractive for time series modeling, leading to exciting progress in various time series applications.

    • In this paper, we systematically review transformer schemes for time series modeling by highlighting their strengths as well as limitations. In particular, we examine the development of time series transformers in two perspectives.

      • From the perspective of network structure, we summarize the adaptations and modification that have been made to transformer in order to accommodate the challenges in time series analysis.

      • From the perspective of applications, we categorize time series transformers based on common tasks including forecasting, anomaly detection, and classification.

    • Empirically, we perform robust analysis, model size analysis, and seasonal-trend decomposition analysis to study how transformers perform in time series.

    • Finally, we discuss and suggest future directions to provide useful research guidance.

  • A corresponding resource list which will be continuously updated can be found in the GitHub repository1.

[[Attachments]]

Input Encoding and Positional Encoding

  • Absolute Positional Encoding

  • Relative Positional Encoding

  • Hybrid positional encodings

Network Modifications for Time Series

  + [[LogTrans]] [ Li et al., 2019 ] and [\[\[Pyraformer\]\]](/post/logseq/%40Pyraformer%3A%20Low-Complexity%20Pyramidal%20Attention%20for%20Long-Range%20Time%20Series%20Modeling%20and%20Forecasting.html) explicitly introducing a sparsity bias

  + 移除 self-attention 矩阵部分值 [\[\[@Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting\]\]](/post/logseq/%40Informer%3A%20Beyond%20Efficient%20Transformer%20for%20Long%20Sequence%20Time-Series%20Forecasting.html) [[FEDformer]]
  • Architecture Level

    • renovate transformer

    • hierarchical architecture 分层结构

Applications of Time Series Transformers

  • Forecasting

    • Time Series Forecasting

      • [[LogTrans]]

        • proposed convolutional self-attention by employing causal convolutions to generate queries and keys in the self-attention layer 因果卷积引入子注意力计算

        • a Logsparse mask

      • [[@Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting]]

      • AST [[Adversarial sparse transformer for time series forecasting]]

        • 使用生成对抗编码器-解码器架训练用于时间序列预测的稀疏 Transformer 模型

        • 对抗训练可以直接塑造网络的输出来改善预测效果,避免逐步预测带来的累积误差

          • directly shaping the output distribution of network to avoid the error accumulation through one-step ahead inference
      • [[Autoformer]]

        • simple seasonaltrend decomposition architecture 简单季节性趋势分解架构

        • an auto-correlation mechanism working as an attention module 自相关机制注意力模块 O(LlogL)O(L\log L)

          • measures the time-delay similarity between inputs signal and aggregate the top-k similar sub-series to produce the output
      • [[FEDformer]]

        • 利用 [[Fourier transform]] 和 [[Wavelet transform]] 处理 frequency domain 频域中的注意力操作

          • linear complexity
      • [[@Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting]]

        • multi-horizon forecasting model with static covariate encoders, gating feature selection and temporal self-attention decoder
      • [[SSDNet]] [[ProTran]]

        • combine Transformer with state space models to provide probabilistic forecasts 提供概率预测
      • [[Pyraformer]]

        • hierarchical pyramidal attention module with binary tree following path

        • 分层金字塔注意力模块,二叉树

      • [[Aliformer]]

        • Knowledge-guided attention
    • Spatio-Temporal Forecasting [[Traffic Flow Forecasting]]

      • Traffic transformer: Capturing the continuity and periodicity of time series for traffic forecasting

        • self attention module to capture temporal-temporal dependencies 时序特征

        • Graph neural network module to capture spatial dependencies 空间特征

      • Spatialtemporal Transformer

        • 空间 transformer 辅助图卷积网络来捕获空间依赖关系
      • Spatio-temporal graph Transformer

        • 基于注意力的图卷积机制
    • Event Forecasting

      • temporal point processes (TPP)
  • Anomaly Detection

  • Classification

    • [[GTN]]

Experimental Evaluation and Discussion

模型鲁棒性、模型大小以及对时序季节性和趋势捕捉能力

  • robustness analysis, model size analysis, and

seasonal-trend decomposition analysis

  • seasonal-trend decomposition 是 transformer 解决时序预测的重要组成部分

  • 所有模型加上 moving average trend decomposition architecture proposed 结构后,和原始模型相比效果都获得提升

Future Research Opportunities

  • [[inductive bias]] for Time Series Transformers

    • 避免过拟合,训练 transformer 需要大量数据。

    • 时序数据具有 seasonal/periodic and trend patterns

    • 将对于时序数据模型的理解和特定任务的特征做为归纳偏置引入 transformer

  • [[GNN]]

    • 增强对于空间依赖和多维度之间的关系建模能力
  • [[预训练]]

    • 目前针对时间序列的预训练 transformer 集中在时序分类任务中
  • [[Neural architecture search]]

    • 如果构建高效的 transformer 结构

Ref


@Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting

[[Attachments]]

关键信息

核心贡献

  • Autoformer as a novel decomposition architecture with an Auto-Correlation mechanism
    ls-type:: annotation
    hl-page:: 1
    hl-color:: yellow
    [[Auto-Correlation Mechanism]] 自相关机制,代替点向连接的注意力机制,实现序列级连接和较低复杂度

    • 序列级别依赖发现以及表示聚合 conducts the dependencies discovery and representation aggregation at the sub-series level.
      ls-type:: annotation
      hl-page:: 1
      hl-color:: yellow
  • Decomposition Architecture 深度分解架构,从复杂时间模式种分解出可预测性更强的成分

    • 推理复杂时间模式 intricate temporal patterns
      ls-type:: annotation
      hl-page:: 2
      hl-color:: yellow

      • process the complex time series and extract more predictable components.
        ls-type:: annotation
        hl-page:: 2
        hl-color:: yellow

      • 常规对前向数据进行分解,忽视未来可能发生的分解组件之间的潜在交互作用

        • This common usage limits the capabilities of decomposition and overlooks the potential future interactions among decomposed components.
          ls-type:: annotation
          hl-page:: 2
          hl-color:: blue
      • 分解可以解开纠缠的时间模式并突出时间序列的固有属性 can ravel out the entangled temporal patterns and highlight the inherent properties of time series
        ls-type:: annotation
        hl-page:: 2
        hl-color:: blue

      • 对子序列进行分解,基于时间序列周期性导出的过程相似性构建一种系列级连接 sub-series at the same phase position among periods often present similar temporal processes
        ls-type:: annotation
        hl-page:: 2
        hl-color:: yellow

      • 逐步分解整个预测过程中的隐藏序列,包括过去的序列和预测的中间结果

        • decompose the hidden series throughout the whole forecasting process, including both the past series and the predicted intermediate results.
          ls-type:: annotation
          hl-page:: 3
          hl-color:: yellow

核心问题

  • 原始序列中各种趋势信息比较混乱,无法在长时间序列中发现时间依赖

    • unreliable to discover the temporal dependencies directly from the long-term time series because the dependencies can be obscured by entangled temporal patterns.
      ls-type:: annotation
      hl-page:: 1
      hl-color:: green

    • 需要处理复杂的时间模式,打破计算效率和信息利用的瓶颈 handling intricate temporal patterns and breaking the bottleneck of computation efficiency and information utilization.
      ls-type:: annotation
      hl-page:: 3
      hl-color:: blue

    • 待预测序列长度远远大于输入长度

  • Transformer 平方级别复杂度

    • 之前方法尝试使用稀疏 self-attention mproving self-attention to a sparse version
      ls-type:: annotation
      hl-page:: 1
      hl-color:: green

      • 稀疏注意力机制将造成信息的丢失,成为长时间序列预测的瓶颈
    • these models still utilize the point-wise representation aggregation
      ls-type:: annotation
      hl-page:: 1
      hl-color:: blue

  • Transformer point-wise 维度聚合

    • self-attention 来捕捉时刻间的依赖

      • 难以直接发现可靠的时间依赖

相关工作

  • 之前方法集中在 recurrent connections, temporal attention or causal convolution.
    ls-type:: annotation
    hl-page:: 2
    hl-color:: blue

    • [[DeepAR]] 自回归 + RNN 建模未来序列的概率分布

      • combines autoregressive methods and RNNs to model the probabilistic distribution of future series.
        ls-type:: annotation
        hl-page:: 2
        hl-color:: blue
    • [[LSTNet]] CNNs + ResNet 捕捉 short-term 和 long-term temporal patterns

    • [[TCN]]

  • Transformer 类方法

    • [[Reformer]] [[local-sensitive hashing attention]] #mark/paper

    • [[Informer]] KL + [[ProbSparse Attention]]

  • Decomposition of Time Series

    • 将原始时间序列分解成多个序列,新序列更容易预测

      • each representing one of the underlying categories of patterns that are more predictable.
        ls-type:: annotation
        hl-page:: 3
        hl-color:: blue
    • [[Prophet]] with trend-seasonality decomposition

    • [[N-BEATS]] with basis expansion

    • [[DeepGLO]] with matrix decomposition

    • 缺点

      • 简单分解限制

        • limited by the plain decomposition effect of historical series
          ls-type:: annotation
          hl-page:: 3
          hl-color:: yellow
      • 忽视层次交互

        • overlooks the hierarchical interaction between the underlying patterns of series in the long-term future.
          ls-type:: annotation
          hl-page:: 3
          hl-color:: yellow

        • 预测问题未来的不可知性,通常方法先对过去序列进行分解,再分别预测,这会造成预测结果受限于分解效果,并且忽视了未来各个组分之间的相互作用。

解决方法

  • Decomposition Architecture
    ls-type:: annotation
    hl-page:: 3
    hl-color:: yellow

    • [:span]
      ls-type:: annotation
      hl-page:: 4
      hl-color:: yellow

tags:: #[[Model Architecture]] [[Encoder-Decoder]]

+ series decomposition block

ls-type:: annotation
hl-page:: 3
hl-color:: yellow
保留周期部分

  + 序列分解成趋势项和周期项部分 separate the series into trend-cyclical and seasonal parts.

ls-type:: annotation
hl-page:: 3
hl-color:: yellow

  + 在预测过程中,模型交替进行预测结果优化和序列分解,从隐藏变量中逐步分离趋势项与周期项

  + 逐步从预测的中间隐藏变量中提取长期稳定的趋势 xtract the long-term stationary trend from predicted intermediate hidden variables progressively. 

ls-type:: annotation
hl-page:: 3
hl-color:: yellow

  + 使用 [[Moving Average]] 平滑周期性、突出趋势项 smooth out periodic fluctuations and highlight the long-term trends

ls-type:: annotation
hl-page:: 3
hl-color:: yellow

    + $\mathcal{X}_{\mathrm{s}}, \mathcal{X}_{\mathrm{t}}=\operatorname{SeriesDecomp}(\mathcal{X})$

      + $\begin{aligned} & \mathcal{X}_{\mathrm{t}}=\operatorname{Avg} \operatorname{Pool}(\operatorname{Padding}(\mathcal{X})) \\ & \mathcal{X}_{\mathrm{s}}=\mathcal{X}-\mathcal{X}_{\mathrm{t}}\end{aligned}$

      + xs seasonal

      + xt trend-cyclial part

+ [[Encoder]]

  + Encoder 输入过去 I 步 $\mathcal{X}_{\mathrm{en}} \in \mathbb{R}^{I \times d}$

  + 建模周期性部分,逐步消除趋势项(在 decoder 中通过累积得到) focuses on the seasonal part modeling

ls-type:: annotation
hl-page:: 4
hl-color:: yellow

    + 当成 decoder 的交叉信息 be used as the cross information to help the decoder refine prediction results

ls-type:: annotation
hl-page:: 4
hl-color:: yellow

  + 流程

    + _ the eliminated trend part

ls-type:: annotation
hl-page:: 4
hl-color:: red
消除趋势项

    + $\begin{aligned} & \mathcal{S}_{\text {en }}^{l, 1},_{-}=\operatorname{SeriesDecomp}\left(\text { Auto-Correlation }\left(\mathcal{X}_{\text {en }}^{l-1}\right)+\mathcal{X}_{\text {en }}^{l-1}\right) \\ & \mathcal{S}_{\text {en }}^{l, 2},_{-}=\operatorname{SeriesDecomp}\left(\text { FeedForward }\left(\mathcal{S}_{\text {en }}^{l, 1}\right)+\mathcal{S}_{\text {en }}^{l, 1}\right)\end{aligned}$

+ [[Decoder]]  分解对趋势项与周期项建模

  + 一半过去信息 + 填充

    + $\begin{aligned} \mathcal{X}_{\text {ens }}, \mathcal{X}_{\text {ent }} & =\operatorname{SeriesDecomp}\left(\mathcal{X}_{\text {en } \frac{I}{2}: I}\right) \\ \mathcal{X}_{\text {des }} & =\operatorname{Concat}\left(\mathcal{X}_{\text {ens }}, \mathcal{X}_0\right) \\ \mathcal{X}_{\text {det }} & =\operatorname{Concat}\left(\mathcal{X}_{\text {ent }}, \mathcal{X}_{\text {Mean }}\right),\end{aligned}$

    + seasonal part $\mathcal{X}_{\mathrm{des}} \in \mathbb{R}^{\left(\frac{1}{2}+O\right) \times d}$

    + trend-cyclical part $\mathcal{X}_{\mathrm{det}} \in \mathbb{R}^{\left(\frac{1}{2}+O\right) \times d}$

  + 趋势-周期累积结构 the accumulation structure for trend-cyclical components

ls-type:: annotation
hl-page:: 4
hl-color:: yellow

    + 从中间隐变量提取潜在趋势,使得模型可以逐步改进趋势预测并且消除干扰信息,以便于在自相关性中发现基于周期的依赖关系。

    + 其中,对于周期项,自相关机制利用序列的周期性质,聚合不同周期中具有相似过程的子序列;

    + Note that the model extracts the potential trend from the intermediate hidden variables during the decoder, allowing Autoformer to progressively refine the trend prediction and eliminate interference information for period-based dependencies discovery in Auto-Correlation. 

ls-type:: annotation
hl-page:: 4
hl-color:: red

  + the stacked Auto-Correlation mechanism for seasonal component

ls-type:: annotation
hl-page:: 4
hl-color:: yellow

  + 流程

    + $\begin{aligned} \mathcal{S}_{\mathrm{de}}^{l, 1}, \mathcal{T}_{\mathrm{de}}^{l, 1} & =\operatorname{SeriesDecomp}\left(\text { Auto-Correlation }\left(\mathcal{X}_{\mathrm{de}}^{l-1}\right)+\mathcal{X}_{\mathrm{de}}^{l-1}\right) \\ \mathcal{S}_{\mathrm{de}}^{l, 2}, \mathcal{T}_{\mathrm{de}}^{l, 2} & =\operatorname{SeriesDecomp}\left(\text { Auto-Correlation }\left(\mathcal{S}_{\mathrm{de}}^{l, 1}, \mathcal{X}_{\mathrm{en}}^N\right)+\mathcal{S}_{\mathrm{de}}^{l, 1}\right) \\ \mathcal{S}_{\mathrm{de}}^{l, 3}, \mathcal{T}_{\mathrm{de}}^{l, 3} & =\operatorname{SeriesDecomp}\left(\text { FeedForward }\left(\mathcal{S}_{\mathrm{de}}^{l, 2}\right)+\mathcal{S}_{\mathrm{de}}^{l, 2}\right) \end{aligned}$

    + 趋势项,通过累积的方式逐步从预测的隐变量中提取出趋势信息

      + ${\mathcal{T}_{\mathrm{de}}^l =\mathcal{T}_{\mathrm{de}}^{l-1}+\mathcal{W}_{l, 1} * \mathcal{T}_{\mathrm{de}}^{l, 1}+\mathcal{W}_{l, 2} * \mathcal{T}_{\mathrm{de}}^{l, 2}+\mathcal{W}_{l, 3} * \mathcal{T}_{\mathrm{de}}^{l, 3}}$
  • [[Auto-Correlation Mechanism]]

    • [:span]
      ls-type:: annotation
      hl-page:: 5
      hl-color:: yellow

    • 高效的序列级连接,从而扩展信息效用

    • Period-based dependencies 基于周期的依赖发现

      • 不同周期相同相位之间通常表现出相似的子过程 same phase position among periods naturally provides similar sub-processes.
        ls-type:: annotation
        hl-page:: 5
        hl-color:: yellow

      • [[Stochastic process theory]] discrete-time process 的 [[autocorrelation]]

        • RXX(τ)=limL1Lt=1LXtXtτ\mathcal{R}_{\mathcal{X} \mathcal{X}}(\tau)=\lim _{L \rightarrow \infty} \frac{1}{L} \sum_{t=1}^L \mathcal{X}_t \mathcal{X}_{t-\tau}

        • RXX(τ)\mathcal{R}_{\mathcal{X} \mathcal{X}}(\tau) 代表序列 {Xt}\{ \mathcal{X}_t \}τ\tau 延迟 {Xtτ}\{ \mathcal{X}_{t - \tau} \} 之间的相似性

        • 将这种时延相似性看作未归一化的周期预估的置信度,即周期长度为 \tau 的置信度为 R(τ)\mathcal{R}(\tau)

          • 假设周期为 \tau, Xτ:L1\mathcal{X}_{\tau: L-1}X0:Lτ1\mathcal{X}_{0: L-\tau-1} 会极为相似
      • 取最相关 k 个长度 choose the most possible k period lengths
        ls-type:: annotation
        hl-page:: 5
        hl-color:: yellow

    • Time delay aggregation 时延信息聚合

      • 该部分聚合组序列 oll the series based on selected time delay
        ls-type:: annotation
        hl-page:: 5
        hl-color:: yellow

      • 相似的子序列信息进行聚合

      • 流程

        • 计算 top k=clogL 个长度

          • τ1,,τk=argTopkτ{1,,L}(RQ,K(τ))\tau_1, \cdots, \tau_k=\underset{\tau \in\{1, \cdots, L\}}{\arg \operatorname{Topk}}\left(\mathcal{R}_{\mathcal{Q}, \mathcal{K}}(\tau)\right) \\
        • 计算长度后计算相关性,然后求 softmax

          • R^Q,K(τ1),,R^Q,K(τk)=SoftMax(RQ,K(τ1),,RQ,K(τk))\widehat{\mathcal{R}}_{\mathcal{Q}, \mathcal{K}}\left(\tau_1\right), \cdots, \widehat{\mathcal{R}}_{\mathcal{Q}, \mathcal{K}}\left(\tau_k\right)=\operatorname{SoftMax}\left(\mathcal{R}_{\mathcal{Q}, \mathcal{K}}\left(\tau_1\right), \cdots, \mathcal{R}_{\mathcal{Q}, \mathcal{K}}\left(\tau_k\right)\right) \\
        • Roll 进行信息对齐,X0:Lτ1\mathcal{X}_{0: L-\tau-1} 移到序列最前面,X0:Lτ1\mathcal{X}_{0: L-\tau-1}Xτ:L1\mathcal{X}_{\tau: L-1} 保存着相似的趋势信息

          • during which elements that are shifted beyond the first position are re-introduced at the last position
            ls-type:: annotation
            hl-page:: 5
            hl-color:: red

          •  Auto-Correlation (Q,K,V)=i=1kRoll(V,τi)R^Q,K(τi)\begin{aligned}\text { Auto-Correlation }(\mathcal{Q}, \mathcal{K}, \mathcal{V})=\sum_{i=1}^k \operatorname{Roll}\left(\mathcal{V}, \tau_i\right) \widehat{\mathcal{R}}_{\mathcal{Q}, \mathcal{K}}\left(\tau_i\right) \end{aligned}

      • 多头

        •  MultiHead (Q,K,V)=Woutput  Concat (head1,, head h) where  head i= Auto-Correlation (Qi,Ki,Vi)\begin{aligned} \text { MultiHead }(\mathcal{Q}, \mathcal{K}, \mathcal{V}) & =\mathcal{W}_{\text {output }} * \text { Concat }\left(\operatorname{head}_1, \cdots, \text { head }_h\right) \\ \text { where } \text { head }_i & =\text { Auto-Correlation }\left(\mathcal{Q}_i, \mathcal{K}_i, \mathcal{V}_i\right)\end{aligned}
      • 复杂度 O(LlogL)\mathcal{O}(L \log L)

        • 计算 τ[1,L)\tau \in [1, L) 的相关性

        • Wiener-Khinchin 理论,自相关信息可以使用[[快速傅里叶变换]] Fast Fourier Transforms
          ls-type:: annotation
          hl-page:: 6
          hl-color:: yellow
          得到

    • 与其他方法对比

      • [:span]
        ls-type:: annotation
        hl-page:: 6
        hl-color:: yellow
    • 序列级高效连接

    • self-attention family only calculates the relation between scattered points
      ls-type:: annotation
      hl-page:: 6
      hl-color:: blue

    • 我们采用时间延迟块来聚合底层周期中相似的子序列。 we adopt the time delay block to aggregate the similar sub-series from underlying periods.
      ls-type:: annotation
      hl-page:: 6
      hl-color:: yellow

实验结论

  • 参数设置

    • ADAM + early stopped

    • Autoformer contains 2 encoder layers and 1 decoder layer.
      ls-type:: annotation
      hl-page:: 7
      hl-color:: yellow

  • 对比

    • Informer [ 48 ], Reformer [23 ], LogTrans [26 ], two RNN-based models: LSTNet [ 25], LSTM [ 17] and CNN-based TCN [ 4] as baselines.
      ls-type:: annotation
      hl-page:: 7
      hl-color:: yellow

    • N-BEATS[ 29 ], DeepAR [34 ], Prophet [ 39 ] and ARMIA
      ls-type:: annotation
      hl-page:: 7
      hl-color:: yellow

  • 实验结果

    • 预测方式 前 96 预测后 96

      • we fix the input length and evaluate models with a wide range of prediction lengths: 96, 192, 336, 720.
        ls-type:: annotation
        hl-page:: 8
        hl-color:: yellow
    • [[multivariate]]

      • 训练变长预测表现变化也平稳 we can also find that the performance of Autoformer changes quite steadily as the prediction length O increases
        ls-type:: annotation
        hl-page:: 8
        hl-color:: yellow

      • [:span]
        ls-type:: annotation
        hl-page:: 7
        hl-color:: yellow

    • Univariate results
      ls-type:: annotation
      hl-page:: 8
      hl-color:: yellow
      单变量

      • . This situation of ARIMA can be benefited from its inherent capacity for non-stationary economic data but is limited by the intricate temporal patterns of real-world series.
        ls-type:: annotation
        hl-page:: 8
        hl-color:: yellow

      • [:span]
        ls-type:: annotation
        hl-page:: 8
        hl-color:: yellow

  • [[Ablation Study]]

    • Decomposition architecture
      ls-type:: annotation
      hl-page:: 8
      hl-color:: yellow

      • 具有较好的通用性,其他模型加分解结构效果有提升,预测时效的延长,效果提升更明显

        • 减少复杂模式引起的干扰 our method can generalize to other models and release the capacity of other dependencies learning mechanisms, alleviate the distraction caused by intricate patterns
          ls-type:: annotation
          hl-page:: 9
          hl-color:: yellow
      • 对比深度分解架构和先分解再使用两个模型预测的方式,后者参数多,但是表现不好。

      • [:span]
        ls-type:: annotation
        hl-page:: 8
        hl-color:: yellow

    • Auto-Correlation vs. self-attention family
      ls-type:: annotation
      hl-page:: 9
      hl-color:: yellow

      • 效果超过 full attention,序列级别建模带来的收益

      • 可以预测更长序列

      • [:span]
        ls-type:: annotation
        hl-page:: 9
        hl-color:: yellow

  • Model Analysis
    ls-type:: annotation
    hl-page:: 9
    hl-color:: yellow

    • time series decomposition

      • 随着序列分解单元的数量增加,模型学到的趋势项会越来月接近数据的正式结果,周期项可以更好的捕捉序列变化情况。

      • [:span]
        ls-type:: annotation
        hl-page:: 9
        hl-color:: yellow

    • Dependencies learning

      • 找到的注意力更合理 Autoformer can discover the relevant information more sufficiently and precisely.
        ls-type:: annotation
        hl-page:: 9
        hl-color:: yellow

      • 模型自相关机制可以正确发掘出每个周期的下降过程,没有误识别和漏识别,注意力机制存在错误和漏缺

      • [:span]
        ls-type:: annotation
        hl-page:: 10
        hl-color:: yellow

    • Complex seasonality modeling
      ls-type:: annotation
      hl-page:: 9
      hl-color:: yellow

      • 学习到的长度有意义 Autoformer can capture the complex seasonalities of real-world series from deep representations and further provide a human-interpretable prediction.
        ls-type:: annotation
        hl-page:: 10
        hl-color:: yellow

      • 高的部分说明有对应的周期性

      • [:span]
        ls-type:: annotation
        hl-page:: 10
        hl-color:: yellow

    • Efficiency analysis

读后总结

[[Autoformer Code]]


@ETA Prediction with Graph Neural Networks in Google Maps

[[Abstract]]

  • Travel-time prediction constitutes a task of high importance in transportation networks, with web mapping services like Google Maps regularly serving vast quantities of travel time queries from users and enterprises alike. Further, such a task requires accounting for complex spatiotemporal interactions (modelling both the topological properties of the road network and anticipating events—such as rush hours—that may occur in the future). Hence, it is an ideal target for graph representation learning at scale. Here we present a graph neural network estimator for estimated time of arrival (ETA) which we have deployed in production at Google Maps. While our main architecture consists of standard GNN building blocks, we further detail the usage of training schedule methods such as MetaGradients in order to make our model robust and production-ready. We also provide prescriptive studies: ablating on various architectural decisions and training regimes, and qualitative analyses on real-world situations where our model provides a competitive edge. Our GNN proved powerful when deployed, significantly reducing negative ETA outcomes in several regions compared to the previous production baseline (40+% in cities like Sydney).

[[Attachments]]


@吴军阅读与写作讲义

[[Abstract]]

  • 作者简介:
    吴军
    硅谷投资人,人工智能、语音识别和互联网搜索专家,畅销书作家。现任丰元资本创始合伙人、上海交通大学客座教授、约翰·霍普金斯大学工学院董事等职。
    得到App课程主理人,开设有“硅谷来信”“数学通识50讲”“科技史纲60讲”等专栏和课程。
    著有《浪潮之巅》《数学之美》《文明之光》《硅谷之谜》《见识》《格局》《态度》等十余部畅销书,作品多次获得包括文津图书奖、中国好书奖、中华优秀出版物在内的图书大奖。

内容简介:
你有没有遇到过这样的情况:一直闷头工作,却得不到自己想要的认可;明明工作成果不少,但得到提拔的永远不是自己;工作或生活中说出不合适的话,让场面很尴尬;汇报工作时不知道把重点放在哪里,让人感觉不专业;读书或读工作报告时效率很低,难以快速获取有效信息;每到要写点什么的时候就无从下手,只能上网找范文;聊天时理解不了别人的言外之意,造成误解……
所有这些问题,都是因为你缺乏“理解他人、表达自己”的能力。而这本《吴军阅读与写作讲义》,就是为了给你补上这一课,弥补你在这方面的不足。可以说,这门课比任何一门专业课都能让我们受益终身。
在这本书中,吴军老师非常系统地拆解了如何提高自己的阅读、理解能力和写作、表达能力。一方面,他以自己工作和生活的全部经验为基础,总结了一套系统的理论和方法,让我们可以拿来就用;另一方面,他也带领我们走进古今中外的文学经典,与一位位大师会晤、共鸣,体会并学习他们如何用文字表达自我,同时也跟随吴军老师的解读,亲身体验何谓阅读。

[[Attachments]]

前言

  • 语文是什么?或者说语言的艺术是什么?
    ls-type:: annotation
    hl-page:: 20
    hl-color:: yellow

    • 第一个方面是感受(receptive),包括听、读、观察和理解=
      ls-type:: annotation
      hl-page:: 20
      hl-color:: yellow

    • 第二个方面是表达(expressive ),包括说、写、唱、表述和表演。
      ls-type:: annotation
      hl-page:: 21
      hl-color:: yellow

  • 这本书采用西方大语文的教学方式,强调语文和生活的关系,语文和其他知识体系的关联。
    ls-type:: annotation
    hl-page:: 23
    hl-color:: yellow

    • 我会从人性、社会、历史、国家岀发讲解经典文学,以便大家能够通过阅读来理解他人
      ls-type:: annotation
      hl-page:: 23
      hl-color:: yellow

    • 还会从生活和工作中需要的各种文体的写作出发,讲解如何用文字表达自我
      ls-type:: annotation
      hl-page:: 23
      hl-color:: yellow

序章 从大语文讲起
ls-type:: annotation
hl-page:: 27
hl-color:: yellow

  • 大语文范畴

    • 首先是词汇,它是语文最基本的元素。
      ls-type:: annotation
      hl-page:: 28
      hl-color:: yellow

    • 在词汇之上,是语法、修辞等高级的语言技巧。
      ls-type:: annotation
      hl-page:: 29
      hl-color:: yellow

    • 在语法、修辞之上,是书面和口头的表达能力。
      ls-type:: annotation
      hl-page:: 29
      hl-color:: yellow


@Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting

[[Abstract]]

  • Many real-world applications require the prediction of long sequence time-series, such as electricity consumption planning. Long sequence time-series forecasting (LSTF) demands a high prediction capacity of the model, which is the ability to capture precise long-range dependency coupling between output and input efficiently. Recent studies have shown the potential of Transformer to increase the prediction capacity. However, there are several severe issues with Transformer that prevent it from being directly applicable to LSTF, including quadratic time complexity, high memory usage, and inherent limitation of the encoder-decoder architecture. To address these issues, we design an efficient transformer-based model for LSTF, named Informer, with three distinctive characteristics: (i) a ProbSparse self-attention mechanism, which achieves O(L log L) in time complexity and memory usage, and has comparable performance on sequences’ dependency alignment. (ii) the self-attention distilling highlights dominating attention by halving cascading layer input, and efficiently handles extreme long input sequences. (iii) the generative style decoder, while conceptually simple, predicts the long time-series sequences at one forward operation rather than a step-by-step way, which drastically improves the inference speed of long-sequence predictions. Extensive experiments on four large-scale datasets demonstrate that Informer significantly outperforms existing methods and provides a new solution to the LSTF problem.

[[Attachments]]

Long sequence [[Time Series Forecasting]] (LSTF)

  • 长序列时间序列预测需要模型能够有效捕捉输出和输入之间精确的 long-range dependency coupling

LSTF 中使用 [[Transformer]] 需要解决的问题 #card #incremental

  • self-attention 计算复杂度 O(L2)O(L^2)

  • 多层 encoder/decoder 结构内存增长

  • dynamic decoding 方式预测耗时长

网络结构

ProbSparse self-attention

  • 替换 inner product self-attention

    • [[Sparse Transformer]] 结合行输入和列输出

    • [[LogSparse Transformer]] cyclical pattern

    • [[Reformer]] locally-sensitive hashing(LSH) self-attention

    • [[Linformer]]

    • [[Transformer-XL]] [[Compressive Transformer]] use auxiliary hidden states to capture long-range dependency

    • [[Longformer]]

  • 其他优化 self-attention 工作存在的问题

    • 缺少理论分析

    • 对于 multi-head self-attention 每个 head 都采用相同的优化策略

  • self-attention 点积结果服从 long tail distribution

    • 较少点积对贡献绝大部分的注意力得分

    • 现实含义:序列中某个元素一般只会和少数几个元素具有较高的相似性/关联性

  • 第 i 个 query 用 qiq_i 表示

    • A(qi,K,V)=jf(qi,kj)lf(qi,kl)vj=Ep(kjqi)[vj]\mathcal{A}\left(q_i, K, V\right)=\sum_j \frac{f\left(q_i, k_j\right)}{\sum_l f\left(q_i, k_l\right)} v_j=\mathbb{E}_{p\left(k_j \mid q_i\right)}\left[v_j\right]

    • p(kjqi)=k(qi,kj)lf(qi,kl)p\left(k_j \mid q_i\right)=\frac{k\left(q_i, k_j\right)}{\sum_l f\left(q_i, k_l\right)}

    • k(qi,kj)=exp(qikjTd)k\left(q_i, k_j\right)=\exp \left(\frac{q_i k_j^T}{\sqrt{d}}\right)

  • query 稀疏性判断方法

    • p(kjqj)p(k_j|q_j)[[均匀分布]] q 的 [[KL Divergence]]

      • q 是均分分布,相等于每个 key 的概率都是 1L\frac{1}{L}

      • 如果 query 得到的分布类似于均匀分布,每个概率值都趋近于 1L\frac{1}{L},值很小,这样的 query 不会提供什么价值。

      • p 和 q 分布差异越大的结果越是我们需要的 query

      • p 和 q 的顺序和论文中的不同 D(pq)=xp(x)logp(x)q(x)=Ep(x)(logp(x)q(x))D(p \| q)=\sum_{x} p(x) \log \frac{p(x)}{q(x)}=E_{p(x)}\left(\log \frac{p(x)}{q(x)}\right)

    • KL(qp)=lnl=1LkeqiklT/d1Lkj=1LqikjT/dlnLkK L(q \| p)=\ln \sum_{l=1}^{L_k} e^{q_i k_l^T / \sqrt{d}}-\frac{1}{L_k} \sum_{j=1}^L q_i k_j^T / \sqrt{d}-\ln L_k

      • 把公式代入,然后化解

+ $M\left(q_i, K\right)=\ln \sum_{l=1}^{L_k} e^{q_i k_l^T / \sqrt{d}}-\frac{1}{L_k} \sum_{j=1}^{L_k} q_i k_j^T / \sqrt{d}$

  + 第一项是经典难题 log-sum-exp(LSE) 问题

  + 稀疏性度量 $M\left(q_i, K\right)$

    + $\ln L \leq M\left(q_i, K\right) \leq \max _j\left\{\frac{q_i k_j^T}{\sqrt{d}}\right\}-\frac{1}{L} \sum_{j=1}^L\left\{\frac{q_i k_j^T}{\sqrt{d}}\right\}+\ln L$

    + LSE 项用最大值来替代,即用和当前 qi 最近的 kj,所以才有下面取 top N 操作

      + $\bar{M}\left(\mathbf{q}_i, \mathbf{K}\right)=\max _j\left\{\frac{\mathbf{q}_i \mathbf{k}_j^{\top}}{\sqrt{d}}\right\}-\frac{1}{L_K} \sum_{j=1}^{L_K} \frac{\mathbf{q}_i \mathbf{k}_j^{\top}}{\sqrt{d}}$

+ $\mathcal{A}(\mathbf{Q}, \mathbf{K}, \mathbf{V})=\operatorname{Softmax}\left(\frac{\overline{\mathbf{Q}} \mathbf{K}^{\top}}{\sqrt{d}}\right) \mathbf{V}$

  + $\bar{Q}$ 是稀疏矩阵,前 u 个有值

+ 具体流程

  + 为每个 query 都随机采样 N 个 key,默认值是 5lnL

    + 利用点积结果服从长尾分布的假设,计算每个  query 稀疏性得分时,只需要和采样出的部分 key 计算

  + 计算每个 query 的稀疏性得分

  + 选择稀疏性分数最高的 N 个 query,N 默认值是 5lnL

  + 只计算 N 个 query 和所有 key 的点积结果,进而得到 attention 结果

  + 其余 L-N 个 query 不计算,直接将 self-attention 层输入取均值(mean(V))作为输出

    + 除了选中的 N 个query index 对应位置上的输出不同,其他 L-N 个 embedding 都是相同的。所以新的结果存在一部分冗余信息,也是下一步可以使用 maxpooling 的原因

    + 保证每个 ProbSparse self-attention 层的输入和输出序列长度都是 L

+ 将时间和空间复杂度降为 $$O(L_K \log L_Q)$$

+ 如何解决 对于 multi-head self-attention 每个 head 都采用相同的优化策略

现象?

  + 每个 query 随机采样 key 这一步每个 head 的采样结果是相同的

  + 每一层 self-attention 都会先对 QKV 做线性转换,序列中同一个位置不同 head 对应的 query、key 向量不同

  + 最终每个 head 中得到的 N 个稀疏性最高的 query 也是不同的,相当于每个 head 都采取不同的优化策略

Self-attention distilling

  • 突出 dominating score,缩短每一层输入的长度,降低空间复杂度到 O((2ϵ)LlogL)\mathcal{O}((2-\epsilon) L \log L)

  • encoder 层数加深,序列中每个位置的输出已经包含序列中其他元素的信息,所以可以缩短输入序列的长度

    • 过 attention 层后,大部分位置值相同
  • 激活函数 [[ELU]]

  • 通过 Conv1d + max-pooling layer 缩短序列长度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class ConvLayer(nn.Module):
def __init__(self, c_in):
super(ConvLayer, self).__init__()
self.downConv = nn.Conv1d(in_channels=c_in,
out_channels=c_in,
kernel_size=3,
padding=2,
padding_mode='circular')
self.norm = nn.BatchNorm1d(c_in)
self.activation = nn.ELU()
self.maxPool = nn.MaxPool1d(kernel_size=3, stride=2, padding=1)

def forward(self, x):
x = self.downConv(x.permute(0, 2, 1))
x = self.norm(x)
x = self.activation(x)
x = self.maxPool(x)
x = x.transpose(1,2)
return x

Generative style decoder

  • 预测阶段通过一次前向得到全部预测结果,避免 dynamic decoding

  • 不论训练还是预测,Decoder 的输入序列分成两部分 Xfeeddcoder=concat(Xtoken,Xplaceholder)X_{feed dcoder} = concat(X_{token}, X_{placeholder})

    • 预测时间点前一段已知序列作为 start token

    • 待预测序列的 placeholder 序列

  • 经过 deocder 后,每个 placeholder 都有一个向量,然后输入到一个全链接层得到预测结果

  • 为什么用 generative style decoder #card

    • 解码器能捕捉任意位置输出和长序列依赖关系

    • 避免累积误差

Experiment

  • Baseline

  • 实验设计

    • Univariate Time-series Forecasting

    • Multivariate Time-series Forecasting

      • LSTnet 是基线模型
    • Ablation Study

Input representation

  • 提供时序信息

  • 不是天级别更新的模型需要 global time stamp

    • week,month,holiday embedding
  • 额外实验

    • 利用 t0-t1 的特征预测 t2-t3 结果还不错

    • 可能是 local time stamp 和 global time stamp 让 informer 不依赖自回归结果还能有不错的预测结果

See Also

Ref


@Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting

核心贡献

  • Temporal Fusion Transformer 框架 #card

    • recurrent layers for local processing
      ls-type:: annotation
      hl-page:: 1
      hl-color:: yellow

    • interpretable self-attention layers for long-term dependencie
      ls-type:: annotation
      hl-page:: 1
      hl-color:: yellow

    • specialized components to select relevant features
      ls-type:: annotation
      hl-page:: 1
      hl-color:: yellow

    • a series of gating layers to suppress unnecessary components
      ls-type:: annotation
      hl-page:: 1
      hl-color:: yellow

  • 模型可解释性 interpretable insights into temporal dynamics
    ls-type:: annotation
    hl-page:: 1
    hl-color:: yellow
    #card

    • 区分全局重要特征 globally-important variables for the prediction problem
      ls-type:: annotation
      hl-page:: 3
      hl-color:: yellow

    • 持久的时间模式 persistent temporal patterns
      ls-type:: annotation
      hl-page:: 3
      hl-color:: yellow

    • 显著事件 significant events
      ls-type:: annotation
      hl-page:: 3
      hl-color:: yellow

核心问题

  • #card [[Multi-horizon Forecasting]] 包含复杂的输入特征组合 contains a complex mix of inputs
    ls-type:: annotation
    hl-page:: 1
    hl-color:: green

    • 静态变量

      • 与时间无关的静态变量 including static (i.e. time-invariant) covariates
        ls-type:: annotation
        hl-page:: 1
        hl-color:: green
    • 时变变量 Time-dependent Inputs

      • 已知未来输入 known future inputs,
        ls-type:: annotation
        hl-page:: 1
        hl-color:: green

        • 未来节假日信息
      • 外生时间序列 exogenous time series that are only observed in the past – without any prior information on how they interact with the target.
        ls-type:: annotation
        hl-page:: 1
        hl-color:: green

        • 历史顾客流量 historical customer foot traffic
          ls-type:: annotation
          hl-page:: 2
          hl-color:: green
    • 相关示意图

      • [:span]
        ls-type:: annotation
        hl-page:: 2
        hl-color:: yellow
  • 使用 attention 机制增强 :-> 选择过去相关特征 used attention-based methods to enhance the selection of relevant time steps in the past
    ls-type:: annotation
    hl-page:: 2
    hl-color:: yellow

  • 之前基于 DNN 方法的缺陷 #card

    • 没有考虑不同类型输入特征 fail to consider the different types of inputs
      ls-type:: annotation
      hl-page:: 2
      hl-color:: blue

      • 万物皆时序 构建模型时,将所有的特征按 time step 直接 concat 在一起,所有变量全部扩展到所有的时间步,无论是静态、动态的变量都合并在一起送入模型。
    • 假定所有外生输入都已知与未来 assume that all exogenous inputs are known into the future
      ls-type:: annotation
      hl-page:: 2
      hl-color:: blue

    • 忽略重要的静态协变量 neglect important static covariates
      ls-type:: annotation
      hl-page:: 2
      hl-color:: blue

      • 通常处理方法是预测时和其他时间相关特征连接
  • 已有深度学习方法是黑箱,如何解释模型的预测结果?#card

    • do not shed light on how they use the full range of inputs present in practical scenarios
      ls-type:: annotation
      hl-page:: 1
      hl-color:: blue

相关工作

  • [[@A Multi-Horizon Quantile Recurrent Forecaster]] Multi-horizon Quantile Recurrent Forecaster MQRNN 结构,同时预测未来多个时间步的值

  • deep state space 状态空间模型,统计学,hybrid network,类似工作 [[ESRNN]] [[N-BEATS]]

  • [[Explainable AI]]

    • post-hoc methods 事后方法(因果方法),不考虑输入特征的时间顺序 do not consider the time ordering of input features
      ls-type:: annotation
      hl-page:: 3
      hl-color:: blue

    • 基于 attention 的架构对语言或语音序列有很好的解释,但是很难适用于多维度预测 attention-based architectures are proposed with inherent interpretability for sequential data
      ls-type:: annotation
      hl-page:: 3
      hl-color:: blue

解决方法

  • [[Multi-horizon Forecasting]]

    • prediction intervals [[区间预测]] #card

      • [[DeepAR]] 直接修改模型的输出,模型不拟合原始标签,而是拟合人工指定的分布,通过蒙特卡洛采样取平均得到最终的点预测。
    • 分位数回归 [[Quantile Regression]],每一个 time step 输出 10th10^{th} 50th50^{th} 90th90^{th} #card

      • 不同分位数下预测能够产生预测区间,通过区间大小反应预测结果的不确定性。某个点在不同分位数线性回归的预测结果很接近,则预测确定性搞。

      • Quantile Outputs

      • y^i(q,t,τ)=fq(τ,yi,tk:t,zi,tk:t,xi,tk:t+τ,si)\hat{y}_i(q, t, \tau)=f_q\left(\tau, y_{i, t-k: t}, \boldsymbol{z}_{i, t-k: t}, \boldsymbol{x}_{i, t-k: t+\tau}, \boldsymbol{s}_i\right)

      • 设计 [[quantile loss]]

        • L(Ω,W)=ytΩqQτ=1τmaxQL(yt,y^(q,tτ,τ),q)Mτmax\begin{gathered}\mathcal{L}(\Omega, \boldsymbol{W})=\sum_{y_t \in \Omega} \sum_{q \in \mathcal{Q}} \sum_{\tau=1}^{\tau_{\max }} \frac{Q L\left(y_t, \hat{y}(q, t-\tau, \tau), q\right)}{M \tau_{\max }} \end{gathered}

          • QL(y,y^,q)=q(yy^)++(1q)(y^y)+Q L(y, \hat{y}, q)=q(y-\hat{y})_{+}+(1-q)(\hat{y}-y)_{+} #card
            • q 代表分位数

            • ()+=max(0,)(*)_+ = \max (0,*)

            • 假设拟合分位数 0.9

          + $Q L(y, \hat{y}, q=0.9)=\max (0.9 *(y-\hat{y}), 0.1 *(\hat{y}-y))$

          + $y-\hat{y} \gt 0$ 模型预测偏小,Loss 增加更多

          + loss 中权重 9:1,模型倾向预测出大的数字,Loss 下降快

        + 假设拟合分位数 0.5,退化成 MAE

          + $Q L(y, \hat{y}, q=0.5)=\max (0.5 *(y-\hat{y}), 0.5 *(\hat{y}-y)) = 0.5*|y-\hat{y}|$

+ q-Risk 避免不同预测点下的预测量纲不一致问题,对结果做正则化处理。目前只关注 P50 和 P90 两个分位数 #card
  + $q$-Risk $=\frac{2 \sum_{y_t \in \tilde{\Omega}} \sum_{\tau=1}^{\tau_{\max }} Q L\left(y_t, \hat{y}(q, t-\tau, \tau), q\right)}{\sum_{y_t \in \tilde{\Omega}} \sum_{\tau=1}^{\tau_{\max }}\left|y_t\right|}$
  • 模型结构 #card

    • [:span]
      ls-type:: annotation
      hl-page:: 6
      hl-color:: yellow
  • 输入部分

    • [[Static Covariate Encoders]] 通过 GRN 将静态特征编码变成 4 个不同向量

    • 动态特征 #card

      • post inputs

      • known future inputs

    • [[Variable Selection Networks]] 通过选择重要的特征,减少不必要的噪音输入,以提供模型性能。 #card

      • [[GLU]] 灵感来自 LSTM 的门控机制,sigmoid 取值范围 0-1
    • 对不同类型的输入变量应该区别对待 #card

      • 静态变量通过特殊的 [[Static Covariate Encoders]],后续做为 encoder 和 decoder 的输入

      • 过去的动态时变变量+动态时不变变量进入 encoder 结构中(蓝色 variable seletcion)

      • 未来的动态时不变变量进入 decoder 结构中

    • seq2seq with teacher forcing 架构 #card

      • encoder 部分动态特征 embedding 和静态特征 embedding concat 在一起做为输入

        • 静态变量 + 动态时变变量
      • decoder

        • 静态变量 + 动态时不变变量
  • 模型组成

    • [[Gated Residual Network]] 模型能够灵活地仅在需要时应用非线性处理 #card

      • 外生输入和目标之间的确切关系通常是事先未知的,因此很难预见那些变量是相关的。

      • 很难确定非线性处理的程度该多大,并且可能存在更简单的模型就能满足需求。

    • [[Interpretable Multi-Head Attention]]

    • [[Temporal Fusion Decoder]] 学习数据集中的时间关系

    • 通过 dense 层得到多个 [[Quantile Outputs]] #card

      • y^(q,t,τ)=Wqψ~(t,τ)+bq\hat{y}(q, t, \tau)=\boldsymbol{W}_q \tilde{\boldsymbol{\psi}}(t, \tau)+b_q

[[TFT Interpretability Use Cases]] #card

  • 输入特征重要性 examining the importance of each input variable in prediction
    ls-type:: annotation
    hl-page:: 17
    hl-color:: yellow

  • 可视化当前时间模式 visualizing persistent temporal patterns
    ls-type:: annotation
    hl-page:: 17
    hl-color:: yellow

  • 识别导致任何导致时间动态显著变化的时间 identifying any regimes or events that lead to significant changes in temporal dynamics
    ls-type:: annotation
    hl-page:: 17
    hl-color:: yellow

[[Ref]]


@Augmenting Long-term Memory

Solomon Shereshevsky 以超级记忆力闻名

memex 外部记忆机器,汇总全部个人资料

  • [[Douglas Engelbart]] augmentation of human intelligence

  • [[Ted Nelson]] [[Project Xanadu]] hypertext, and, indirectly

  • Tim Berners-Lee world wide web

Anki makes memory a choice , rather than a haphazard event , to be left to chance.

  • I describe some useful patterns of Anki use , and anti-patterns to avoid.
    But, as we shall see, there are already powerful ideas about personal memory systems based solely on the structuring and presentation of information.
  • 从信息组织和展示的角度入手。

[[@Part I: How to remember almost anything: the Anki system]]

[[@Part II: Personal Memory Systems More Broadly]]

[[@Appendix 1: analysis of Anki study time]] Here’s a ballpark analysis of the effort required to study an Anki card for recall over 20 years

  • 估算一张卡片记住 20 年需要花费的时间成本

[[@Appendix 2: Using Anki to learn APIs]]

Using spaced repetition systems to see through a piece of mathematics ^有点琐碎,是的我认知不够^


@Part II: Personal Memory Systems More Broadly

两个问题

  • how important is memory as a cognitive skill

  • what is the role of [[cognitive science]] in building personal memory systems ?
    How important is long-term memory, anyway?

  • “rote memory” 比理解更低级?

  • memory is the foundation of our cognition

    • My somewhat pious belief was that if people focused more on remembering the basics , and worried less about the “difficult” high-level issues , they’d find the high-level issues took care of themselves.

    • I now believe memory of the basics is often the single largest barrier to understanding

    • 熟悉新领域基础知识有助于理解

    • Adriaan de Groot and [[Herbert A. Simon]] studying how people acquire expertise, focusing particularly on chess

      • They found that world-class chess experts saw the board differently to beginners. 大师和新手看到的棋盘不一样

        • A beginner would see “a pawn here, a rook there”, and so on, a series of individual pieces.
        • Masters, by contrast, saw much more elaborate “ chunks ”: combinations of pieces that they recognized as a unit, and were able to reason about at a higher level of abstraction than the individual pieces.
        • 有关国际象棋大师和新手的区别:专家拥有更加复杂的 chunks
      • Simon estimated chess masters learn between 25,000 and 100,000 of these chunks during their training, and that learning the chunks was a key element in becoming a first-rate chess player. Such players really see chess positions very differently from beginners.

      • [[@刻意练习]]里面也要提到过

      • George Miller 论文 The Magical Number Seven, Plus or Minus Two,提出 chunks was effectively the  basic unit of working memory

  • distributed practice meaning :-> practice which is distributed in time

    • Hermann Ebbinghaus

    • Ebbinghaus forgetting curve 遗忘曲线

image.png

On the role of cognitive science in the design of systems to augment cognition

  • they show emphatically that distributed practice outperforms massed practice

  • 反例子:某些技能在一定时间后会增强

    • we learn to swim during the winter and to skate during the summer.

    • an 1895 study of Axel Oehrn

  • memory is complicated , we don’t understand many of the big picture questions well, and we should be careful before we put too much faith in any given model.
    + memory is complicated 还需要时间去理解相关的内容

  • 如何在理论不完善的背景下,开始设计系统?


@Order Fulfillment Cycle Time Estimation for On-Demand Food Delivery

[[Abstract]]

  • 送达时间 Order Fulfillment Cycle Time (OFCT)

  • a novel post-processing layer

    • accounting for the distributional mismatch between the true OFCT values and those predicted by the model at initialization
  • By providing customers with conveniences such as easy access to an extensive variety of restaurants, effortless food ordering and fast delivery, on-demand food delivery (OFD) platforms have achieved explosive growth in recent years. A crucial machine learning task performed at OFD platforms is prediction of the Order Fulfillment Cycle Time (OFCT), which refers to the amount of time elapsed between a customer places an order and he/she receives the meal. The accuracy of predicted OFCT is important for customer satisfaction, as it needs to be communicated to a customer before he/she places the order, and is considered as a service promise that should be fulfilled as well as possible. As a result, the estimated OFCT also heavily influences planning decisions such as dispatching and routing.

[[Attachments]]

相关工作

  • ETA 分类

    • Route-based

    • OD-based

  • OFCT 比其他 ETA 独特的挑战

    • Significantly more influencing factors

      • location and characteristics of the restaurant

      • the food preparation time

      • the orders assigned to the same courier (which will alter his/her delivery itinerary) 骑手配送行为

    • Unavailability of critical information 预估时缺少关键信息

      • 分配到订单的骑手

      • 最终的路线

  • Time Window Assignment Problem

BackGroound

  • 城市划分成区域,区域内配送站

    • 订单终点对应一个指定的 poi 类型(学校、写字楼等)
  • 订单生命周期划分 PT(下单到取到餐),DT(取餐到送达),OFCT(下单到送达),CT(下单到做好)

  • 流程

    • 用户下单时,预估 OFCT

      • dispatching 分单

      • routing 路径规划

        • VRPTW
    • 骑手到达餐厅取餐

    • 骑手配送

Feature

  • 订单特征

    • Spartial feature 空间特征

      • 起点终点 id 和坐标,city/grid id
    • Temporal feature 时间特征

      • hour of the day

      • workday

    • Order size features 订单大小影响商家出餐速度

      • sku_num

      • price

        • sku_num 低估套餐的大小
  • Aggregation Features 聚合特征

    • 通过手机传感器收集信息(gps,wifi,bluetooth),得到 dt/pt/ofct

    • 对上面的信息进行聚合:20 分位数、平均、标准差、80 分位数

    • 通过一定规则选取订单集合,在集合中再分组计算统计信息。

      • 相同 city/grid/restaurant/hour of day 的订单

      • 发单前不同时长完成订单

  • Dish Features 餐品特征

    • sku 分配 uid,订单可以用包含的 uid 表示

    • 训练分类模型( 116 类),使用预测的分类结果

      • sku 标题做为输入,人工标签

      • fine-tuning 中文 Bert

  • Cooking Time Features

    • 出餐时间很难获取真值,从历史数据中挖掘。

    • 三种场景

      • 骑手到达太早,需要等到出餐完成

      • 骑手需要在同一个餐厅取多个订单,只有在餐厅完成最后一个订单才能离开

      • 骑手达到时,如果餐厅完成出餐可以立即进行配送统计

    • 聚合 departure time from the restaurant 得到 ct

  • Supply-and-Demand Features 供需特征

    • 供需比 demand-to-supply ratio (DSR) DSRo=C1Oouncompleted \mathrm{DSR}_{o}=|C|^{-1}\left|O_{o}^{\text {uncompleted }}\right|

      • 订餐需求在时间和空间上都会有突变,此时通过合并订单配送策略减轻影响。合单策略提升整体配送效率,但是单个订单配送时间变长(骑手需要绕路去取或送)。通过 DSR 来描述这种现象

      • Oouncompleted O_{o}^{\text {uncompleted }} 当前未完成订单,DSR 表示当前未完成订单和活跃配送员数的比例

    • 配送比 dropoff_ratio oo=Oouncompleted 1Oodropoff o_{o}=\left|O_{o}^{\text {uncompleted }}\right|^{-1}\left|O_{o}^{\text {dropoff }}\right|

      • 未完成订单中,已经取餐在配送中的订单占比
    • 餐厅出餐量 unfetched_order_count

      • 骑手未取订单数,值越大需要等待的时间越大
    • 单量预测相关,尝试后发现没用

      • 单量预测模型中使用的特征 OFCT 预估模型也使用,没有带来新的信息增益。
    • 图例

      • e DSR 越大,Bundle 越大,g 对应 OCFT 变大

      • DSR 一定,dropoff ratio 越大,代表快要释放的运力更多,然后bundle变小,ocft 变小。

  • Courier Features 骑手特征

    • 预测 OFCT 时,送单的骑手还没有确定,通过预测模型对附近的骑手进行排序,取 top-ranked 骑手做为派单对象。

    • 相关特征

      • 取单距离

      • work load 负载,骑手当前未完成订单数

      • urgency 紧急程度,骑手需要配送订单平均或最小剩余时间

      • Mutual Distances 订单终点、餐厅、骑手当前订单的终点的最短距离。距离越大,骑手越有可能绕路。

  • ETA-based Drop-off Time Feature 多维度相似订单的配送 ETA

    • 利用回归模型来学习配送段 ETA 无法很好处理长尾不规律 case,比如高峰期等待电梯

      • 利用历史订单作为配送段时间预估的语料

      • 历史订单用多维特征来表示

      • 新订单通过 k 近邻搜索出相似的历史订单

      • 对相似的历史订单真实配送段时间加权平均,作为新订单的预估配送段时间

    • 通过 OD-based ETA 方法(TEMP+R) 预估餐厅到终点的配送时间特征 DTo

      • xo~eta =[lon(ro~), lat (ro~),lon(po~), lat (po~),hr(aσ~creation )]Tw\mathbf{x}_{\widetilde{o}}^{\text {eta }}=\left[\operatorname{lon}\left(r_{\widetilde{o}}\right) \text {, lat }\left(r_{\widetilde{o}}\right), \operatorname{lon}\left(p_{\widetilde{o}}\right) \text {, lat }\left(p_{\widetilde{o}}\right), \operatorname{hr}\left(a_{\widetilde{\sigma}}^{\text {creation }}\right)\right]^{T} \odot w

        • 用经纬度+时间组成的向量表示订单,w 表示向量中每一项的权重
      • dissim(o~,o^)=xo~eta xo^eta 2\operatorname{dissim}(\widetilde{o}, \widehat{o})=\left\|\mathbf{x}_{\widetilde{o}}^{\text {eta }}-x_{\widehat{o}}^{\text {eta }}\right\|_{2}

        • 用 Euclidean distance 表示两个不同订单之间的距离
      • (i=1kwi)1i=1k(wiDToi)\left(\sum_{i=1}^{k} w_{i}\right)^{-1} \sum_{i=1}^{k}\left(w_{i} \cdot \mathrm{DT}_{o_{i}}\right)

        • 在历史订单中取 k 个最相似订单,构建该特征

        • wi=exp(dissim(oi,o)σ2)w_{i}=\exp \left(-\frac{\operatorname{dissim}\left(o_{i}, o\right)}{\sigma^{2}}\right) 代表权重

  • Meteorological Features 气象

    • 数值特征

      • 气温

      • 空气质量

      • 风速

    • 类别特征

      • 天气

Model

  • 网络结构

  • [[Feature Engineering]]

    • 数值特征 归一化+ ELU 升维

      • 维度太低限制神经网络表达
    • 类别特征 embedding + dropout 避免过拟合

      • 一个类别多个id 对应 embedding 进行 average pooling
    • 骑手特征

      • 召回 pickup 距离在 X 米范围内的骑手组成骑手集合

      • re-ranking module Query Invariant Listwise Context Modeling (QILCM)

        • 对于每个骑手 c 生成表示向量 hc 以及排序分 sc,利用加权得分表示骑手向量

          • cCcandidate sch~c\sum_{\forall c \in C^{\text {candidate }}} s_{c} \tilde{\mathbf{h}}_{c}
  • Postprocessing 后处理

    • 模型收敛速度慢,预测效果差

      • 模型拟合的数据分布与真实履约时间的分布发生偏移,真实的履约时间实际上是一个右偏长尾的分布,相当于有一小部分订单真实的配送时间偏长而模型没有学习到。
    • OFCTopredict =μreal +σreal yoout μini σini \mathrm{OFCT}_o^{\text {predict }}=\mu^{\text {real }}+\sigma^{\text {real }} \frac{y_o^{\text {out }}-\mu^{\text {ini }}}{\sigma^{\text {ini }}}

      • 实现拟合和缩放

      • y_out 是模型输出

      • real 是根据真实数据统计的均值和方差

      • ini 是整个训练集的均值和方差

    • 自适应 [[Box-Cox Transformation]] 逆变换

      • 更加能够拟合长尾数据分布
  • Objective Function

    • predict +λrank \ell_{\text {predict }}+\lambda \ell_{\text {rank }}

      • ranking loss + predictive loss
    • predict =OFCTopredict OFCTo\ell_{\text {predict }}=\left|\mathrm{OFCT}_o^{\text {predict }}-\mathrm{OFCT}_o\right|

    • rank =cCcandidate (I(c=co)log(sc))\ell_{\text {rank }}=-\sum_{\forall c \in C^{\text {candidate }}}\left(\mathbb{I}\left(c=c_o\right) \log \left(s_c\right)\right)

      • cross entropy loss

      • I()\mathbb{I}() 是指示函数

Experiments

  • Ablation Analysis of Feature Groups 消融实验

    • 订单特征、供需特征

  • 不同模型对比

    • GBM

    • [[DeepFM]] [[@xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems]]

      • 简单 concatenation&MLP 策略,不适合 OFCT 任务
    • [[TEMP+R]] [[MURAT]] OD-based ETA methods

Conclusion

  • 可以改进的点

    • cooking time features

    • weather prediction

Ref


@TabNet: Attentive Interpretable Tabular Learning

[[Abstract]]

  • We propose a novel high-performance and interpretable canonical deep tabular data learning architecture, TabNet. TabNet uses sequential attention to choose which features to reason from at each decision step, enabling interpretability and more efficient learning as the learning capacity is used for the most salient features. We demonstrate that TabNet outperforms other neural network and decision tree variants on a wide range of non-performance-saturated tabular datasets and yields interpretable feature attributions plus insights into the global model behavior. Finally, for the first time to our knowledge, we demonstrate self-supervised learning for tabular data, significantly improving performance with unsupervised representation learning when unlabeled data is abundant.

[[Attachments]]


@FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction

[[Abstract]]

  • Advertising and feed ranking are essential to many Internet companies such as Facebook and Sina Weibo. Among many real-world advertising and feed ranking systems, click through rate (CTR) prediction plays a central role. There are many proposed models in this field such as logistic regression, tree based models, factorization machine based models and deep learning based CTR models. However, many current works calculate the feature interactions in a simple way such as Hadamard product and inner product and they care less about the importance of features. In this paper, a new model named FiBiNET as an abbreviation for Feature Importance and Bilinear feature Interaction NETwork is proposed to dynamically learn the feature importance and fine-grained feature interactions. On the one hand, the FiBiNET can dynamically learn the importance of features via the Squeeze-Excitation network (SENET) mechanism; on the other hand, it is able to effectively learn the feature interactions via bilinear function. We conduct extensive experiments on two realworld datasets and show that our shallow model outperforms other shallow models such as factorization machine(FM) and field-aware factorization machine(FFM). In order to improve performance further, we combine a classical deep neural network(DNN) component with the shallow model to be a deep model. The deep FiBiNET consistently outperforms the other state-of-the-art deep models such as DeepFM and extreme deep factorization machine(XdeepFM).

[[Attachments]]

创新点 #card

  • 使用 SENET 层对 embedding 进行加权

  • 使用 Bilinear-Interaction Layer 进行特征交叉

背景

  • importance of features and feature interactions
    网络结构 #card
    image.png

[[SENET]] Squeeze-and-Excitation network 特征加权方法

  • Squeeze f*k 压缩成 f*1
  • Excitation 然后通过两层 dnn 变成得到权重 f*1
  • Re-Weight 将结果和原始 f*k 相乘。
  • 原理是想通过控制scale的大小,把重要的特征增强,不重要的特征减弱,从而让提取的特征指向性更强。
    [[Bilinear-Interaction Layer]] :-> 结合Inner Product和Hadamard Product方式,并引入额外参数矩阵W,学习特征交叉。
  • 不同特征之间交叉 v_i * W * v_j 时,权重矩阵来源
    • Field-All Type :-> 全体共享 W
      • 参数量 :-> feature * embedding + emb*emb
    • Field-Each Type :-> 每个 filed 一组 W
      • 参数量 :-> feature * embedding + feature*emb*emb
    • Filed-Interaction Type :-> 不同特征之间有一组 w
      • 参数量 :-> feature * embedding + feature*feature*emb*emb
  • Bilinear-Interaction Layer 对比 [[FFM]] 有效减少参数量
    • FM 参数量 :-> feature * embedding
    • FFM 参数量 :-> feature * filed * embedding
  • 不同特征交叉方式

image.png
occlusion:: eyIuLi9hc3NldHMvaW1hZ2VfMTcyNDE5ODg5MzM4OV8wLnBuZyI6eyJjb25maWciOnsiaGlkZUFsbFRlc3RPbmUiOnRydWV9LCJlbGVtZW50cyI6W3sibGVmdCI6MjU5LjE3MTgyMTU5NDIzODMsInRvcCI6MjA5LjQ1OTk3ODc0MTI3MzI2LCJ3aWR0aCI6MzY3LjAxMDMwOTg1NTE0MzIsImhlaWdodCI6MjYyLjk5MTYzODUzMTQxNiwiYW5nbGUiOjAsImNJZCI6MX0seyJsZWZ0IjozNjUuMzM4NDg4MjYwOTA0OTcsInRvcCI6NDAxLjQ5OTc1MDg4ODczMzIsIndpZHRoIjoxNjguMDEwMzA5ODU1MTQzMiwiaGVpZ2h0Ijo5OC43MzkxMDI4MjMzOTIyNywiYW5nbGUiOjAsImNJZCI6MX0seyJsZWZ0IjozMTUuNjcxODIxNTk0MjM4MywidG9wIjo1OTkuMTUxNTc0MjkyNDA4Mywid2lkdGgiOjQ4Ny4zNDM2NDMxODg0NzY1NiwiaGVpZ2h0IjoxODMuMDU4MDIwMjA1NjMzNSwiYW5nbGUiOjAsImNJZCI6Mn0seyJsZWZ0Ijo0MzkuMDA1MTU0OTI3NTcxNiwidG9wIjo3NDMuNTA3MDcyODI1OTA0MSwid2lkdGgiOjIzNS45ODk2OTAxNDQ4NTY4LCJoZWlnaHQiOjcyLjM0NTg1NDM0ODE5MiwiYW5nbGUiOjAsImNJZCI6Mn0seyJsZWZ0Ijo4OTEuMTcxODIxNTk0MjM4MywidG9wIjozODMuNTE1NDc3MzgwODMzNTQsIndpZHRoIjo2MjYuMzQzNjQzMTg4NDc2NiwiaGVpZ2h0IjoyODEuMjU4OTg4ODk3MTIyMiwiYW5nbGUiOjAsImNJZCI6M30seyJsZWZ0Ijo5NTkuMTcxODIxNTk0MjM4MywidG9wIjo1NzkuOTYwNDM0NjU4NDgyMywid2lkdGgiOjI5MC4zNDM2NDMxODg0NzY1NiwiaGVpZ2h0Ijo4MS41NTAzODQ5MTgxODgwMiwiYW5nbGUiOjAsImNJZCI6M31dfX0=
[[ETA]] fm 交叉部分可以尝试引入 bi layer,使用 link 状态组合 W。

  • 但是路况状态可能会改变

Ref


@Applying Deep Learning To Airbnb Search

[[Abstract]]

  • The application to search ranking is one of the biggest machine learning success stories at Airbnb. Much of the initial gains were driven by a gradient boosted decision tree model. The gains, however, plateaued over time. This paper discusses the work done in applying neural networks in an attempt to break out of that plateau. We present our perspective not with the intention of pushing the frontier of new modeling techniques. Instead, ours is a story of the elements we found useful in applying neural networks to a real life product. Deep learning was steep learning for us. To other teams embarking on similar journeys, we hope an account of our struggles and triumphs will provide some useful pointers. Bon voyage!

[[Attachments]]

记录 Airbnb 深度模型探索历程。

业务:顾客查询后返回一个有序的列表(Listing,对应房间)。

深度模型之前使用 GBDT 对房子进行打分。

Model Evolution

  • 评价指标 [[NDCG]]

  • Simple NN

    • 32 层 NN + Relu,特征和优化目标和 GBDT 效果相同

    • 打通深度模型训练和线上预测的 pipeline。

  • LambdaRank NN

    • [[LambdaRank]] 直接优化 NDCG

    • 采用 pairwise 的训练方式,构造 <被预定的房间,未被预定的房间> 的训练样本

    • pairwise loss 乘上 item 对调顺序带来的指标变化 NDCG,关注列表中靠前位置的样本

      • 比如 booked listing 从 2 到 1 的价值比 books listing 从 10 到 9 的意义大。
  • Decision Tree/Factorization Machine NN

+ GBDT 叶子节点位置(类别特征) + FM 预测结果放到 NN 中。
  • Deep NN

    • 10 倍训练数据,195 个特征(离散特征 embedding 化),两层神经网络:127 fc + relu 以及 83 fc + relu。

    • 部分 dnn 的特征是来自其他模型,之间在 [[@Real-time Personalization using Embeddings for Search Ranking at Airbnb]] 里面提到的特征也有使用。

    • 在训练样本达到 17 亿后,ndcg 在测试集和训练集的表现一致,这样一来可以使用线下的效果来评估线上的效果?

    • 深度模型在图像分类任务上已经超过人类的表现,但是很难判断是否在搜索任务上也超过人类。一个关键是很难定义搜索任务中的人类能力。

Failed Models

  • Listing ID

    • listing id 进行 embedding,但是出现过拟合。

      • embedding 需要每个物品拥有大量数据进行训练,来挖掘他们的价值

      • 部分 Listing 有一些独特的属性,需要一定量的数据进行训练。

  • Multi-task learning

    • booking 比 view 更加稀疏,long view 和 booking 是有相关的。

    • 两个任务 Booking Logit 和 Long View Logit,共享网络结构。两个指标在数量级上有差异,为了更加关注 booking 的指标,long view label 乘上 log(view_duration)。

      • 线上实验中,页面浏览的时间提高,但是 booking 指标基本不变。

      • 作者分析长时间浏览一个页面可能是高档房源或页面描述比较长。

  • [[Feature Engineering]]

    • GBDT 常用的特征工程方法:计算比值,滑动窗口平均以及特征组合。

    • NN 可以通过隐层自动进行特征交叉,对特征进行一定程度上的处理可以让 NN 更加有效。

  • Feature [[Normalization]]

    • NN 对数值特征敏感,如果输入的特征过大,反向传播时梯度会很大。

    • 正态分布

    • (featurevalμ)/ρ(feature_val - \mu)/\rho

    • power law distribution

    • log1+featureval1+median\log \frac{1+feature_val}{1+median}

  • Feature distribution

    • 特征分布平滑

    • 是否存在异常值?

    • 更容易泛化,保证高层输出有良好的分布

  • [[Hyperparameters]]

    • [[Dropout]] 看成是一种数据增强的方法,模拟了数据中会出现随机缺失值的情况。drop 之后可能会导致样本不再成立,分散模型注意力的无效场景。

      • 替代方案,根据特征分布人工产生噪音加入训练样本,线下有效果,线上没有效果。
    • [[神经网络参数全部初始化为0]] 没有效果,[[Xavier Initialization]] 初始化参数,Embedding 使用 -1 到 1 的随机分布。

    • Learning rate 默认参数 [[Adam]] 效果不太好,使用 [[LazyAdam]] 在较大 embedding 场景下训练速度更快

  • Feature Importance [[可解释性]]

    • Score Decomposition 将 NN 的分数分解到特征上。[[GBDT]] 可以这样做。

    • Ablation Test 每次训练一个模型删除一个特征。问题是模型可以从剩余的特征中弥补出缺失的特征。

    • Permutation Test 选定一个特征,随机生成值。[[Random Forests]] 中常用的方法。新生成的样本可能和现实世界中的分布不同。一个特征可能和其他特征共同作用产生效果。

    • TopBot Analysis 分析排序结果 top 和 bot 的单独特征分布

      • 左边代表房子价格的分布,top 和 bot 的分布存在明显不同,代表模型对价格敏感。

      • 右边代表页面浏览量的分布,top 和 bot 的分布接近,说明模型没有很好利用这个特征。

奇怪的东西

  • 论文中一直在引用 [[Andrej Karpathy]] 的建议:don’t be a hero

Transformer

[[Abstract]]

  • The dominant sequence transduction models are based on complex recurrent or convolutional neural networks that include an encoder and a decoder. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train. Our model achieves 28.4 BLEU on the WMT 2014 Englishto-German translation task, improving over the existing best results, including ensembles, by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small fraction of the training costs of the best models from the literature. We show that the Transformer generalizes well to other tasks by applying it successfully to English constituency parsing both with large and limited training data.

[[Attachments]]

模型结构

Encoder and Decoder Stacks

  • [[Transformer/Encoder]]

    • 每层包含两个子层,分别是 multi-head self-attention mechanism 以及 positionwise fully connected feed-forward network(其实就是一维卷积)

    • 每一层间通过 residual connection 以及 [[Layer Normalization]]。表示成 LayerNorm(x+Sublayer(x))。 [[Post Norm]]

    • 所以内部连接层的大小都是 $${d_{model}=512}$$

  • [[Transformer/Decoder]]

    • 第一个子层是 multi-head self-attention,与 encoder 不同的地方在与为了避免数据泄漏,计算位置 i 的 self attention 时,需要 mask 位置 i 之后的序列。

      • q,k,v 是上一层的输出
    • 第二个子层是 multi-head attention,用来捕获 encoder 的 output 和 decoder 的 output 之间的注意力关系。

      • k 和 v 是来自 encoder,q 来自上一层 decoder
    • 第三个子层和 Encoder 一样,是 positionwise fully connected feed-forward network

    • 训练和预测

      • 使用 teacher forcing 机制训练的 seq2seq 结构

Input Embedding

  • 为什么获取输入词向量后需要对矩阵乘以 embedding size 的平方?意义是什么?

    • embedding matrix 的初始化方法是 [[Xavier Initialization]],方差是 1/embedding size,通过 scale 更有利于matrix收敛
  • 为什么不直接使用标准正态分布?

    • tied-embedding 输入词向量层和输出词向量层(softmax 前的线性层)共享参数

    • 线性层需要用 [[Xavier Initialization]] 初始化

[[Multi-Head Attention]]

  • Attention 是 :-> [[scaled dot-product attention]]
    [[Position-wise Feed-Forward Networks]]
    Embeddings and Softmax

  • weight typing

    • seq2seq 语言模型中绑定 embedding 权重和 docoder softmax 之前的线性层权重矩阵。

    • 可以减少参数量,压缩模型大小,embedding 训练更加充分,缓解每次更新少数词 embedding 的情况。

  • 权重共享

    • decoder 和 encoder embedding 层
      • 原始任务是 English-German 翻译,词表使用 bpe 处理,最小单元是 subword。两种语言有相同地 subword
      • 不同语言之间可以共享对数词或符号的建模
    • decoder 中 embedding 层 和 fc 层权重
      • embedding 层通过词的 one-hot 去取对应的向量

      • fc 层通过向量去得到可能是某个此词的 softmax 概率最大,和词相同的那一行对应的点积和softmax概率会是最大的。

        • 两数和相同的情况下,两数相等对应的积最大。
  • 每个权重放大 dmodel{\sqrt{d_{model}}}

    • [[Xavier Initialization]] Embedding 的方差是 1/d_model,当 d_model 值非常大时,矩阵中的每一个值都会减小。

      • [[Positional Encoding]] 是通过三角函数算出来的,值域为 -1 到 1。需要放大 embedding 数值,否则规模不一致相加后会丢失信息。 [[BERT]] 中不需要调整

使用 self-attention 相当于处理[[词袋模型]],忽视单词之间位置关系,通过引入 [[Position Representation]] 弥补模型缺陷。

  • [[Positional Encoding/Sinusoidal]]

  • Positional Embedding

    • 将位置转化成 embedding,然后当成参数学习

    • 论文中的实验表明两种方式的效果相差不大

      • 参数数量增加,模型学习难度增大,需要使用更多数据训练

      • 无法解决预测文本长度超过训练文本长度的情况, [[BERT]] 强制文本长度 512

  • 单词 embedding 和对应位置表示直接相加

[[Transformer/why self-attention]]

[[Transformer/train]]


@Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction

[[Abstract]]

  • CTR prediction in real-world business is a difficult machine learning problem with large scale nonlinear sparse data. In this paper, we introduce an industrial strength solution with model named Large Scale Piece-wise Linear Model (LS-PLM). We formulate the learning problem with L1 and L2,1 regularizers, leading to a non-convex and non-smooth optimization problem. Then, we propose a novel algorithm to solve it efficiently, based on directional derivatives and quasi-Newton method. In addition, we design a distributed system which can run on hundreds of machines parallel and provides us with the industrial scalability. LS-PLM model can capture nonlinear patterns from massive sparse data, saving us from heavy feature engineering jobs. Since 2012, LS-PLM has become the main CTR prediction model in Alibaba’s online display advertising system, serving hundreds of millions users every day.

[[Attachments]]

分片线性方式对数据进行拟合,将空间分成多个区域,每个区域使用线性的方式进行拟合,最后的输出变为多个子区域预测值的加权平均。

相当于对多个区域做一个 [[Attention]]

结构与三层神经网络类似

Model

处理大规模稀疏非线性特征

LS-PLM 模型学习数据的非线性特征。

question 为什么 LR 模型不能区分下面的数据,如何区分数据?[[SVM]][[FM]]

p(y=1x)=g(j=1mσ(ujTx)η(wjTx))p(y=1 | x)=g\left(\sum_{j=1}^{m} \sigma\left(u_{j}^{T} x\right) \eta\left(w_{j}^{T} x\right)\right)

u 和 w 都是 d 维向量

m 为划分 region 数量

一般化使用:

p(y=1x)=i=1mexp(uiTx)j=1mexp(ujTx)11+exp(wiTx)p(y=1 | x)=\sum_{i=1}^{m} \frac{\exp \left(u_{i}^{T} x\right)}{\sum_{j=1}^{m} \exp \left(u_{j}^{T} x\right)} \cdot \frac{1}{1+\exp \left(-w_{i}^{T} x\right)}

可以把上面的模型看成是三层神经网络

Regularization

  • argminΘf(Θ)=loss(Θ)+λΘ2,1+βΘ1\arg \min _{\Theta} f(\Theta)=\operatorname{loss}(\Theta)+\lambda\|\Theta\|_{2,1}+\beta\|\Theta\|_{1}

  • L1 和常规一样,保持参数的稀疏性。

  • L2 如下面的公式,对每一个 feature 的参数进行二阶正则,然后累加。最优化的过程中,L2 项越来越小,相当于做特征选择。每一个特征不止一个参数,只有某一个特征的全部参数都为 0 ,代表这个特征是没有用的。

  • Θ2,1=i=1dj=12mθij2\|\Theta\|_{2,1}=\sum_{i=1}^{d} \sqrt{\sum_{j=1}^{2 m} \theta_{i j}^{2}}

  • 正则后的效果:

-w839

@wait 后面如何求解这损失函数以及工程实现待看。

[[Ref]]


@Item2Vec: Neural Item Embedding for Collaborative Filtering

[[Abstract]]

  • Many Collaborative Filtering (CF) algorithms are item-based in the sense that they analyze item-item relations in order to produce item similarities.

  • Recently, several works in the field of Natural Language Processing (NLP) suggested to learn a latent representation of words using neural embedding algorithms. Among them, the Skip-gram with Negative Sampling (SGNS), also known as [[word2vec]], was shown to provide state-of-the-art results on various linguistics tasks.

  • In this paper, we show that item-based CF can be cast in the same framework of neural word embedding.

    • Inspired by SGNS, we describe a method we name item2vec for item-based CF that produces embedding for items in a latent space.

    • The method is capable of inferring item-item relations even when user information is not available.

  • We present experimental results that demonstrate the effectiveness of the item2vec method and show it is competitive with SVD.

[[Attachments]]


@科学研究与论文写作

[[Attachments]]

选题工作步骤

  • 同义词库的构造
    ls-type:: annotation
    hl-page:: 17

  • 检索式的构造
    ls-type:: annotation
    hl-page:: 17

  • 知识库的建立
    ls-type:: annotation
    hl-page:: 17

  • 知识库的更新和完善
    ls-type:: annotation
    hl-page:: 18

[[图片/文字切块-归纳-重组阅读法]]

  • [:span]
    ls-type:: annotation
    hl-page:: 36

  • 1 号文档:形成初步框架

    • 将这些文献中的图片批量地按顺序提取出来到一个文档中
      ls-type:: annotation
      hl-page:: 33

      • 这些图片后期还会做归纳分类,打乱顺序,因此提取图片过程中还要做好索引,以便后期也能知道这些图片是来自什么文献的
        ls-type:: annotation
        hl-page:: 33
    • ,通过浏览这些图片,可以快速了解如下信息:本文做的是什么体系?创新点或者贡献在什么地方 ?研究了哪些内容?采用了哪些研究方法?得到了什么结论?还有哪些值得进一步研究的地方
      ls-type:: annotation
      hl-page:: 33

      • 如果我们来设计实验的话,大致应该如何设计?如果我们来撰写论文的话,应该如何编排图表
        ls-type:: annotation
        hl-page:: 33
  • 2号文档:集中浏览

    • 将同一类型的图片都归纳整合在这个文档中,便于我们迅速对比和浏览同类图片,快速获得感兴趣的信息
      ls-type:: annotation
      hl-page:: 35


@Real-time Personalization using Embeddings for Search Ranking at Airbnb

[[Abstract]]

  • Search Ranking and Recommendations are fundamental problems of crucial interest to major Internet companies, including web search engines, content publishing websites and marketplaces. However, despite sharing some common characteristics a one-size-fitsall solution does not exist in this space. Given a large difference in content that needs to be ranked, personalized and recommended, each marketplace has a somewhat unique challenge. Correspondingly, at Airbnb, a short-term rental marketplace, search and recommendation problems are quite unique, being a two-sided marketplace in which one needs to optimize for host and guest preferences, in a world where a user rarely consumes the same item twice and one listing can accept only one guest for a certain set of dates. In this paper we describe Listing and User Embedding techniques we developed and deployed for purposes of Real-time Personalization in Search Ranking and Similar Listing Recommendations, two channels that drive 99% of conversions. The embedding models were specifically tailored for Airbnb marketplace, and are able to capture guest’s short-term and long-term interests, delivering effective home listing recommendations. We conducted rigorous offline testing of the embedding models, followed by successful online tests before fully deploying them into production.

[[Attachments]]

论文解决问题:

  • 数据稀疏情况下如何进行训练?

    • 稀疏 id 聚类处理
  • 将 user id 和 listing id 聚合成 user type、listing type

  • word2vec 中加入 booked listing 作为 global context

目标函数

image.png

argmaxθ(l,c)Dplog11+evcvl+(l,c)Dnlog11+evcvl+log11+evlvl\underset{\theta}{\operatorname{argmax}} \sum_{(l, c) \in \mathcal{D}_{p}} \log \frac{1}{1+e^{-\mathbf{v}_{c}^{\prime} \mathbf{v}_{l}}}+\sum_{(l, c) \in \mathcal{D}_{n}} \log \frac{1}{1+e^{\mathbf{v}_{c}^{\prime} \mathbf{v}_{l}}}+\log \frac{1}{1+e^{-\mathbf{v}_{l}^{\prime} \mathbf{v}_{l}}}

booked listing 是正样本,所以有一个负号。由于只有一项,所以没有 sigma 符号。

原始负采样是在全体样本中随机选择,业务特殊性,在正样本同一市场的样本中负采样。更好能发现同一市场中内部 listing 的差异。

new listing 通过附近 3 个同类型、相似价格的 listing embedding 进行平均。

word2vec 方法本来是无监督的,通过引入 booked listing 以及 reject 信息传递部分监督信息

利用 booked 数据训练时,文章中提到 user type 和 listing type 要在同一个空间,不知道为什么下面要有两个公式,以及 c 的含义是什么?

argmaxθ(ut,c)Dbooklog11+evcvut[[]]+(ut,c)Dneglog11+evcvut[[]]\underset{\theta}{\operatorname{argmax}} \sum_{\left(u_{t}, c\right) \in \mathcal{D}_{b o o k}} \log \frac{1}{1+e^{-v_{c}^{\prime} v_{u_{t[[}}}}]]+\sum_{\left(u_{t}, c\right) \in \mathcal{D}_{n e g}} \log \frac{1}{1+e^{v_{c}^{\prime} v_{u_{t[[}}}}]]

argmaxθ(lt,c)Dbooklog11+evcvlt[[]]+(lt,c)Dneglog11+evcvlt[[]]\underset{\theta}{\operatorname{argmax}} \sum_{\left(l_{t}, c\right) \in \mathcal{D}_{b o o k}} \log \frac{1}{1+e^{-\mathrm{v}_{c}^{\prime} \mathrm{v}_{l_{t[[}}}}]]+\sum_{\left(l_{t}, c\right) \in \mathcal{D}_{\text {neg}}} \log \frac{1}{1+e^{v_{c}^{\prime} \mathrm{v}_{l_{t[[}}}}]]

embedding 之间直接对比需要在相同的向量空间。根据上面的计算可以生成一个特征 UserTypeListingTypeSim。

在如何在实时模型中引入 embedding 特征:根据一些规则收集一些 listing,计算这些 listing embedding 的平均值,再和当前排序的 lisitng 计算一个相似度,做为一个特征放到模型中。

如何评估按上面方法生成的 emb sim 特征重要性?利用 GBDT?

[[冷启动]] listing embeddings

  • 找方圆 10 英里之内的 3 个最相似的 listing,取 listing embedding 的平均

使用 Embedding 方法要考虑的问题:

    1. 希望Embedding表达什么,即选择哪一种方式构建语料
    1. 如何让Embedding向量学到东西
    1. 如何评估向量的效果
    1. 线上如何使用