图版 43 · 人工智能
比神经元更多的特征
研究者打开一个识别图片的神经网络,发现其中一个神经元,看到猫脸、汽车车头、猫腿都会兴奋。为什么一个神经元要身兼数职?一个小到能看清每一步的模型给出了一种解释:只要这些东西很少同时出现,网络就能把比神经元更多的“特征”,叠放在同一个空间里。
向下滚动
一个神经元,三种意思
研究者在一个叫 InceptionV1 的图像识别网络里,找到一个神经元:它看到猫脸会兴奋,看到汽车的车头会兴奋,看到猫腿也会兴奋。这三样东西没有什么共同点,它只是同时干着三份毫不相干的差事。
这样的神经元叫“多义神经元”,在神经网络里很常见。它们让网络很难读懂:你没法指着一个神经元说,它代表什么。2022 年,Anthropic 公司的研究者用一个小得能看清每一步的模型,为这件事给出了一种解释。
一个两神经元的模型,记着五个特征 · 每根杆是一个特征,每条刻线是一个神经元
五样东西,两个数
这个模型很小。进去的是五个数,每个数是一个“特征”:要么没有,要么以某个强度出现。模型必须把它们挤过只有两个神经元的窄口,再在另一头还原出全部五个。
每个特征在两个神经元撑起的平面里分到一个方向,这里画成一根杆。如果让它在“五个特征总是同时出现”的数据上训练,它会做最稳妥的事:给最重要的两个特征各一整个方向,互成直角,其余三个干脆放弃。
代价:互相干扰
五个方向不可能在一个平面里两两垂直,所以每个特征都会往邻居那里漏一点。点亮一个特征:中间那颗亮点,是两个神经元此刻记着的两个数;前排五根玻璃管,是模型还原出来的五个特征。最后一步之前有一道门槛(ReLU 加上一个负的偏置):负的泄漏变成零,正的小泄漏也被压小。
这招管用,是因为两样少见的东西很少同时出现。可一旦同时出现,模型就可能错得很自信:点亮两个方向几乎相反的特征,它们的信号互相抵消,模型两个都没认出来,反而报出了第三个根本不在场的特征。
立体的形状
给模型三个神经元和八个少见的特征,这些杆会安顿成一个“四方反棱柱”:上下两个正方形,彼此错开 45 度。六个特征则会两两相对,像正八面体的三条轴。
研究者一次又一次见到这类整齐的形状,也提醒说,这可能只是小模型的怪癖。能推广出去的是背后的道理:只要特征足够少见,网络能记住的特征就可以比神经元更多。
把特征拆出来
既然特征是叠着放的,也就可以把它们拆出来。“稀疏自编码器”只看神经元里的数,学出一组方向,让每一刻的数都能用尽可能少的方向拼出来。这里的白色细线就是一个在学习的稀疏自编码器:它从没被告诉特征是什么,却一根根转到了六个特征的方向上。
Anthropic 在 2023 年用这个办法拆一个真实的小模型(一层 512 个神经元,在研究得最细的一次里拆出 4096 个特征);2024 年又拆了自家的大模型 Claude 3 Sonnet,最多拆出 3400 万个特征。其中一个特征专认金门大桥,不管是英文、别的语言,还是图片。把它调到最大值的十倍,模型开始说自己就是金门大桥。
你来试试
选几个特征挤进几个神经元,再调特征出现的频率。按“训练”,看这些杆怎样找到自己的位置。点一颗珠子,打开它代表的特征;试试同时打开两个。最后用稀疏自编码器把它们读出来。
试一试选“5 → 2”,让特征越来越少见:何时五个都挤得进去?
模型省略了什么
这里运行的就是论文里的那个小模型,在你的浏览器里现场训练:5 到 8 个特征,2 到 3 个神经元,输出前一道 ReLU,用 Adam 优化器在不断生成的随机样本上训练。论文用过同样的小模型,也用过 20 个以上特征的版本;真实的语言模型每层有成千上万个神经元,特征的数量未知,而且多得多。这里的稀疏自编码器每个特征只配一个方向;真实的有几百万个,其中不少方向至今难以解释。五边形、反棱柱这些形状属于这个小模型,没有人知道真实网络是否也排得这样整齐。
一个常见的误解
神经元不是装着一个念头的小盒子,神经网络也不是一个查答案的档案柜。它把特征存成由许多神经元共同撑起的方向,读出它们靠的是计算,而不寻常的东西碰到一起时,这种计算会出错,而且错得很自信。模型也并没有在“想”五边形:那只是训练的算术最后停下来的地方。
资料来源
