https://mp.weixin.qq.com/s/iplUoK_JYeL_9EC7Ttt3tw
现在超大规模语言模型,无论是GPT-3,还是ChatGPT,在接收到输入字符串之后,模型内部会进行编解码之后,输出回答。由于LLM经过海量的文本的训练,输出的文本在语法流畅度上基本上让人感觉不出和人的差别。而ChatGPT(即Instruct GPT+Reinforcement learning from Human Feedback)由于加入了人为价值观奖励模型的再次调优生成策略,输出的文本不仅语法流畅,而且更加符合人类的价值观。 但是问题来了,LLM训练完成之后,虽然从海量文本中汲取了大量人类知识。从最近的测试看,在一些心智程度问答上达到了九岁小孩的常识理解能力。而其对多种类型文本的阅读和理解能力更是远超任何一个人类。但是人类社会信息是不断涌现的,而LLM训练完成之后,他所阅读到的数据是固定的。那么以下问题就冒出来了: 1. 原有的海量文档中,一定混有大量过时、错误的数据。虽然RLHF可以一定程度上纠偏,但是覆盖面是完全不可能足够的。所以仅从LLM模型内部参数生成的文本,一定会有大量看似流畅,文字优美,却错误、胡编乱造的信息。这是非常误导人的。 2. 基于数据的问题,如果用数据的方式来解决,肯定是最立竿见影。但是目前训练LLM的数据集极大,人为甄别错误新信息,是一个不可能完成的任务。 3. 新知识的加入,意味着LLM持续的训练。但是一来,新知识相对原有数据集,占比极其微小,调优效果值得怀疑。二来,训练一次LLM达到调优预期效果的成本极高,时间也极长。指望LLM能够跟上人类世界产生的新信息,是不现实的。 以上三个问题,导致ChatGPT现在极其擅长的是做一些不需要新知识更新的任务。比如生成贺词、生成Excel表格、生成经典代码等等。而对于需要新知识的任务,如对新的学术知识的查找,总结,生成一份新机器的说明书,生成对当下新闻的报导,对新资讯的总结分析归类等等,ChatGPT就显得力不从心了,即使生成的文本看似流畅,但是内容却一定是错误的。更不用说让ChatGPT去回答目前他没覆盖的领域,如精读四大名著等。 那么LLM就如此不堪,不能对我们创新性任务,时效性任务有任何作用吗?答案当然是否定的。我们以一个完整的实例来说明,如何让LLM回答问题更靠谱。任务:**根据医学学术论文回答问题**
在医学界,数据分很多层级。包括但不限于:医学典籍、临床指南、医学期刊、医学会议、医学专利、药品说明书、临床病历等。这其中,临床病历在现实世界数量最多,但是由于其来自水平不同的医生、医院,其质量也最为低下。而顶级医学刊物的论文,由于其严格的审稿流程,其质量是最高的。 我们假如有医学相关问题要问,如果有三个参考数据集,分别是:临床病历、网络科普文章、医学期刊论文。在这三个数据集都可作为被回答的问题的参考数据的前提下(如果不能回答的问题,那暂时不予考虑),很显然,临床病历给的参考是最弱甚至可能是错误的,网络科普文章给的参考是次之,而医学期刊论文给的参考是最强的。显然我们不希望用错误的临床病历作为参考,网络科普文章可读性最强,但正确性存疑(很显然,百度、头条搜索就是这种),医学期刊论文正确性最高,但往往可读性最差。 这时候如果我们的目标是从最靠谱的医学期刊论文中摘出靠谱的段落,并且生成容易阅读的回答,那么对该查询就更加完美了。数据准备
首先,先回答标题里面的内容,PubMed是什么?PubMed是美国国家图书馆和美国国家医学图书馆合作的一个项目,是一个免费的医学文献数据库,包含了医学期刊论文、医学会议论文、医学专利、药品说明书等。每年PubMed都会更新超过200万篇医学文献,这些文献涵盖了医学、生物医学、公共卫生、药物、遗传学、基因组学、生物信息学、生物化学、生物物理等领域,并且每天都会持续在FTP上进行更新。由于PubMed数据库来自于世界各地的医学期刊,所以其覆盖面是非常广的,而且由于其来自于世界各地的医学期刊,所以其质量也是非常高的。如果我们能从中找到问题的合适答案,那么这个答案的正确性是非常高的。
数据处理过程
从PubMed的FTP上,下载2022年打包的所有XML为格式的文章。过滤出所有类型为research-article的文章,其他类型如letters,correction过滤掉不作为我们的数据。总共得到276万+篇文章。该数据集对所有人完全公开,不需要注册,大家可以自行去下载。 首先把所有文章段落,都连接起来。由于天然分段有时候非常短,或者仅包含标题,信息量不足。有时候又非常长,很有可能导致模型无法消化。拍脑袋取了一个值,先用stanford ntlk分句,对文章以10句话为1个段落进行段落切分。然后把这些段落,和文章原本的meta信息都保存到数据库里面。总共得到2800万+个段落。这些段落都是我们需要能搜索到,用于回答问题的知识段落。 数据准备完成之后,我们开始搭建系统。系统架构图如下:系统运行示例
点击原文,可到我机器上运行的网站。由于本人是完全的网站开发外行,网站样式性能欠佳。希望有高手愿意帮忙调优。后端其实索引搜索非常和CrossEncoder重新排序非常快,阅读段落和生成答案的过程速度也还可以,比较慢的是每一段英文都要翻译成中文。不过目前速度似乎还可以接受(在系统运行在一台单机的情况下)。 如以下提问:
- 司美格鲁肽是否对降低二型糖尿病患者不良事件有效?**
**
2. 和肥胖相关的基因突变有哪些?
3. What causes symptoms of long COVID?
之所以不用中文提问,是因为long COVID现在机器翻译还翻译不出来。4. VEGF和什么疾病强相关? 这个过于专业,但是很适合相关科研人员和爱好者来提问。
结论
前面我的菜谱机器人仅用了一个17亿参数的LLM+100个训练出来embeddings就把一个LLM调教成乖巧的菜谱机器人,所以对绝大多数严肃应用,其实现有的大量中小规模模型已经完全够用了。可以去(18510250581.gnway.cc/recipe.html)围观我的机器人厨子。要做的是赶快行动起来,甄别自己拥有的数据和应用,如何快速地用上LLM。 即使是如问答系统这种复杂系统,实际上我们需要地LLM也不是那么的大。我用的这些模型的规模,从千万到十亿不到。即使到几十亿,也完全可以在家用显卡或者专业单卡训练好。而实际上,基于阅读理解回答问题的LLM(GODEL)也不需要专门训练,只需要有足够多样性的问答数据集,有非常良好的LLM的基座,就能训练出一个通用的阅读理解模型。 再结合实时更新知识索引库,而入库的知识不再是爬虫爬下来内容,而是人工精选(删除、修改)的知识库。那么LLM和最新知识的结合就能很完美的提供大规模的知识搜索。而这 的确对百度、谷歌等传统搜索引擎是毁灭性打击。并且,任何新兴公司对传统搜索引擎公司都不会有任何劣势,因为他们所积攒的网页数据,属于无用的垃圾数据,而有用的知识、领域知识实际上对所有人都是开放可获得的。如上面对比的有限的公开发表的文献 VS 海量临床病历。
所以结论是,我们没有时间也没有必要期期艾艾地,我们的确没有ChatGPT,但是我们现在已经拥有足够大地LLM,已经足够快速改变各种行业应用了。而LLM在我看来,是最接近学习最多人类智慧的模型,需要的是更多AI行业之外的人参与进来,用你们的实际问题,来应用这个时代为数不多的好东西。希望有相关需求的朋友能联系我,我很乐意为你们咨询技术方案。