2025年1月

在与大语言模型交互的时候,如果模型给出了错误的结论,不要着急否定大模型的能力,我们应当尝试重新构建查询,请求模型在提供它的最终答案之前进行一系列相关的推理。也就是说,如果给模型一个在短时间或用少量文字无法完成的任务,它可能会给出不那么完美甚至是错误的回答。其实这种情况对人类来说也是存在的。一个人解答复杂的数学问题时,如果没有充足时间进行计算,他们通常也不能给出正确的答案。因此,如果模型给出了错误的结论,我们可以指示模型花更多时间进行思考,以便最终得出令人满意的结果。
策略1:指定完成任务所需要的步骤
例:
针对以下由三个反引号包含的寓言,执行以下操作:
1.概括这则寓言的寓意
2.寓意给打工人的启示
3.寓意给学生的启示
```一只乌鸦坐在树上,整天无所事事。一只小兔子看见乌鸦,就问:“我能像你一样整天坐在那里,什么事也不干吗?”乌鸦答道:“当然可以啦,为什么不呢?”于是,兔子便坐在树下开始休息。突然,一只狼出现了,狼跳向兔子……抓住兔子并把它给吃了。```

例:
针对以下由三个反引号包含的寓言,使用以下格式完成<>中的要求:
1.寓意:<概括这则寓言的寓意>
2.相反故事:<编写一则100字左右的寓言表达相反的寓意>
3.翻译:<将寓意翻译成英语>
```一只乌鸦坐在树上,整天无所事事。一只小兔子看见乌鸦,就问:“我能像你一样整天坐在那里,什么事也不干吗?”乌鸦答道:“当然可以啦,为什么不呢?”于是,兔子便坐在树下开始休息。突然,一只狼出现了,狼跳向兔子……抓住兔子并把它给吃了。```

策略2:要求模型先给出自己的解法,然后再下结论
某些情况下,如果直接让模型给出结论,这个匆忙的结果可能是错误的。此时,明确要求模型先思考解决方案,然后再判断结论,通常模型会给出更合理的结果。
例:
以下是一个问题及某人的解答,请判断该人的答案是否正确。
问题:
某人在银行开立一年期定期存款10万元,年息1%。假设用户在前两年末到期时取出当年利息的一半,然后继续定存一年且年息不变,直至存满3年后全部取出,此时用户取出的金额是多少?
解:
第一年本金100000元,到期利息:100000*0.01=1000元,取500元
第二年本金100000+500=100500元,到期利息:100500*0.01=1005元
第三年本金100500+502.5=101002.5元,到期利息:1010.025元
故第三年到期全部取出的金额:101002.5+1010.025=102,012.525元

大模型迅速给出了自己的判断并且给出了它认为错误的理由,只可惜它并没有意识到它自己错了。下面我们使用本策略,让大模型先自己尝试解决问题,再进行判断。
例:
以下是一个问题及某人的解答,请完成以下要求:
1.先分析并解答计算这个问题,请特别注意存款人前两年取出了利息中的一半,而第三年全部取出。
2.尝试解释这个人解答中的式子的含义。
3.判断该人的答案是否正确。

问题:
某人在银行开立一年期定期存款10万元,年息1%。假设用户在前两年末到期时取出当年利息的一半,然后继续定存一年且年息不变,直至存满3年后全部取出,此时用户取出的金额是多少?
解:
第一年本金100000元,到期利息:100000*0.01=1000元,取500元
第二年本金100000+500=100500元,到期利息:100500*0.01=1005元
第三年本金100500+502.5=101002.5元,到期利息:1010.025元
故第三年到期全部取出的金额:101002.5+1010.025=102,012.525元

如果你在阅读这篇文章的时候,同时将上述示例输入大模型进行验证,你将发现你得到的结果也许不太一样。事实上,在不同的模型中,或者对同一模型在不同时间来运行上述示例结果都不太会一样。但是这里的提及的技巧总体而言还是对我们使用语言大模型有帮助的。

来源:晓飞的算法工程笔记 公众号,转载请注明出处

论文: A Simple Image Segmentation Framework via In-Context Examples

创新点


  • 探索了通用的分割模型,发现现有方法在上下文分割中面临任务模糊性的问题,因为并非所有的上下文示例都能准确传达任务信息。
  • 提出了一个利用上下文示例的简单图像分割框架
    SINE

    Segmentation framework via IN-context Examples
    ),利用了一个
    Transformer
    编码-解码结构,其中编码器提供高质量的图像表示,解码器则被设计为生成多个任务特定的输出掩码,以有效消除任务模糊性。
  • SINE
    引入了一个上下文交互模块,以补充上下文信息,并在目标图像与上下文示例之间产生关联,以及一个匹配
    Transformer
    ,使用固定匹配和匈牙利算法消除不同任务之间的差异。
  • 完善了当前的上下文图像分割评估系统,实验结果表明,
    SINE
    可以处理广泛的分割任务,包括少量样本的语义分割、少量样本的实例分割和视频目标分割。

