楼主:
DrTech (竹科管理处网军研发人员)
2024-11-03 16:09:00※ 引述《angus850503 (安格斯)》之铭言:
: 借版问
: 小弟目前为前端工程师 受益于 Copilot 跟 ChatGPT
: 开发上真的轻松非常非常多 已经把按 tab 当作开发的一环了XD
: 不过之前就一直对生成式 AI 有个疑问
: 就是"幻觉"到底有没有根本上的解决方法?
: 我的理解目前的 AI 还是靠大数据去堆叠资料量用以训练模型
: 现阶段也是不断堆硬件去撑这块
: (如果理解有误请小力鞭QQ)
: 但幻觉的问题不论是喂更多资料或是透过 RAG 感觉都是治标不治本
: 还是没办法完全预防与解决
: 对我来说这样可以称得上是 AI 吗? 还是充其量只是进阶版的机器学习?
: 请各位软工大神解惑了QQ
: 附上这个议题 ChatGPT 自己的回答:
: https://i.meee.com.tw/Gk7IjRH.png
: https://i.meee.com.tw/EVQCczh.png
解决幻觉,不一定要从LLM解,
而是靠系统架构解。
例如,做一个问答系统,很多人减少幻觉是这样做的:
0. 预先整理好QA问答资料集
(人工整理,或机器辅助整理)
1. 使用者输入Query。
2. 搜寻top-k个相似的问题。
3. 将 k个最相似的问题与答案输入至LLM,
要求LLM生成最适合的答案。
4. 将LLM生成的答案输出。(可能有幻觉,可能没幻觉,难以控制)
几乎所有的网络上范例程式都告诉你这样做。
这套系统架构称为:LLM生成答案。
实际上,你只要改个系统架构,就可以得到完全没幻觉,又同样准确率又同样等级的问答系统:
流程如下:
0. 整理QA资料集
1. 使用者输入Query
2. 搜寻top-k相似的问题
3. 要求LLM在K个问题与答案,弄成K个选项
要求LLM选择一个最适合的问题与答案。
LLM只输出1, 2, 3, 4。
(如有必要,可用outlines 或 guidance,控制 next token 只做这四个选择)
4. 根据LLM选择的选项,
系统只输出选项1,2,3,4 对应的答案A。
由于A不是LLM生成的,所以永远不会有幻觉问题。
这套系统架构称为:LLM选择答案。(而不是生成答案)
也就是说,同样一个系统,LLM原本是靠生成产生最后结果,转换成LLM只能从多个没幻觉的事实间,选择一个事实。永远不会有幻觉。
以上只是举例。
任何一个AI功能,只要掌握一个诀窍,
LLM或AI的输出结果,不要用在最后阶段的输出
而是转化问题,系统设计成LLM用在中间某任务,在事实间做分类选择,输出的就永远是事实。
根据实验与经验,答对答错的机会也不会
因为改变了系统设计架构而有影响。
做AI应用,真的不是无脑套模型,套别人流程。
LLM也不是只能用在生成文字,传统的,分类,选择,NER,排序最佳化,…都可以靠LLM 做。
把LLM当成系统中间工具,而不是最终输出,可以大幅提升AI能力,又完全不会产生幻觉。
作者:
neo5277 (I am an agent of chaos)
2024-11-03 16:33:00楼上这个有专有名词叫做rerank 我开发系统时有设计
楼主:
DrTech (竹科管理处网军研发人员)
2024-11-03 16:44:00重点是系统架构设计。rerank完,该怎么输出?如果用rerank完,LLM生成输出结果,还是永远有幻觉。如果rerank完,用top-k个答案事实输出,就不会有幻觉。而且当答案只有一个的情况,何必用到复杂的rerank。直接转换成搜寻结果 k选一的classification任务,还比较适合。
作者:
neo5277 (I am an agent of chaos)
2024-11-03 18:40:00嗯合理同意,下周来玩看看
作者:
prag222 (prag)
2024-11-03 20:57:00你可以一个问题问三次,觉得答案不对的就打脸chatGpt多否定几次可能就会给你正确答案了,(笑
作者:
labbat (labbat)
2024-11-03 21:04:00微软大老建议过了呗
楼主:
DrTech (竹科管理处网军研发人员)
2024-11-03 23:38:00我只是说最简单的例子,也可做到不用靠人整理,或不要整理QA。方法就是跟常见的RAG一样,不整理QA,直接把文章切成chunk 段落。一样搜最接近top-K段落,给LLM生成答案,但是生成答案后,"不要"信任LLM的生成文字直接输出,使用传统的NLP去纠错(spell correct ion),纠错的候选只能是chunk事实中的连续句子。最后输出纠正到事实的句子。这样可做到不整理QA但整个系统只会输出最正确的事实句子。方法变形很多啦,但原则就是:LLM只是选择或决策的工具,非最后的答案生成输出。这样就会有同样聪明,又永远是事实输出的AI。
作者: agario (Agar.io) 2024-11-04 06:54:00
假设你说的LLM只输出1, 2, 3, 4是指只生出一个数字token这样效果应该不是很好吧,毕竟没时间一步一步思考
楼主:
DrTech (竹科管理处网军研发人员)
2024-11-04 07:15:00我只是举简单的例子,你先做要CoT然后最后输出选项,也可以啊。其实许多Agent选tool的概念就是这样,多种tool用选项让LLM 选,LLM只限定选1,2,3,4这样选项,也可控制next token只选数字。选tool行为就不会有幻觉,同样的道理。viper9709总结得很好。不要有幻觉,就是:问答题转成,事实的选择。
楼主:
DrTech (竹科管理处网军研发人员)
2024-11-04 08:16:00同样的技术,也可以想成AI更通用了,用得更全面了,即可以用于生成,也可以用于判断与分类。产品能赚得钱更多了。LLM产品,何必困于于生成或判别二选一。causal language model 从来就没限制next token该怎么用,没限制下游任务只能用来判别或生成二选一。
没想到从中国大企业回来的D大连这方面都懂...强!
作者:
Lhmstu (lhmstu)
2024-11-04 23:20:00这种解法我自己是不看好,本末倒置
楼主:
DrTech (竹科管理处网军研发人员)
2024-11-05 07:34:00你可以去多看论文,OpenAI发表的GPT系列论文,模型评测一直都不只是用于生成答案任务,甚至评测LLM 排名的知名benchmark dataset, MMLU系列, 就是选择题。这种做法叫本末倒置,质疑了所有做LLM benchmark 研究的所有团队阿。你看到许多LLM leaderboard跑出来的分数,许多题目都是测LLM做多选一的选择题喔。怎么大家都这样利用与评测LLM的能力,就你认为是本末倒置呢?再来,什么叫作"本",以使用者为中心,解决使用者困扰才是本。一个公司系统需要不会有乱答题的需求。人家才不管你技术使用是否用得本末倒置,能解决乱生答案的痛点才是本。
作者:
Lipraxde (Lipraxde)
2024-11-05 09:26:00这样设计要怎么用 LLM 做行程规划 or 文字修饰、润稿?
作者:
Lhmstu (lhmstu)
2024-11-05 09:44:00我是觉得你不用什么都要争到自己高人一等,我自己现在就是做这领域的,你说的这些我当然知道。不过你说是就是吧,目前确实是这样,但跟我认为本末倒置没有出入
楼主:
DrTech (竹科管理处网军研发人员)
2024-11-05 10:21:00纯交流技术而言,不需要用到本末导致,高人一等都词语吧,不同的技术应用哪有高低之分呢。不用太自卑啦,我只是跟你交流技术,技术本身并没有高人一等之说。能解决使用者问题,何必去分高低呢。你自己就是做这领域了,你解决hallucination了吗?可以分享交流吗? 至少我在我做的产品都解决了我也很愿意跟大家分享。
作者:
Lhmstu (lhmstu)
2024-11-05 11:45:00确实,我有些用词过头了跟D大说声抱歉,只是着眼点不同而已,以软件应用层面来说目前解法的确如你所说。只是我个人心理觉得这只是暂时解而已但是还是很感谢你的分享
作者: hobnob (hobnob) 2024-11-05 13:28:00
推技术串,受益良多
作者: transforman 2024-11-06 00:14:00
推个
作者: internetms52 (Oaide) 2024-11-06 11:30:00
呃…选择最适合的答案不也是机率吗?,怎么就跟幻觉没关系了,不太懂...
差别在于使用者看到的都会是人工准备的事实,而不是LLM
作者:
Lipraxde (Lipraxde)
2024-11-08 12:26:00因为他是挑人工预先准备好的答案,LLM 只是做选择题
作者: sealman234 (Sealman) 2024-11-08 17:19:00
junior?
感觉是一套让AI更可靠的方法,但目前的生成AI没真正认知与理解能力,因此也没到真的解决问题
就是reranker ,我开发也是在用这套,但不同的架构差异很大,我可以理解有人说不喜欢啦,毕竟从AGI来看,这不是一般人认知的智能,但没办法我们都是螺丝钉,不是Ilya