【论文】情感神经元的意外发现


✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua小谢,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:传知代码论文复现

欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙

​​

​​

目录

概述

演示效果

核心逻辑

使用方式

部署方式


本文所有资源均可在该地址处获取。

概述

在 2017 年 4 月发布 Unsupervised Sentiment Neuron 算法的文章《Learning to Generate Reviews and Discovering Sentiment》中指出,“真正好的预测与理解有关”,以及“仅仅被训练用于预测下一个字符之后,神经网络自动学会了分析情感” 。

尽管训练出的这个系统初始只是为了能够预测亚马逊评论文本中的下一个字符,而让人惊讶的是,该系统中还出现了意料之外的「情感神经元(sentiment neuron)」,其囊括了几乎所有的情感信号。

这篇文章在当时没有受到太多关注甚至被 ICLR 2018 拒稿,但分析认为,这个研究成果对 OpenAI 后续的研究产生了深远的影响,也为下一阶段 OpenAI all-in GPT 路线打下了基础。

演示效果

下图表示情感神经元的逐字符值,消极值为红色、积极值为绿色。 请注意,像“最好的”或“可怕”这样强烈的指示性词语会引起颜色的特别大变化。


有趣的是,在完成句子和短语之后,系统仍会进行大量更新。 比如说“And about 99.8 percent of that got lost in the film”这个句子,即使“in the film”本身没有表达情感,系统还是在前面的“lost”之后、以及在句子结束后,将情感值向更消极的方向进行了更新。

核心逻辑

github地址

> 方法论

OpenAI首先在8200万亚马逊评论的语料库上用4,096个单位训练了multiplicative LSTM,以预测一小段文本中的下一个字。 训练在四个NVIDIA Pascal GPU上进行,花费了一个月,模型处理速度为每秒12,500个字符。

这4,096个单位(只是浮标的向量)可以被认为是表示模型读取的字符串的特征向量。 在训练mLSTM后,OpenAI通过采用这些单位的线性组合将模型转换为情感分类器,通过可用的监督数据学习组合的权重。


哇!确实有一个单一的特征权重很大。一定是情感神经元。事实上,我们甚至可以得到它在 4096 个神经元列表中的索引。如果你看一下结果,你会发现它的索引是2388。还有其他一些神经元的贡献相对较高。

> 情感神经元
OpenAI这项研究还有一个独特的“情感神经元”,包含几乎所有的情感信号。

在用L1正则化训练线性模型的同时,研究人员注意到,它只用了很少的已学习单位。挖掘其原因的时候发现,实际上存在着一个对情感值有高度预测性的“情感神经元”。

> 无监督学习
目前,标签数据是机器学习的燃料。 收集数据很容易,但对数据进行可扩展的标注很难。只有在机器翻译,语音识别或自动驾驶这样的重要问题上,生成标签才能得到相应的回报。

开发无监督学习算法,学习数据集的良好表征,仅用少量标注数据解决问题,一直以来都是机器学习研究人员的梦想。

OpenAI的研究表明,在创建具有良好表征学习能力的系统时,简单地用大量数据训练一个大型的无监督下雨不预测模型,可能是一种很好的方法。

使用方式

1、输入文本,输出预测情绪

# start
from encoder import Model
import numpy as np

model = Model()
text = ['I do not like you!','I can not love you any more!','I couldn’t figure out how to put this book down.']
text_features = model.transform(text)
sentiment_scores = text_features[:, 2388]

print("情绪值:", sentiment_scores)

2、输入基础开头文本,加上情绪值,加上目标文字数,输出带情绪的一段话

from encoder import Model
mdl = Model()

base = "I couldn’t figure out"
print("\'%s\'... --> (argmax sampling):" % base)
positive = mdl.generate_sequence(base, override={2388 : 1.0})
negative = mdl.generate_sequence(base, override={2388 : -1.5}, len_add = 100)

这是当要求以“嗯”开头时生成的内容。

Hmm what a waste of film not to mention a Marilyn movie for nothing.

嗯,那还不错!

有趣的部分是通过固定情感神经元的值来生成样本。以下是一些生成的示例。

情绪= 1.0 且起始短语= “This is” =>

This is a great album with a quality history of the group.

情绪= -1.0 且起始短语=“可能”=>

It might have been good but I found myself skipping pages to get to the end.

我尝试通过提供诸如“我不能”之类的短语作为起始短语来欺骗它,但将情绪固定为积极的。但它仍然表现得很好,如下所示。

情绪 = 1.0 =>

I can't wait to try the other flavors - and I have a ton of them on hand just in case one should have gone out for a trip or need a "big new place" and they are delicious.

情绪 = -1.0 =>

I can't believe I bought this book.

很高兴生成的短语连贯、像人类一样并且也符合预期的情绪。

也就是说,有时生成的文本与情绪并不完全相符。

情绪 = -1.0且起始短语=“很棒”=>

Great DVD with the original production leaving good video and audio quality.

关于生成的有趣之处在于,它也可以被视为获得单个神经元直觉的一种方式。因此,我尝试通过固定其他重要神经元的值来生成文本。例如,将神经元 801 的值固定为 -1.0 生成此文本。

This is the greatest movie ever! Ever since my parents had watched it back in the 80s, I always watched it.

它(神经元 801)与情绪似乎有一些相关性。

修复不同的值(甚至多个值在一起)并查看生成的文本是一个有趣的练习。

部署方式

dockerfile

​​

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值