Alleviating Hallucinations of Large Language Models through Induced Hallucinations

828 篇文章

已下架不支持订阅

本文提出了一种名为诱导然后对比解码(ICD)的方法,旨在解决大型语言模型(LLM)在生成内容时产生的不准确或捏造信息(幻觉)问题。ICD通过诱导幻觉并随后在解码过程中减弱这些幻觉来增强生成内容的真实性。实验证明,ICD可以有效提高LLM的真实性,例如,Llama2-7B-Chat和Mistral-7B-Instruction在TruthfulQA上的表现与ChatGPT和GPT4相当。

本文是LLM系列文章, 针对《Alleviating Hallucinations of Large Language Models through Induced Hallucinations》的翻译。

通过诱导幻觉减轻大型语言模型的幻觉

摘要

尽管大型语言模型具有令人印象深刻的功能,但人们已经观察到它们会产生包括不准确或捏造信息的反应,这种现象通常被称为“幻觉”。在这项工作中,我们提出了一种简单的诱导然后对比解码(ICD)策略来缓解幻觉。我们首先通过从原始LLM中诱导幻觉来构建事实上较弱的LLM。然后,我们在解码过程中惩罚这些诱导的幻觉,以增强生成内容的真实性。具体来说,我们通过放大原始模型的预测并通过对比解码淡化诱导的不真实预测来确定最终的下一个表征预测。基于判别和基于生成的幻觉评估基准(如TruthfulQA和FACTSCORE)的实验结果表明,我们提出的ICD方法可以有效地提高各种模型大小和族的LLM的真实性。例如,当配备ICD时,Llama2-7B-Chat和Mistral-7B-Instruction在TruthfulQA上分别实现了与ChatGPT和GPT4相当的性能。

1 引言

2 相关工作

3 诱导然后对比度解码

4 实验

5 结论

这项工作介绍了一种用于减轻LLM中幻觉的解码方法,称为诱导然后对比解码(ICD)。考虑到直接增强LLM真实性的挑战,我们首先从LLM中诱导幻觉,然后在解码过程中从原始LLM的输出空间中减去它们。在基于判别和基于生成的基准上的实验结果表明,这种简单的方法有效地提高了LLM的真实性。我们还进行了额外的分析,以深入研究我们方法的潜在机制,例如比较不同的幻觉诱导方法,评估我们方法在不同模型大小和类型下的有效性

已下架不支持订阅

