使用多层感知器(MLP)对图像及其性能进行分类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用多层感知器(MLP)对图像及其性能进行分类相关的知识,希望对你有一定的参考价值。

我是机器/深度学习领域的新手!

如果我理解正确,当我使用图像作为输入时,

输入层的神经元数量=像素数(即分辨率)

通过反向传播更新权重和偏差,以实现尽可能低的错误率。

问题1。

因此,即使单个图像数据也会调整权重和偏差值(通过反向传播算法),那么如何在此MLP中添加更多相似图像可以提高性能? (我必须遗漏一些大的东西..然而对我来说,它似乎只会针对给定的单个图像进行优化,如果我输入下一个(类似的img),它将只针对下一个进行优化)

问题2。

如果我想训练我的MLP识别某些类型的图像(比如衣服/动物),每个标签(即衣服,动物)的训练集数量是多少?我知道更多的训练集会产生更好的结果,但是多少数量对于足够好的性能来说是理想的?

问题3.(继续)

有点不同的角度问题,有一个谷歌云视觉API,它将图像作为输入,并产生标签/概率作为输出。所以这个API会给我100个(比如说)标签的输出和每个标签的概率。

(例如,当我把一个在线游戏截图,它将产生如下,)example

这种类型的数据可以用作MLP的输入来分类某些类型的图像吗? (假设我知道Google API生成的所有可能类型的标签,并将它们全部用作输入神经元)

像素值表示图像。但是,我认为这种类型的API输出结果可以表示不同角度的图像。

如果是这样,性能差异会是什么?例如,当分类10种不同类型的图像时,(像素训练模型)vs(输出标签训练模型)

答案

我可以用“直观”的图片来帮助你。

首先,可能值得研究卷积神经网络和深度学习,并了解如何处理图像作为输入以减少权重数量。它不是每像素1重量。

另外,你对“表演”究竟是什么意思?这不是一个定义明确的问题。如果你使用1张图片,比如一只猫,你的意思是你可以在其他图片中识别出猫的性能,或者你能够接近你的猫吗?

想象一下,您有一个包含3个权重,1个输入和1个输出的表,并训练您的网络误差<0.01,所需输出为0.5

W1    |  W2    | W3   | Output

0.1     0.2      0.05   0.5006

如果你重新训练网络,你可能会有所不同

W1    |  W2    | W3   | Output

0.3     0.2      0.08   0.49983

由于权重不同,您可以想象有几种解决方案。

然后,如果你添加另一个输入,你可以想象一些适用于第一个解决方案的权重将适用于第二个。

然后添加另一个输入。然后,具有2个输入的解决方案的子集将适用于3个输入。等等。

当您有足够的无关或有噪声的输入时,您将找不到符合您的错误标准的权重子集。您需要添加权重(更多自由度)或增加错误目标,或两者兼而有之。

现在,您在训练网络时具有学习率。假设您正在进行在线培训(对于每个输入更新权重),而不是批量培训(您找到输入的批次(子集)的错误向量,并根据该批次更新权重,批次为1次)。

现在,假设您的学习率为0.01,权重为0.1。直观:

如果,对于第一次输入,第一个重量的导数为5,那么您的重量的新值为0.1 - 0.01 * 5 = 0.05

如果您输入下一个输入,则表示导数为-5。这意味着第二个输入“不同意”第一个更改,并尝试返回0.01

如果第二个输入的导数为5,则意味着第二个权重与第一个输入“一致”。

如果您有20个输入,有些会将值拉高,有些会将值推低。您继续循环训练,然后该值将接近大多数输入所同意的值,从而最小化由该权重引起的误差。

问题2:

我的数学胆量告诉我你必须至少需要2 *体重才能对训练有任何意义,但是你应该至少将体重的10倍作为最小量,甚至可以得出关于你的网络的结论,除非你不是想猜测一些新东西(例如,对于xor gate,你可能会以比权重更少的输入方式逃脱,但这有点长的讨论)

注意:

使用1张图像,您可以旋转它,拉伸它,将其与其他图像混合...以创建另一个图像并增加您的输入设置。

如果你有像xor gate这样的简单输入,你可以创建像(0.3,0.7)(0.3,0.6)(0.2,0.8)......这样的输入来扩展你的训练集。

问题3:

这相当于将谷歌网络链接到您连续创建的网络,但分别培训每个部分。

基本上:您有图片 - > 10个标签输入到您的网络 - >您的分类

我看到的问题是,你可能不知道google分类的所有可能输出。但是说它们是一致的,

您的标签是否与10个标签中的一个相同?如果是这样,请使用给定的标签。如果它是不同类型的标签,您可以使用该API来简化您的网络。结果是什么或表现是什么?

这超出了我的范围。在神经网络中,虽然他们有很好的数学理论来告诉我们他们能做些什么,但许多人提出的问题,例如你所要求的问题,要么需要特殊的数学分析(或许可以获得与该类问题有关的一些见解的博士学位),或者最做的,显示实证结果。

以上是关于使用多层感知器(MLP)对图像及其性能进行分类的主要内容,如果未能解决你的问题,请参考以下文章

翻译: 4.2. 从零开始实现多层感知器MLP pytorch

halcon多层感知器MLP的使用

翻译: 4.1 多层感知器MLP Multilayer Perceptrons pytorch

在 SVM 和 MLP 分类器之间进行选择

使用多层感知器对不平衡数据集进行分类

TensorFlow-多层感知机(MLP)