Hands-On Large Language Models 阅读小记
书名:Hands-On Large Language Models:Language Understanding and Generation 作者:Jay Alammar, Maarten Grootendorst 出版社: O’Reilly Media, Inc. 出版时间:2024.9 ISBN:978-1-098-15090-7 https://www.oreilly.com/library/view/hands-on-large-language/9781098150952/
整体上,个人感觉这本书干货不多,广告不少。Cohere API广告。
简单讲了一下文本分类、语义搜索、聚类、多模态LLM,以及稍微算有点内容的Tokens & Embeddings(抱歉这俩我不知道怎么翻译)。
文本分类
讨论监督文本分类。最常见的是完全监督,每个输入都有一个目标类别,模型的学习非常直接。 先使用特征提取模型将文本输入转换为数值表示,在数值表示上训练一个分类器,搞分类器的时候可以选择对LLM进行微调。 这其中模型的选择是非常关键的,不同模型可可处理的语言、体系结构、大小、推理速度、任务准确性等方面存在差异比较大。 BERT是一个很好的底层架构。BERT 有多个变体,包括 BERT、RoBERTa、DistilBERT、ALBERT、DeBERTa,每种架构都以多种形式进行了预训练,从在特定领域训练到在多语言数据上训练。 然后作者蜻蜓点水般地讨论了Pre Trained Embeddings、Zero-shot Classification、 Few-shot Classification。 In-context learning在执行 Few-shot Classification时表现特别出色。
语义搜索
这部分算是和工作关联度最高的。 关于如何分块才能使Embeddings后尽可能保留更多的信息,但是要考虑信息的冗杂程度。当扩展到百万级向量时,向量数据库就是更优选择,然后稍微提了一下微调,但是没举例子,不明所以。 然后稍微提了一下基于Sentence Transformers的开源检索和检索结果关联度排序。
目前手头用的这几个数据库都有这个功能,但是从使用体验上来说,明显感觉目前的主流语义搜索文献库还有这几个致命缺点: 关闭联想的功能形同虚设,可能在底层上,语义与关键词拓展的功能就是绑定的。以至于很多时候需要反复纠正系统本身已经无法区分的概念。 第二对于总括性描述缺乏准确理解,以至于得到的结果完全不能用。很多专业领域的知识架构是比较复杂的,概念之间有明确的层级关系,但是在缺乏专业领域数据与训练的前提下,很多模型跑不动这些,一跑就是令人无语的输出。
这里面作者自己也提到了一个广受诟病的地方。 就是输出往往用连贯文本回答大量问题,对于文本本身的可信度缺乏鉴别。 当然这个要求太高了,如果这都能做到,那计算量得多大,不但要获取所有数据的(AI与否)标签,还要结合可信度高的数据对于其他信息进行判定,感觉实践上其实不太可能,但是随着时间的推移这个问题会越来越突出。 上一本书里面其实也提到数据获取的问题,当前用于训练的数据库还是原始数据库较多,AI生成的“假”数据仅在部分情况下用于模型的快速训练,不是作为在线实时数据抓取的数据源。 但是随着AI生成数据越来越多,哪些是生成数据,哪些是原始数据,没有标签真的很难辨别。反复咀嚼生成这些生成数据,结果的AI味只会越来越严重。 在专业领域,只要有一部分学术错误没被处理,就会代代遗传,到时候专业辟谣难度更大。 先解决一个基本问题吧,能搜到就能搜到,搜不到咱不要乱编造参考文献了可以吗?
基于这一点,目前很多搜索还是依赖于事实或参考现有文档的事实,生成式搜索模 型被训练为引用其来源,并在答案中包含链接,这种稍微好点
文本聚类以及主题建模
无监督的专业领域实践体验就更差。 聚类层级混乱,权重设置不符合学科逻辑、重复聚类、无意义聚类等。 很难识别其他内容,对于聚类数量不好控制。 当目标文本难以用单一标签来表征时,多标签内容会造成聚类结果不准确等问题。 大概是这么个过程: Embeddings、降维。 降维算是整篇文档中论述稍微具体的内容了,方法有(PCA和UMAP。 但是降维过程中必然会发生信息丢失,这个时候就需要找到平衡了。 然而,降维技术并非完美无缺。它们不能完美地将高维数据转换为低 维表示。在此过程中,信息总是会丢失。在减少维度和尽可能保留信 息之间需要取得平衡。
后面探讨了BERTopic。
此外文中也提到了,聚类出来的名称词性问题。尽可能使用名词。 但是在专业数据聚类时,得到的结果往往是混杂的,名词、动词、形容词都有,有长词组也有短单词。 这可能是一开始规则设定的问题。同时部分专业领域优秀的聚类结果往往是长词组,还是归纳性的并非出现在原文中的概念词汇。 那么在无监督前提下想要获得比较好的聚类效果就是天方夜谭。
这种时候预训练发挥的作用其实有限,泛化总是难以令人满意的。 借助专业领域的知识图谱构建,把基于无监督的聚类算法与基于知识图谱的预训练结合不失为一种比较好的做法。 这又是一个新的话题了。
其他
后面就是广告时间,简单聊了一下HuggingFace,OpenAI,Cohere。 在介绍Embeddings,直接上硬广。 所以我还是觉得之前看的那本书讲得更有深度。