内容概述


图像分割涉及在像素级别上定位和组织概念,比如语义分割、实例分割、全景分割、前景分割和交互分割。然而,现有的大多数分割方法都是针对特定任务量身定做的,无法应用于其他任务。

最近一些工作探索了通用分割模型,通过上下文学习解决多样且无限的分割任务。上下文分割模型需要理解上下文示例传达的任务和内容信息,并在目标图像上分割相关概念,但并不是所有的上下文示例都能准确传达任务信息。例如当提供一个特定个体的照片,是仅限于个体本身、涵盖所有人的实例分割,还是集中于语义分割?模糊的上下文示例可能使传统的上下文分割模型难以清晰地定义不同任务之间的边界,从而导致不期望的输出。

为了解决这个问题,论文提出了基于上下文示例的简单图像分割框架
SINE

Segmentation framework via IN-context Examples
)。受到
SAM
模型的启发,
SINE
预测针对不同复杂度任务定制的多个输出掩码。这些任务包括相同物体、实例到整体语义概念。
SINE
统一了现有的各种粒度的分割任务,旨在实现更广泛的任务泛化。


SegGPT
相比,
SINE
能够在可训练参数更少的情况下有效地解决上下文分割中的任务模糊性问题,而
SegGPT
仅输出语义分割结果。此外,论文进一步将少样本实例分割引入当前的评估系统,以便全面评估这些模型。

SINE


SINE
是一个基于查询的分割模型,遵循
DETR

Mask2Former
的设计。使用相同对象(
ID
)查询
\(\textbf{q}_{id}\)
来识别和定位目标图像中与参考图像中具有相同对应关系的对象,使用可学习的实例查询
\(\textbf{q}_{ins} \in \mathbb{R}^{S \times C}\)
来识别和定位目标图像中与参考图像具有相同语义标签的对象。

SINE
基于经典的
Transformer
结构,引入了一些针对上下文分割任务的有效设计,包括一个冻结的预训练图像编码器、一个上下文交互模块和一个轻量级匹配
Transformer
(
M-Former
) 解码器。

上下文交互

上下文交互的目的是补充上下文信息,并在参考图像特征和目标图像特征之间产生关联。

  • 掩码池化

为每个掩码分配不同的
ID
标签,将参考掩码
\(\textbf{m}_r\)
转换为
ID
掩码
\(\textbf{m}_{id} \in \mathbb{R}^{N \times H \times W}\)
,通过将具有相同类别标签的掩码合并来得到语义掩码
\(\textbf{m}_{sem} \in \mathbb{R}^{M \times H \times W}\)
,其中
\(N\)

\(M\)
分别是
ID
掩码和语义掩码的数量。

然后,使用这些掩码对参考特征
\(\textbf{F}_r\)
进行池化,获得提
ID
标记
\(\textbf{t}_{id} \in \mathbb{R}^{N \times C}\)
和语义标记
\(\textbf{t}_{sem} \in \mathbb{R}^{M \times C}\)

  • 上下文融合模块

上下文融合模块该模块是一个
Transformer
块,包括自注意力机制、交叉注意力机制和前馈网络,实现参考特征和目标特征之间的上下文关联:

