Oja 的规则如何应用于偏见?
Posted
技术标签:
【中文标题】Oja 的规则如何应用于偏见?【英文标题】:How is Oja's Rule Applied to Biases? 【发布时间】:2022-01-10 23:37:08 【问题描述】:我正在尝试实现 Oja 的 Hebbian 学习规则(一种无监督学习方法):https://en.wikipedia.org/wiki/Oja%27s_rule
该规则涉及权重。但它没有提到如何处理偏见。
-
给定 Oja 规则的偏差更新规则是什么?
在应用规则之前添加偏差会有问题吗?
这是一个简单的 Python 和 Pytorch 代码示例。
import torch
input_size = 4
number_neurons = 8
learning_rate = 0.01
weights = torch.rand(input_size, number_neurons)
biases = torch.rand(number_neurons)
inputs = torch.rand(input_size)
outputs = torch.matmul(inputs, weights) + biases
weights_delta = outputs * (inputs - (weights * outputs).T).T
new_weights = weights + weights_delta * learning_rate
new_biases = ???
【问题讨论】:
【参考方案1】:经过进一步检查/实验/分析,我发现在 Hebbian 学习中,为了将数据映射到潜在向量空间,偏差并不是真正必要的。
偏差有助于使用反向传播创建非线性关系的监督机器学习。但是在 Hebbian 学习中,它们不是必需的,因为通过将层的输入和输出与权重相关联来调整权重。
如果将 Hebbian 学习模型转换为监督学习模型,只需在训练和反向传播之前添加一个初始值设置为少量(即 1e-9)的偏差向量。
我发现,在 Hebbian 学习期间使用 Oja 规则添加偏差会导致权重和输出爆炸/消失。此外,这些偏差阻碍了数据的任何一致有意义的独特映射。
【讨论】:
以上是关于Oja 的规则如何应用于偏见?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查可应用于 Outlook 中的 mailItem 的所有规则