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 的所有规则

如何仅将特定的 CSS 规则应用于 Chrome?

如何将可以在运行时定义的规则应用于流式数据集?

如何将一组验证规则应用于保存到特定表的所有表单?

如何使用 Resharper 准确找出哪个规则将语法突出显示应用于 VS2022 中的特定代码元素?

如何从一个数据框中获取规则并将其应用于其他数据框以获取 python 中的统计信息?