<div align="center"> <h2>AFNet: Adaptive Fusion of Single-View and Multi-View Depth for Autonomous Driving</h2> <h2>**CVPR 2024**<h2> [Paper](https://arxiv.org/pdf/2403.07535.pdf) </div> This work presents AFNet, a new multi-view and singleview depth fusion network AFNet for alleviating the defects of the existing multi-view methods, which will fail under noisy poses in real-world autonomous driving scenarios. ![teaser](assets/pointcloud2.png) ## ✏️ Changelog ### Mar. 20 2024 * Initial release. Due to the confidentiality agreement, the accuracy of the current reproduced model on KITTI is very slightly different from that in the paper. We release an initial version first, and the final version will be released soon. * In addition, the models trained under noise pose will soon be released. ## ⚙️ Installation The code is tested with CUDA11.7. Please use the following commands to install dependencies: ``` conda create --name AFNet python=3.7 conda activate AFNet pip install -r requirements.txt ``` ## 🎬 Demo ![teaser](assets/visual_compare.png) ## ⏳ Training & Testing We use 4 Nvidia 3090 GPU for training. You may need to modify 'CUDA_VISIBLE_DEVICES' and batch size to accommodate your GPU resources. #### Training First download and extract DDAD and KITTI data and split. You should download and process DDAD dataset follow [DDAD🔗](https://github.com/TRI-ML/DDAD). #### Download [__split__ 🔗](https://1drv.ms/u/s!AtFfCZ2Ckf3DghYrBvQ-DWCQR1Nd?e=Q6qz8d) (You need to move this json file in split to the data_split path) [ models 🔗](https://1drv.ms/u/s!AtFfCZ2Ckf3DghVXXZY611mqxa8B?e=nZ7taR) (models for testing) Then run the following command to train our model. ``` bash scripts/train.sh ``` #### Testing First download and extract data, split and pretrained models. ### DDAD: run: ``` python eval_ddad.py --cfg "./configs/DDAD.conf" ``` You should get something like these: | abs_rel | sq_rel | log10 | rmse | rmse_log | a1 | a2 | a3 | abs_diff | |---------|--------|-------|-------|----------|-------|-------|-------|----------| | 0.088 | 0.979 | 0.035 | 4.60 | 0.154 | 0.917 | 0.972 | 0.987 | 2.042 | ### KITTI: run: ``` python eval_kitti.py --cfg "./configs/kitti.conf" ``` You should get something like these: | abs_rel | sq_rel | log10 | rmse | rmse_log | a1 | a2 | a3 | abs_diff | |---------|--------|-------|-------|----------|-------|-------|-------|----------| | 0.044 | 0.132 | 0.019 | 1.712 | 0.069 | 0.980 | 0.997 | 0.999 | 0.804 | #### Acknowledgement Thanks to Zhenpei Yang for opening source of his excellent works [MVS2D](https://github.com/zhenpeiyang/MVS2D?tab=readme-ov-file#nov-27-2021) ## Citation If you find this project useful, please consider citing: ```bibtex @misc{cheng2024adaptive, title={Adaptive Fusion of Single-View and Multi-View Depth for Autonomous Driving}, author={JunDa Cheng and Wei Yin and Kaixuan Wang and Xiaozhi Chen and Shijie Wang and Xin Yang}, year={2024}, eprint={2403.07535}, archivePrefix={arXiv}, primaryClass={cs.CV} } ``` PS E:\AFNet-main> pip install -r requirements.txt Defaulting to user installation because normal site-packages is not writeable Collecting imageio==2.9.0 (from -r requirements.txt (line 1)) Downloading imageio-2.9.0-py3-none-any.whl.metadata (2.6 kB) Collecting ipdb==0.12.3 (from -r requirements.txt (line 2)) Downloading ipdb-0.12.3.tar.gz (10 kB) Preparing metadata (setup.py) ... done Collecting joblib==1.0.1 (from -r requirements.txt (line 3)) Downloading joblib-1.0.1-py3-none-any.whl.metadata (6.8 kB) Collecting lz4==3.1.3 (from -r requirements.txt (line 4)) Downloading lz4-3.1.3.tar.gz (159 kB) Preparing metadata (setup.py) ... done Collecting matplotlib==3.1.3 (from -r requirements.txt (line 5)) Downloading matplotlib-3.1.3.tar.gz (40.9 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 40.9/40.9 MB 6.2 MB/s eta 0:00:00 Preparing metadata (setup.py) ... error error: subprocess-exited-with-error × python setup.py egg_info did not run successfully. │ exit code: 1 ╰─> [28 lines of output] C:\Users\HP\AppData\Local\Temp\pip-install-xl7u4dpy\matplotlib_e71ff03b933d48d99aa6e0525941cb19\setup.py:32: SetuptoolsDeprecationWarning: The test command is disabled and references to it are deprecated. !! ******************************************************************************** Please remove any references to `setuptools.command.test` in all supported versions of the affected package. This deprecation is overdue, please update your project and remove deprecated calls to avoid build errors in the future. ******************************************************************************** !! from setuptools.command.test import test as TestCommand Traceback (most recent call last): File "<string>", line 2, in <module> File "<pip-setuptools-caller>", line 34, in <module> File "C:\Users\HP\AppData\Local\Temp\pip-install-xl7u4dpy\matplotlib_e71ff03b933d48d99aa6e0525941cb19\setup.py", line 52, in <module> __version__ = versioneer.get_version() ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\HP\AppData\Local\Temp\pip-install-xl7u4dpy\matplotlib_e71ff03b933d48d99aa6e0525941cb19\versioneer.py", line 1410, in get_version return get_versions()["version"] ^^^^^^^^^^^^^^ File "C:\Users\HP\AppData\Local\Temp\pip-install-xl7u4dpy\matplotlib_e71ff03b933d48d99aa6e0525941cb19\versioneer.py", line 1344, in get_versions cfg = get_config_from_root(root) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\HP\AppData\Local\Temp\pip-install-xl7u4dpy\matplotlib_e71ff03b933d48d99aa6e0525941cb19\versioneer.py", line 401, in get_config_from_root parser = configparser.SafeConfigParser() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: module 'configparser' has no attribute 'SafeConfigParser'. Did you mean: 'RawConfigParser'? [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with the package mentioned above, not pip. hint: See above for details.
06-04
<think>好的,用户遇到了在安装AFNet依赖时matplotlib安装失败的问题,具体错误是'SafeConfigParser'属性错误。我需要先理解这个错误的根本原因。根据用户提供的引用[^1],这个错误是因为在Python3中,SafeConfigParser已经被重命名为ConfigParser,而旧版本的matplotlib可能还在使用旧的名称。首先,用户提到的matplotlib版本是3.3.3,安装时出现versioneer.py中的错误。这说明问题可能出在matplotlib的版本与当前Python环境不兼容。接下来,我需要考虑可能的解决方案。常见的解决方法包括升级matplotlib到兼容Python3的版本,或者降级Python版本,但降级可能不实际。所以更可行的是升级matplotlib。但用户可能在安装AFNet时需要特定版本的matplotlib,比如依赖要求3.3.3。这时候可能需要检查AFNet的依赖是否必须使用该版本,或者是否有更新的版本可用。 另外,用户可能没有使用虚拟环境,导致环境冲突。建议使用虚拟环境来管理依赖,避免版本冲突。此外,安装时可能需要指定正确的版本,或者从源码安装并手动修改错误文件中的SafeConfigParser为ConfigParser。还需要检查Python版本是否过高,比如Python3.10以上可能导致某些旧包不兼容。如果用户Python版本较新,可能需要寻找支持新版本的matplotlib版本,或者应用补丁。 总结可能的解决步骤:1.升级matplotlib到更高版本,如3.5.0以上,这些版本已经修复了Python3的兼容性问题。2.如果必须使用3.3.3,可以手动修改versioneer.py中的代码,将SafeConfigParser替换为ConfigParser。3.使用虚拟环境确保环境隔离。4.检查Python版本,可能需要使用稍旧的Python版本,如3.7或3.8,以兼容旧库。 5.安装时使用--no-cache-dir选项避免缓存问题。同时,需要验证这些步骤是否有效,比如手动修改文件后重新安装。另外,用户可能需要更新pip和setuptools,确保安装工具本身没有问题。 最后,生成相关问题帮助用户深入理解类似问题,比如其他库的兼容性问题处理,或者如何维护依赖环境。</think>### 解决方法 出现`SafeConfigParser`属性错误的原因是matplotlib旧版本与Python 3的兼容性问题。以下是具体解决步骤: 1. **升级matplotlib版本** 直接安装支持Python 3的新版本(如$3.5.0+$),新版本已修复此问题: ```bash pip install matplotlib>=3.5.0 --upgrade ``` 2. **手动修改旧版本源码(适用于必须使用$3.3.3$的情况)** - 下载源码并解压: ```bash wget https://github.com/matplotlib/matplotlib/archive/refs/tags/v3.3.3.tar.gz tar -xzf v3.3.3.tar.gz ``` - 修改`versioneer.py`文件中的`SafeConfigParser`为`ConfigParser`[^1] - 重新安装: ```bash cd matplotlib-3.3.3 python setup.py install ``` 3. **使用虚拟环境隔离依赖** 通过`venv`创建纯净环境,避免依赖冲突: ```bash python -m venv myenv source myenv/bin/activate # Linux/Mac pip install matplotlib==3.5.0 ``` 4. **检查Python版本兼容性** 确保Python版本在$3.7$至$3.9$之间(部分旧库对$3.10+$支持不足)。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值