我是机器/深度学习领域的新手!
如果我理解正确,当我使用图像作为输入时,
输入层的神经元数=像素数(即分辨率)
通过反向传播更新权重和偏差,以实现尽可能低的错误率。
问题1。
因此,即使是单个图像数据也会调整权重和值的值。偏差(通过反向传播算法),那么如何在此MLP中添加更多类似的图像可以提高性能? (我必须遗漏一些大的东西..然而对我来说,它似乎只会针对给定的单个图像进行优化,如果我输入下一个(类似的img),它将只针对下一个进行优化)< / p>
问题2。
如果我想训练我的MLP来识别某些类型的图像(比方说衣服/动物),每个标签(即衣服,动物)的训练集数量是多少?我知道更多的训练集会产生更好的结果,但是多少数量对于足够好的性能来说是理想的?
问题3.(继续)
有点不同的角度问题, 有一个谷歌云视觉API,它将图像作为输入,并产生标签/概率作为输出。所以这个API会给我100个(比如说)标签的输出和每个标签的概率。
此类数据可以用作MLP的输入来分类某些类型的图像吗? (假设我知道Google API生成的所有可能类型的标签,并将它们全部用作输入神经元)
像素值代表图像。但是,我认为这种类型的API输出结果可以表示不同角度的图像。
如果是这样,性能差异会是什么? 例如)在分类10种不同类型的图像时, (像素训练模型)vs(输出标签训练模型)
答案 0 :(得分:0)
我可以帮助你提供直观的&#34;图片。
首先,可能值得研究卷积神经网络和深度学习,并了解如何处理图像作为输入以减少权重数量。它不会是每像素1个重量。
另外,你的意思是&#34;表现&#34;?这不是一个定义明确的问题。如果你使用1张图片,比如说一只猫,你的意思是你可以在其他照片中识别猫的表现,或者你能够接近你的猫吗?
想象一下,你有一个包含3个权重,1个输入和1个输出的表,并训练你的网络有错误&lt; 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。这意味着第二个输入&#34;不同意&#34;第一次改变,并试图回到0.01
如果第二个输入的导数是5,那意味着第二个重量&#34;同意&#34;与第一个。
如果您有20个输入,有些会将值拉高,有些会将值推低。您继续循环训练,然后该值将接近大多数输入所同意的值,从而最小化由该权重引起的误差。
问题2:
我的数学胆量感觉告诉我你必须至少需要2 *体重才能对训练有任何意义,但是你应该至少将体重的10倍作为最小量,甚至可以得出你的结论。网络,除非你不想猜测一些新东西(例如,对于xor gate,你可能会以比权重更少的输入方式逃脱,但这是一个有点长的讨论)
注意:
使用1张图像,您可以旋转,拉伸,与其他图像混合...以创建其他图像并增加输入设置。
如果你有像xor gate这样的简单输入,你可以创建像(0.3,0.7)(0.3,0.6)(0.2,0.8)......这样的输入来扩展你的训练集。
问题3:
这相当于使用您按顺序创建的网络链接谷歌的网络,但分别对每个部分进行培训。
基本上:你有图片 - &gt; 10个标签输入到您的网络 - &gt;你的分类
我看到的问题是,您可能不知道谷歌分类的所有可能输出。但是说它们是一致的,
您的标签是否与10个标签中的一个相同?如果是这样,请使用给定的标签。如果它是不同类型的标签,您可以使用该API来简化您的网络。结果是什么或表现是什么?
这超出了我的范围。在神经网络中,虽然他们有很好的数学理论来告诉我们他们能做些什么,但许多人提出的问题,例如你所要求的问题,要么需要特殊的数学分析(或许可以获得与该类问题有关的一些见解的博士学位),或者大部分都是,显示实证结果。