请教一个神经网络求函数最大值的问题

2021-11-09 22:54:17 +08:00
 zxCoder

最近在学神经网络,对于监督学习来说,步骤就是输入 x ,模型输出一个 y_pred ,然后和标签 y 计算一下 loss ,然后就反向传播更新参数。

那我如果想用神经网络求一个函数的最大值,是不是可以当模型输出 y_pred 时,我用 MAX_VALUE ,一个很大很大的值来跟 y_pred 计算 loss ,然后反向传播更新参数,让 loss 尽量小。

我不知道这个想法对不对,因为我找不到相关的介绍。


重新想了一下,是不是可以把这个函数直接加个负号,直接当成 loss 就行了?

1448 次点击
所在节点    问与答
36 条回复
Joshua999
2021-11-09 23:07:55 +08:00
求最大值应该不需要神经网络吧,记得好像有什么牛顿法,退火法。用神经网络的话,是最大值了就 1 ,不是最大值了就 0 呗
Xs0ul
2021-11-09 23:31:23 +08:00
按你的想法,模型学到的预测值就是 MAX_VALUE ,并不能实现预测某个函数最值的效果
ipwx
2021-11-09 23:36:14 +08:00
你能不能把你的原始问题说一说。

这估计也是个 XY problem
rpman
2021-11-09 23:51:17 +08:00
你这样 y_pred 逼近的就是 MAX_VALUE
你想逼近的其实就是 max(x)
GuuJiang
2021-11-10 04:51:33 +08:00
并不能,神经网络解决的问题是
求**一个函数**,使其对于测试集的输入得到的输出值(即 loss)最小
而你想要解决的问题是
对于一个**已知的函数**,求其在定义域上的最大值

看出区别了吧?问题的关键不在于最小和最大的区别,假如仅仅是最小和最大的区别的话确实可以通过一些手段把最大值问题变为最小值问题,而你这里压根就是两个完全不一样的问题

BTW ,你这个想法让我想到了一些刚开始学编程的初学者试图通过赋值语句来达到解方程的目的,这两种场景非常相似,都是有两个问题 A 和 B ,乍一看描述非常相似,实际上是完全不同的问题
Xs0ul
2021-11-10 05:06:59 +08:00
试图理解了一下楼主想问什么:
1. 一般的机器学习问题是,已有一组观测到的 xy 和由未知参数 w 定义的函数,求最优的 w 使函数预测的 y 与实际的 y 差距最小。
2. 让模型自动找某类函数的最大值也可以,比如一堆由 x=(a,b,c)定义的二次函数和对应的二次函数的最值 y ,神经网络够复杂或者恰好用到正确的层,可以拟合出求最值的公式(二次函数)。
3. 楼主想问的好像把 1 和 2 混在了一起,输入是 1. 但输出是 2.,这只要 max()就行了
zxCoder
2021-11-10 09:42:30 +08:00
就是有个作业 给一个函数比如 y=f(x),x 的取值是有限的,确定的,比如[x1=1 x2=5 x3=4 ...],然后 f(x)是一个神经网络,网络结构也给好了,就是一个两个线性层和一个激活函数。
然后要训练这个网络,最大化 y 的值。

@Joshua999
@Xs0ul
@ipwx
@rpman
@GuuJiang
@Xs0ul
ipwx
2021-11-10 10:06:58 +08:00
1 、你要训练的是 f(x) 本身? f(x) 可变?
2 、那训练了之后 y=f(x) 就变了啊。。。它可以变成任何东西。你有训练目标吗?就是 t[x] = f(x) 的正确答案 t[x]。
3 、没有目标去训练,它可以变成任何值啊。


楼主能不能用数学语言形式化一下你的问题,我无法理解。
ipwx
2021-11-10 10:08:36 +08:00
还有,两个线性层和一个激活层它顺序到底是啥?

y = A2*(u(A1*x+b1)) + b2 ?

如果是 y = u(A2*(A1*x+b1)+b2) 那是没有用的。两个线性层和一个线性层没有区别(参数可以训练的情况下)
ipwx
2021-11-10 10:08:59 +08:00
这种东西不能靠叙述,它根本不精确。上公式啊喂
zxCoder
2021-11-10 10:21:21 +08:00
@ipwx 就是有一个式子 y=xxxxx 我打不出来,里面有一部分是一个神经网络,然后现在要训练这个神经网络的参数使得这个式子的值最大。
这个式子是不是就相当于有标签的学习里面 loss function 的概念
ipwx
2021-11-10 10:22:09 +08:00
@zxCoder 不是,那你的目标到底是什么。。。

你一直在说值最大,但是不可能没有目标啊?没目标你根本不是有监督(你说的有标签)学习。
ipwx
2021-11-10 10:22:47 +08:00
so 你是不是想要 max L=sum_x f(x)
ipwx
2021-11-10 10:23:09 +08:00
对于单独的 for any x, max f(x) 这个问题似乎就没有意义了
ipwx
2021-11-10 10:24:03 +08:00
@zxCoder 你看,这不是 y=xxxxxx 我需要看你数学公式的形式化,而是问你,你的“最大化一个函数”到底形式化是什么意思。我给了两个形式:

max sum_x f(x)
for any x, max f(x)

所以你是哪个?
zxCoder
2021-11-10 10:25:10 +08:00
@ipwx 我从来没说过是有标签学习的啊。。。。
ipwx
2021-11-10 10:25:56 +08:00
@zxCoder 那行,所以你的问题是哪个

max sum_x f(x)
for any x, max f(x)
zxCoder
2021-11-10 10:27:14 +08:00
@ipwx 我看不太懂你下面的意思。不知道怎么描述了。。。
zxCoder
2021-11-10 10:27:49 +08:00
@ipwx 应该是第二种
ipwx
2021-11-10 11:15:53 +08:00
@zxCoder 那这个问题的定义很奇怪,因为对于一个足够宽的、一个非线性层的神经网络,可以拟合任何实数域上的可测函数。也就是说,

对于任何 C ,f(x) 恒等于 C

是你这个神经网络可以拟合的函数。

最终你会得到一个 meaningless 的函数,C 在训练过程中不断被推向负无穷(或者正无穷)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/814275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX