【问题标题】:Using machine learning (ANN) to classify odd numbers使用机器学习 (ANN) 对奇数进行分类
【发布时间】:2019-01-27 08:11:31
【问题描述】:

你能改进这个模型对奇数的预测吗?我能得到的最好结果是 50%,无论我的神经网络有多大和有多深。

from tensorflow import keras

X=[]
Y=[]
n=100
for i in range (n):
    X+=[i]
    Y+=[(-1)**i]
    if Y[i]<0:
        Y[i]=0

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(1, )),
    keras.layers.Dense(2, activation=tf.nn.softmax),
    keras.layers.Dense(1, activation=tf.nn.softmax)
])

model.compile(loss='binary_crossentropy', optimizer="adamax",metrics=['binary_accuracy'])
model.fit(X, Y, epochs=100,batch_size=10)

【问题讨论】:

    标签: machine-learning neural-network keras numbers discrete-mathematics


    【解决方案1】:

    这不是一个微不足道的任务,问你可能期望它是。您可以在this SO 线程中找到一个工作模型。此外,这仍然是一个活跃的研究领域(称为平价问题)。如果你不给它一个整数作为输入,而是给它数字的二进制表示,你的网络的准确性可能会提高。否则,您的网络将(很可能)无法解决此任务。

    您也可以在this SE 线程中找到有关算术运算的神经网络问题的更多信息。根据你想了解这个问题的深度,过去也有很多论文处理这个问题(例如thisthat)。

    如果您向网络提供二进制表示,而不仅仅是十进制版本,则一般算术运算是可能的。您甚至可以确定 ANN 执行此类特定任务所需的确切神经元数量。

    【讨论】:

    • 哇!我认为我的方法或代码有问题。我可以让模型预测的最佳预测最多不比掷硬币好!
    【解决方案2】:

    为了完成 FlashTek 的回答,神经网络在特定的算术运算上存在问题,即乘法、除法和导数运算,参见 https://stats.stackexchange.com/questions/217703/can-deep-neural-network-approximate-multiplication-function-without-normalizatioCan't approximate simple multiplication function in neural network with 1 hidden layer

    这是因为神经网络属于数学框架,它们是广义线性模型 (GLM)https://en.wikipedia.org/wiki/Generalized_linear_modelhttp://mikkyang.com/blog/neural-networks-and-generalized-linear-models/index.html)和加权的非线性泛化 Sum Model (WSM) (https://en.wikipedia.org/wiki/Weighted_sum_model),请注意在 GLM 和 WSM 中不涉及张量(矩阵、向量)之间的乘法,仅与一个标量权重。这就是为什么神经网络不能应用于或不足以解决具有特定结构(涉及乘法、除法等)的数学问题

    【讨论】:

      猜你喜欢
      • 2018-08-15
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2018-03-05
      • 1970-01-01
      • 2018-09-07
      • 2019-11-08
      相关资源
      最近更新 更多