\[\begin{equation}
\begin{split}
\left<\textbf{q}_{id}, \textbf{p}_{sem}, \textbf{F}_t^{'}\right> = InContextFusion\left(\textbf{t}_{id}, \textbf{t}_{sem}, \textbf{F}_{t} ;\theta \right),
\end{split}
\end{equation}
\]

这些标记 (
\(\textbf{t}_{id}\)

\(\textbf{t}_{sem}\)
) 和目标特征 (
\(\textbf{F}_{t}\)
) 通过这个共享模块进行融合,在交叉注意力中它们彼此作为键和值,从而可以获得增强后的目标特征
\(\textbf{F}_t^{'}\)

ID
查询
\(\textbf{q}_{id}\)
和语义原型
\(\textbf{p}_{sem}\)

匹配
Transformer

为了有效地进行上下文分割并消除任务模糊性,
M-Former
实现了一个双路径的
Transformer
解码器,共享自注意力层。一路径用于与查询(
\(\textbf{q}_{id}\)

\(\textbf{q}_{ins}\)
)交互,提取与目标图像中的上下文示例相关的特征。第二路径用于增强语义原型
\(\textbf{p}_{sem}\)
以实现更准确的匹配。这两条路径共享自注意力层,以便将语义从
\(\textbf{p}_{sem}\)
分配给
\(\textbf{q}_{ins}\)

M-Former
共有 N 个块,整体的过程如下:

\[\begin{equation}
\begin{split}
\left<\textbf{q}_{id}^l, \textbf{q}_{ins}^l, \textbf{p}_{sem}^l\right> = MFormer_l\left(\textbf{q}_{id}^{l-1}, \textbf{q}_{ins}^{l-1}, \textbf{p}_{sem}^{l-1} ; \theta^l, \textbf{F}_t^{'} \right),
\end{split}
\end{equation}
\]

对于实例分割,使用更新后的语义原型
\(\textbf{p}_{sem}\)
作为分类器,并让
\(\hat{\textbf{y}}_{ins}=\{\hat{y}_{ins}^i\}_{i=1}^S\)
表示
\(S\)
个实例预测的集合。使用匈牙利损失来学习
SINE
,通过计算预测
\(\hat{y}_{ins}^i\)

GT
\(y^j\)
之间的分配成本以解决匹配问题,即
\(-p_i(c^j)+\mathcal{L}_\text{mask}(\hat{m}_{ins}^i,m^j)\)
,其中
\((c^j, m^j)\)

GT
对象的类别和掩码,
\(c^j\)
可能为
\(\varnothing\)

\(p_i(c^j)\)
是第
\(i\)
个实例查询对应类别
\(c^j\)
的概率,
\(\hat{m}_{ins}^i\)
表示其预测的掩码。
\(\mathcal{L}_\text{mask}\)
是一种二元掩码损失和
Dice
损失:

\[\begin{equation}
\begin{split}
\mathcal{L}_{\text{Hungarian}}(\hat{\textbf{y}}_{ins}, \textbf{y}) = \sum\nolimits_{j=1}^S \left[-\log p_{\sigma(j)}(c^j)
+ \mathbb{1}_{c^j\neq\varnothing} \mathcal{L}_{\text{mask}}(\hat{m}^{\sigma(j)}_{ins},m^j) \right],
\end{split}
\end{equation}
\]

其中
\(\sigma(j)\)
表示二分匹配的结果索引。

为了赋予
SINE
预测同一对象的能力,使用图像中同一实例的不同裁剪视图作为参考-目标图像对。设
\(\hat{\textbf{y}}_{id}=\{\hat{y}_{id}^i\}_{i=1}^N\)
表示
\(N\)

ID
预测的集合。

由于参考
ID
和目标
ID
之间的关系是固定的且可以准确确定,可以在预测和
GT
之间执行固定匹配,损失可以写为:

\[\begin{equation}
\begin{split}
\mathcal{L}_{\text{ID}}(\hat{\textbf{y}}_{id}, \textbf{y}) = \sum\nolimits_{i=1}^N \left[-\log p_i(c^i)
+ \mathbb{1}_{c^i\neq\varnothing} \mathcal{L}_{\text{mask}}(\hat{m}^i_{id},m^i) \right],
\end{split}
\end{equation}
\]

其中
\((c^i, m^i)\)

GT
的类别和掩码,
\(c^i \in \{1, \varnothing\}\)

\(c^i=1\)
表示一个对象同时出现在参考图像和目标图像中。总损失为
\(\mathcal{L}=\mathcal{L}_{\text{Hungarian}}+\mathcal{L}_{\text{ID}}\)

一旦训练完成,
SINE
的全部能力在推理过程中得以释放,能够解决上下文示例中的模糊性并为不同的分割任务输出预测。

主要实验




如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

前言

看着朋友圈大家对2024的总结以及对2025的期待。

有人说2024年他一共走过了10几个省份,有人说2024年她减肥了十几斤,也有人说他学会了一项新的技能。

也有人说2024年最后一天在发烧中度过,也有人说2024年她真的特别难,走得好累,但仍对新的一年抱有期待。

而在2024年最后一天的晚上,我坐在电脑前,仔细回想这一年发生的事情,竟然有点模糊,好像我的2024不存在一样,犹如2023、2022年我已记不起来了。于是乎我紧忙翻阅手机里面的相册,试图回忆起我的2024。

最后用
平淡与新鲜
两个关键字来总结我的2024。

平淡

是的,我第一想法是平淡,这一年碌碌无为,什么也没做,又苟了一年。

这一年我的工作平平淡淡,没有轰轰烈烈的跳槽、裁员、晋升的变动。甚至于我每天一睁开眼,我就知道我今天90%的生活轨迹,剩下10%可能是今天吃什么、点什么外卖。

这一年我的生活平平淡淡,上班下班过周末,周末偶尔会去爬山,节假日依旧会和女朋友出去转转旅旅游。在我印象中好像就想不起其他的事情了。

罗翔老师说过:“
只有当你真正的体会到了痛苦,你才会真正的知道,平凡的幸福,有多么的幸福,你才会珍惜这些平凡的幸福
”。所以平淡、平凡我觉得挺好的,使我非常的安心。

新鲜

  • 4月,去看了线下开心麻花剧场,现在仍然能感受到当时的喜悦

  • 5月,去了日本。第一次出国体验,第一次感受不一样的文化民族,第一次感受到了电视中的日本,才能深刻体会到中日之间的优劣势

  • 7月,去看了五月天的演唱会。人生中第一次去现场看演唱会,看到了听歌软件里面的五月天,看到了所谓的宝宝巴士,听到了最好听的《玫瑰少年》,那一份感动,现在依旧难忘

  • 10月,去了上海,去了洛阳,看了东方明珠,爬了老君山。洛阳的牛肉汤,我现在还记得有多好喝,还想在喝一碗,我真的太喜欢喝了

还有挺多,不少的,一些月份的惊喜和新鲜感。这么细数下来,2024年,还算精彩,还有我值得回忆,感动的东西。

写作 & 视频

  • 2024年在各平台持续输出技术文章13篇,其中有几篇阅读量,star数都比较高,还是有一丢丢的成就感的

  • 视频是我在2024年的一个全新尝试,希望能扩大自己影响力,同时也输出自己的一些观点

  • 2024年总共输出14个技术视频,主要平台是抖音&小红书,粉丝量和点赞量等数据都不尽人如意,明年也许会转换风格,希望2025有所突破

其他事项

  • 心心念念,终于把想做的小程序给做起来了。从服务器的购买,域名购买,ICP备案审核,到小程序上线。一个人搞下来,还是有点难度,还好最后终于上线了,但数据量一般般,不过还好。具体内容我就不放了,怕违规,想体验的可以搜同名

  • 公众号同步也开始维护了。而且很开心的一点是,的确可以帮助到有需要的人。还有人写邮件感谢,内心还是有点成就感的

遗憾的事情

很多想做的事情,没有做,或者半途而废了,或者不了了之了,总之没有坚持下去

  • 连载设计模式,这个做了几期之后就没有做了
  • 和女朋友的事情还是没有着落
  • 看书还是看的比较少,今年感觉也就看了1-2本书,真的太少了
  • 运动,太少了
  • 股票,今年这么好的行情,竟然以亏损收场,无话可说
  • 自律,还是不够自律,偷懒。刷短视频刷太多了,打游戏还好

2025年计划

还是沿用2023年的内容。

其实我个人不太喜欢做中期计划。尤其未来一年的计划,大多数不靠谱,或者大多数完不成。我希望定周计划、月计划,可衡量的那种。至于年计划有那么一个大概就行,不具体。
计划就是2024年遗憾的事情,希望明年遗憾的事情里面没有这几项(恳求)

写着写着,不知不觉已经1点多了,最后还是用最朴素的语言祝福大家,新一年要快乐,要开心

元旦将近,显然又是一年岁末。
同事开始讨论中午吃什么,以及晚上的跨年计划之类的大问题。
我开始努力回想自己的2024,秉承着毕业以来每年写个人总结的习惯,
也因为近年来自己的节奏和生活越来越快,只能在年终的节点停下来回顾下自己的历程。

前言

我打开了自己的相册,下面且慢慢说来。

一些流水账

因为时间线比较零散,记忆已经是碎片化的形状,流水账式的简单记录下一些历程。

  • 24年春节的时候,跟爸妈回老家走亲访友,去了一趟武夷山。

  • 回来之后开工大吉,然后就开始慢慢进入紧张的工作中。

  • 6月份的时候,以百度PPDE的身份受邀参加了WAVE SUMMIT深度学习峰会,去北京认识了蛮多小伙伴。

  • 7月份,在上海参加世界人工智能大会,也算是开阔了视野跟思路吧。

  • 8月份和11月份,组织了两次团建活动

工作小结

还记得23年底跨入24年的晚上,跟家人去看了电影《年会不能停》,这是一个关于打工人在职场的电影,在电影中,为了让工作显得更有价值,众和集团的员工用“对齐颗粒度”“形成闭环”“底层逻辑”等黑话将工作内容进行包装,公司用免费食堂、健身房、休息室鼓励员工“自愿”加班,领导说话含糊让下属揣摩背锅,中层内斗,底层和外包员工干活。这些赤裸裸的细节展示让我们看到很多工作和生活中的影子。

不管这个电影反应了多少真实,但毫无疑问的是,整个行业环境确实是在可见的变差。
“广进计划”的真实情况是:

  • 房地产行业,市值最高的5家公司在2023年的员工数量都减少。保利地产是中国市值最大的开发商,去年裁员16.3%,即11000人。总部位于上海的房地产公司绿地控股,员工人数也减少了14.5%,到2023年底将减少至近6万人。
  • 互联网行业作为传统就业大户,在削减成本的压力下,也出现了类似的趋势。
  • 阿里巴巴在2023财年裁员12.8%,即2万人,而上一财年裁员7%。根据阿里巴巴的年度报告,去年是10年来裁员最多的一年。
  • 腾讯的员工数量在过去一年减少了2.8%,即约3000人,而且裁员步伐并未停止,2024年第一季度进一步裁员630人。
  • 今年早些时候,字节跳动、小米、京东、快手科技、滴滴出行、哔哩哔哩和微博都宣布了裁员计划。
  • 在金融业,由于大多数龙头企业都是国有控股,经纪人和基金大多削减了薪酬和福利,而不是大规模裁员。
  • ... ...

越来越多的"广进计划"让我们意识到,其实更多时候,不是工作需要我们,而是我们需要工作。

回归工作,今年在工作上的表现显得有点中规中矩,其实没有太多亮眼和突出的地方,但为了深刻认识其间,还是总结回顾为以下:

  • 1.业务侧,算法迭代获取的训练数据较少,且与实际需求跟识别场景还不够匹配,为此写了一整套专门针对多摄像头点位和场景下的数据挖掘正负样本的pipeline,并用这项技术申请了专利。
  • 2.数据侧,数据类别呈现长尾分布,不平衡不充分问题明显,多数据集在多人协同标注下的质量有一定相互干扰。于是对于多数据集提标并开展了多轮的清洗和过滤,同时对多数据集作数据消融实验以及数据蒸馏。
  • 3.项目验收上,实际要求的指标精度与评估时的预期精度高出一些量级,fpr需要降低e-5,才符合验收标准。(整体对接项目,这种拆解目标的、交叉验证结论的sense还是要多注意培养。)
  • 4.另外一方面,为了评估更高精度的模型,原始的测试集已经不足以评估e-5级别的精度要求了;于是再次做拉流-数据挖掘-标注等一系列流程,重新按点位数跟时间范围构建了一个16w规模的测试集,从而通过评估fp数量以及整体recall跟precision指标来评估模型是否可用,能否上线更新。
  • 5.算法侧,组里引入了新的平台,在这个平台上通过sdk跟其他工具封装评估了一些较为前沿的sota模型,例如gounding-dino、yolo-world、owl-vit、Florence等,也调研测试了外部一些友商的垂类微调模型,例如damo-yolo、pp-human、pp-vehicle等,通过在业务固定测试集上的指标从而辅助选型和分析方案。
  • 6.由于之前有维护mllm benckmark榜单的原因,开始参与写一个llava相关的omni模型,重新看了一遍llava的论文以及逐行看了一遍相关仓库的代码,虽然后来因为资源不足没有接着开展,但也还算是学到了不少东西,也开始思考从纯CV算法,转换到MLLM或VLM的研究的可行路线。
  • ... ...
    如上所见,做的事情并不多,精力也开始慢慢分散到一些其他方面。

左耳听风的感悟

今年看完了耗子叔的《左耳听风》,有着不少共鸣与感悟,这是一本类似于《黑客与画家》那种作者的一些感悟的文集。
尽管是文集,但仍然体现了三个完整的主线,这对于程序员职业发展生涯都起到至关重要的重要。

  • 1.个人的三观和程序员的职业道德
  • 2.技术人员的自我成长(学习,思维,自我管理,技术知识)
  • 3.技术管理(领导力,团队管理,绩效,工程师文化)

关于三观,豆瓣上有一个书评总结的不错:“对外不迎合他人,对内不放纵自己。芝兰生于幽谷,不以无人而不芳,你个人的价值不要简单的以世俗的衡量标准去评价,而是你如何更好的看待你自己,并能够长期坚持和实践,这才是最重要的。”

以这本书的视角来审视自己的成长,今年开始学习和研究大语言模型LLM踩了不少坑,在实践过程中得到了不少的启发。假设我们的大脑是一个高度建模且计算高效的大语言模型,为了获取更多的知识和掌握技术,或者说想要升级自己的“智能”系统,应该学习什么东西,以及如何更好的学习呢?

根据模型训练的经验以及scaling law的规律,我们可以知道数据量、参数规模以及计算量是决定大模型智能涌现的基础。这个经验迁移套到人类身上,又有所不同,因为大脑已经是所有器官消耗能量最大的了,而且我们的阅读速度和记忆力也有限,个人的智商差异分布并不大,因此如何选择好的数据("书/论文"、“电影”、“音乐”等一切可以被大脑抽象为“知识”的东西)就更为关键了,这也启发我们,不要用大脑去反复思考一些“负能量”的东西,从而进一步内耗,以实现“LLM大脑”的高效运转。

同时,为了进一步获得更前沿和更有用的“知识”,我们应该将行业内的领域专家、编程高手以及垂类的LLM作为老师,来“蒸馏”出“知识”从而训练自己的“经验模型”;另一方面还可以将前者视为“预训练模型”,我们只需要将个人的经验以及其他外部知识,在这个巨人("预训练模型")的肩膀上进一步来“微调”出自己的“经验模型”就足以解决大部分工作和生活上所面对的问题了。此外,我们需要整理出一个知识体系的“超级外脑”来作为一个“知识库”(RAG),从而来增强或辅助自己的思考过程。
最后,我想也许未来个体跟个体之间的差异,也许就在于自己独特的思维链(“CoT”)过程,以及post pretraining的过程;价值观上的“奖励模型”偏好排序,人生观上的“Alignment”对齐,还有去观世界的“人生遍历”,种种以上,你训出来的一个“经验模型”不一定会让你成为一个“超级个人”,但我想一定也会是独特且独立的一个芦苇了。

既然对上面的过程进行类别推理的展开,这里还想单独来深刻一下“CoT”的过程,在以前,学校学习的学生阶段,老师教给我们的“知识”,都是以填鸭式的“Q-A”问答对的方式进行学习的,一切都是灌输为主,为了得高分而进行训练;你只需要按老师教的做,缺少了最本质的自我思考。自我思考的缺少自然导致难以形成独立人格,自然也就很难进行独立思考,从而去真正区分“事实”与“观点”,“别人的观点”和“自己的想法”,最后变成人云亦云随波逐流。

一个有竞争力的程序员的核心能力,就是工作多年后快速学习新领域新技术的能力,是强大的独立分析和解决问题的能力。正如耗子叔书里面提到的独立思考是前提,
通过独立思考和长期的学习实践搭建自己的知识体系,构建自己的经验方法论。这个才是你最根本的护城河。

也正如书里面谈到的五步思考法。

  1. 考证信息数据的正确性
  2. 处理集合和其包含关系
  3. 处理逻辑因果关系
  4. 找到可信的基准线
  5. 开启更加深入和高维度的思考

考证数据的过程需要实事求是,因果关系需要经过逻辑推理,基准线是不盲目造车而是站在巨人的肩膀上,而周期性复盘是深入思考找寻本质和通用方法论的关键。

一些焦虑

技术焦虑——“让子弹再飞一会”

我们处在一个技术高速发展,知识技术爆炸的时代。
而AI作为所谓新质生产力的代表,其更新迭代的速度尤为明显。
常常体会与观察到的一点现象是,研究人员看论文的速度还跟不上其他研究团队;
某一项新工作,刚刚看完论文有一个初步的想法开始想做实验验证思路的时候,其他研究者就啪的一下把论文和GitHub甩在脸上,又得重新更换思路和方向。

历来我是一个对于未来不太乐观的人,于是总是在大雨将至前提早开始准备雨具,因为淋雨的滋味真的不好受,在雨中奔跑更是如此。但受这样因素的影响,决策和思考时难免会显得有些过于杞人忧天。
另一方面,因为业务从事的方向,与现在主流的方向及热点存在一定的距离,工作中自然是得以支撑业务为前提,再开展其他工作,这又加大了信息上的滞后性和技术焦虑。
举例来说就是,开集检测的sota是否会更进一步的替代或取缔传统的视觉相关算法。
以clip为代表的zero-shot算法是否会完全取代传统的图像分类,从而联想到可能会有的“广进计划”。
有时也会想,这种焦虑是否源于学生时代那种考试下的竞争心态,但客观地说,在新技术出现的时候,作为从业人员跟不上进度的状态,以及眼看别人写论文发成果的心态总还是不好受的。

其实再进一步想想,过多的焦虑也是不必要的,因为真理无穷,它永远就在那里等着你,像是一座山。晚一阵子攀爬并不会有太大的影响,只要摸清楚爬上的路线,找准方向,终有爬上山的一天。

出于这种心态影响下,这一年更多的是在追赶和查漏补缺,因为之前的背景是纯CV的,与LLM的范式和方法有着不小的差异,同时因为没有去读研,经历专业的学术训练和思考,因此出现了一个潜在的问题是,工程实践能力强于对于模型和算法本身的认识思考,这种短板也限制了职业跟工作上的一些突破,于是自然的,技术焦虑转变成了学业焦虑。

学业焦虑——“学海无涯苦作舟”

本质上我其实还是一个追求完美的精英主义者,或者说是一个慕强的人。 我总觉得,一个所谓精英应该按照设想的既定的路线和模版去成长,如果一步走错了或者哪里出现了缺陷,就会显得不那么完美。这些一点一点的“不完美”积累在一起,又促使我小心翼翼的藏着自己的自卑,然后目光看向更高更远的地方,从而见贤思齐。

我知道这样形容或许会显得有些矫情,但对于现在从事的算法应用和研究的工作来说,研究生是最基本的入场券,虽然侥幸入局,倘若一直裹足不前的话,在未来终归还是会陷入到35-40年龄段的困境,不如就从现在开始计划和破局。

怀着这种潜在的焦虑,一直到今年秋天的时候,终于开始下定决心去申请了人大在职硕士的课程班学习,于是就开始了紧凑的白天上班,晚上自习,周末上课的周期性重复,虽然忙碌且疲惫,眼睛里常带着血丝,也还算是有一些收获。

这个过程,形容起来大概就是怀着空杯心态,打破自己,突破固有认识和经验,最后重塑金身吧。
就像史蒂芬周,只有做出了那碗“黯然销魂饭”才能体会到怎样才是一个真正的“食神”。

工作之外的探索

  • 今年下半年还开始接触到MetaGPT跟Agently,开始接触到了agent智能体相关的研究。
    在跟chengling聊过了两次之后,开始深度参与mgx的关于rm+self-play方向的工作。
  • 开始学习和研究mllm多模态大模型,有一些idea还在筹备和整理收集数据中;
  • 开始在公司编写一些技术专利,争取明年或者未来可以发一些论文吧。

关于开源

在探索和实践的过程中,用开源的方式来记录了一些节点:
GitHub上commit的仓库主要如下:

个人精力确实有限,维护更新频率下半年开始慢慢降低,希望25年可以多分配一些吧。

时间轴上的参照物

人生一串,不能只看自己,一些老友是不错的参照物。
下半年的时候,坐动车回老家参加了高中同学兼舍友的婚礼,见到了不少高中的同学,毕业十年未见, 有些人已经变得不太像从前高中时候的样子,有些人也还在坚守着最后一些不变的东西, 包括我自己也是同样,褪去了年少时的青涩,外表可见的是多出来脸上和肚子上的肉, 但无论如何,大家都在经历成长和改变。虽然没有刻意去比较什么,但多看看别人的好的人生状态,来作为调整自我的一个借鉴总是有益处的。

展望与计划

还有一些,关于未来的展望,我的自驱力可能更多来自于想要做一些事情的决心吧。

上次跟朋友开玩笑说自己是一个i人,这个i是idea的i。 我总是希望,可以通过自己的所学和所长,来创造或者改变一些事情。 也不是为了单纯证明什么,只是享受做成一件很难的事情的成就感, 虽然没有疯狂到认为技术可以改变事情,但就像耗子叔说的,技术本身是有其社会影响力的,掌握技术的人也能够拥有其影响力。

为了实现自己的想法和目标,需要掌握和学习更多的东西。
从各种网络嗅探到的资源收集整理了一大堆,然后用通义千问的音视频解析来整理markdown笔记与ppt方便快速自学,未来可能会慢慢整理成自己的知识体系或笔记,也算是一个预告吧。

总之,2024已经过去。
2025新的一年,希望可以更加精进。
对于自己热爱的事业更加笃定前行,同时兼顾好工作与生活。
做一些更有趣和有意义的事情。
成为一个更有趣的人。
以上。
写于厦门2024.12.31。

在与大语言模型对话时,应该提供尽可能清晰和具体的指令来表达希望模型执行的操作,这将有助于模型给出接近你所期待的输出,并降低得到无关或不正确回复的可能性。但需要注意的是,编写清晰的指令不意味着编写简短的指令,事实上,更长的提示实际上更清晰且提供了更多的上下文,这会使得大语言模型输出更详细更相关的内容。
本文介绍了编写清晰、具体指令的几个策略。以下所有示例的实测,均使用文新大模型3.5。
策略1:使用分隔符清晰地表示输入的不同部分
通常指令中会包含表达用户目的“指令”本身及“指令”所在处理的“内容”,此时可以采用分隔符来标识文字的不同部分,以清晰分隔“指令”与“内容”。一般使用的分隔符可以是:```,"",<>,
,<\tag>等,其选用原则是避免与“内容”中使用到的符号相同。
例:
请将以下由'''包含的内容总结成一句话。
'''为什么年度计划都没有用?为什么年度目标总是无法实现? 在很多人又一次开始循环,制定新年计划,然后到年底对自己失望之前, 我想提醒你,绝大多数人的年度计划是没有用的。 问题在哪里? 绝大多数人的计划和目标,都是模糊的,泛泛的,没有操作意义的,比如,我想赚钱,我想提高英语,我想减肥,我想创业。。。 结果呢? 没有什么结果。 要么只是简单尝试几下就偃旗息鼓了。 要么根本没有任何行动。   如果没有一系列有系统、有策略的行动,所有的梦想、所有的目标、所有的计划,都只是空想,必然会失败。 我们会焦虑,信心受打击,放弃目标,怀疑自己。   那么,为什么新年之际,大家都还这么喜欢做规划、做计划、定目标呢? 因为人人都希望有新的开始,都希望有更好的变化。 新年是表达这样的愿望最好的时机。 这是心理学中很常见的现象,人人都喜欢“重新开始”。 在每一年的开始,人们都会有强烈的愿望,感受到鼓舞,希望给一次机会。 我们把这个,叫做“一月的动力”! 一月的动力是真实的,不过,如果你的目标无法做到SMART原则:具体明确、可衡量、有现实可能性、有时间限制。。。那么,到二月份、三月份,现实就会给你扇一个大耳刮子。 事实上,任何值得奋斗的目标,都需要有足够长的时间去努力、争取。 我们也用新年的机会,来回顾自己的重大成绩,并做新目标的展望, 新年是最好的机会。'''

策略2:要求一个结构化的输出
如果你期待大模型的输出是结构化的形式,可以要求大模型直接输出标准格式化文本,比如Json、HTML 等格式,以便你可以清晰分辨出输出的各个部分,甚至可以复制后直接在你的文本或代码中使用。
例:
请生成包括类别、名称、作用和适用人群的五个虚构化妆品清单,并以 JSON 格式提供,其中包含以下键:类别、名称、作用、适用人群。

策略3:要求模型检查是否满足条件
有时候任务做出的假设可能是不成立的,此时我们可以告诉模型先检查假设,如果假设不成立,指示模型停止执行。我们还可以考虑潜在的边缘情况以及模型应该如何处理它们,以避免意外的错误或结果。
例:
您将获得由三个单引号括起来的文本。如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:

第一步 - ...
第二步 - …

第N步 - …

如果文本中不包含一系列的指令,则直接写“未提供步骤”。
'''五花肉切成均匀的方块。入开水中滚一下,捞出控干水分。把铁锅烧热,下入控干水的五花肉,用中火翻炒,炒出的油取出。待油基本控干,肉面呈黄色,下入冰糖,蒜姜、八角、切碎的红椒继续翻炒。待冰糖基本炒化,锅想冒烟之前,加入没过肉的开水炖。十分钟后转小火,加少许盐,炖至汤汁基本收干,开锅翻炒几下,表面色泽呈金黄,锅内吱吱拉拉作响,这时即刻出锅。'''

例:
您将获得由三个单引号括起来的文本。如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:

第一步 - ...
第二步 - …

第N步 - …

如果文本中不包含一系列的指令,则直接写“未提供步骤”。
''2024年元旦假期,全国文化和旅游市场平稳有序。经文化和旅游部数据中心测算,元旦假期3天,全国国内旅游出游1.35亿人次,同比增长155.3%;实现国内旅游收入797.3亿元,同比增长200.7%。'''

策略4:提供少量示例
即在要求模型执行实际任务之前,提供给它少量成功执行任务的示例。这使得大模型能够尽量按照示例的形式或风格回复你的问题。
例:
请以给出的对话风格继续回答问题。
<问>: 什么是耐心细致?
<答>: 做事耐心细致就像是一只蜜蜂采蜜。蜜蜂在采蜜的过程中,需要不断地飞到花朵上,用自己的嘴巴吸取花蜜,然后再飞到下一朵花上。这个过程需要非常耐心和细致,否则就无法采到足够的花蜜。同样地,做事也需要我们耐心地去完成每一个步骤,才能取得好的成果。
<问>: 什么是坚韧不拔?