【问题标题】:How to convert a single word into vector for neural network input如何将单个单词转换为向量用于神经网络输入
【发布时间】:2017-10-16 07:07:44
【问题描述】:

我是 ML 新手,我正在思考一个简单的 hello world 问题,作为使用 ANN 的一种实践。这就是问题所在,假设我有一个带有英文名称及其对应性别的训练数据集:

ALEX,M
BONNIE,F
CARLO,F
DAVID,M
EDDY,M
...

我想建立一个模型来预测姓名的性别。由于ANN的输入必须是向量的形式,我正在考虑将一个名称转换为一个向量,其特征数量与数据集中最长的名称(即10个)相同,然后将A = 1,B = 2 , ... , Z=26, 并且 null=-1 到向量。

例如:

ALEX will be [1, 12, 5, 24, -1, -1, -1, -1, -1, -1] 

输出层将是 {0, 1},代表男性或女性。

对我来说这听起来很奇怪。像这样将一个单词输入 ANN 是一种好方法吗?

【问题讨论】:

    标签: machine-learning neural-network deep-learning


    【解决方案1】:

    使用 one-hot 编码。这意味着你有一个很大的输入大小,但它已被证明是有效的。使用A=1, B=2, Z=26 给网络的印象是 B 离 A 比 Z 离 A 更近,而且它需要很多隐藏节点来映射函数。

    使用 one-hot 编码:

    • 答:[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    • 乙:[0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    • Z:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
    • 无:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

    所以每个字母需要 26 个输入。

    【讨论】:

    • 谢谢托马斯。通过使用 one-hot 输入编码,我可以将准确率从 60% 提高到 85%。这是个好主意!
    • 我给自己一个简短的说明:如果您打算在输出上使用 one-hot 编码,请小心使用损失函数。对于较大的稀疏性,您最终可能只是训练网络来预测所有 0。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2020-08-11
    • 2014-04-11
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多