我想设计一个使用人工神经网络的扬声器识别软件(给定音频声音,我希望能够识别说话者是谁)。 我想将扬声器的名称存储在数据库中,每个发言者都有一个唯一的ID:
id
first_name
last_name
网络设计如下: - 输入是音频特性(频率,音高等......) - 隐藏的图层 - 单个输出:扬声器的数据库ID
我的问题是网络架构背后的逻辑是否有效。让网络输出成为数据库ID(我在发现的最大ID上进行规范化吗?
)是否正确?我想过有多个输出,每个输出对应一个扬声器。但随着扬声器数量的增加,输出的数量会随之增加,所以如果我有10 000个扬声器,我必须有10,000个输出,我认为这是不合理的。
这是使用ANN解决此类问题的正确方法吗?
答案 0 :(得分:1)
我的问题是网络架构背后的逻辑是否有效。让网络输出成为数据库ID(我在发现的最大ID上进行规范化吗?
)是否正确?
这是错误的方式。如果你将输出视为数字,你会对一个人施加某种亲密关系,那么一些人(那些与id
s更接近的人)的言论比那些距离更远id
的人更相似,所以有些人错误比其他错误更受惩罚。
我想过每个输出对应的多个输出 对某位发言者但随着扬声器数量的增加, 输出数量会随之增加,所以如果我有10 000 发言者,我必须有10,000个输出,我认为 不合理的。
不幸的是,这是正确的方法。通常,使用softmax输出单元,然后执行多类分类。通过这种方式,您不会强加任何偏好,并且所有错误都会受到惩罚,而与标识符的接近程度无关。
实际上,你试图解决的问题非常困难(从我的角度来看)。我甚至怀疑一个人可以区分10,000个扬声器!您需要为每个扬声器提供大量语音数据,一些智能预处理,以及更智能的机器(最有可能是深度)学习算法,以使其工作。不要以为你只能投入一个人工神经网络,并且只是工作。有很多类型的人工神经网络,在一般情况下我们仍然不知道如何可靠地训练它们。