Questions tagged «neural-networks»

5
机器学习高尔夫:乘法
我想向这个社区提出另一种高尔夫挑战: (人工)神经网络是非常流行的机器学习模型,可以对其进行设计和训练以近似任何给定的(通常是未知的)功能。它们通常用于解决高度复杂的问题,这些问题我们不知道如何通过算法解决,例如语音识别,某些类型的图像分类,自动驾驶系统中的各种任务……对于神经网络的入门书籍,请考虑一下这方面的出色知识维基百科文章。 由于这是我希望成为一系列机器学习高尔夫球挑战中的第一项,所以我想让事情尽可能简单: 在您选择的语言和框架中,设计和训练一个神经网络,对于给定)的和之间(包括该整数)的所有整数,计算出它们的乘积。(x1个,X2)(x1,x2)(x_1, x_2)X1个⋅ X2x1⋅x2x_1 \cdot x_2X1个,X2x1,x2x_1, x_2− 10−10-10101010 绩效目标 为了符合条件,您的模型与任何这些条目的正确结果之间的偏差不得超过。0.50.50.5 规则 您的模特 必须是“传统”神经网络(节点的值是前一层中某些节点的加权线性组合,再加上激活函数来计算), 只能使用以下标准激活功能: 线性(x )= xlinear(x)=x\textrm{linear}(x) = x, SOFTMAX( X⃗ )一世= eX一世∑ĴËXĴsoftmax(x→)i=exi∑jexj\textrm{softmax}(\vec{x})_i = \frac{e^{x_i}}{\sum_j e^{x_j}}, 塞卢α ,β(x )= { β⋅ Xα ·&β(eX− 1 )如果 x > 0, 除此以外seluα,β(x)={β⋅x, if x>0α⋅β(ex−1), otherwise\textrm{selu}_{\alpha, \beta}(x) = \begin{cases} \beta \cdot x …

2
神经网络可以识别素数吗?
背景 识别素数似乎不适合(人工)神经网络。但是,通用逼近定理指出,神经网络可以逼近任何连续函数,因此特别应该可以表示一个人想要的任何有限支持的函数。因此,让我们尝试识别前百万个数字中的所有质数。 更准确地说,因为这是一个编程网站,所以我们将其设为2 ^ 20 = 1,048,576。低于此阈值的质数为82,025或大约8%。 挑战 您能找到将神经网络正确分类为素数或不素数的20个整数吗? 出于此挑战的目的,神经网络的大小是表示它所需的权重和偏差的总数。 细节 目标是最小化单个显式神经网络的大小。 您网络的输入将是一个长度为20的矢量,其中包含整数的各个位,分别用0和1或-1和1表示。这些的顺序可以是最高有效位在前或最低有效位在前。 网络的输出应为单个数字,以便在某个截止值以上将输入识别为质数,而在同一截止值以下则将输入视为非质数。例如,正数可能表示素数(负数不是素数),或者大于0.5可能意味着素数(小于0.5则不是素数)。 在所有2 ^ 20 = 1,048,576个可能的输入上,网络必须是100%准确的。如上所述,请注意,此范围内有82,025个素数。(因此,始终输出“非素数”的精度为92%。) 用标准的神经网络术语来说,这可能称为过拟合。换句话说,您的目标是完美拟合素数。可能使用的其他词语是“训练集”和“测试集”相同。 该挑战不考虑“可训练”或“可学习”参数的数量。确实,您的网络可能包含硬编码的权重,下面的示例完全是硬编码的。取而代之的是,所有的重量和偏见是考虑的参数和计数。 训练或生成您的神经网络所需的代码长度与您的分数无关,但是发布相关代码当然值得赞赏。 基准线 作为基准,可以“记住”所有82,025个素数,总重量和偏差为1,804,551。 请注意,下面的代码包含许多内容:工作示例,工作测试代码,使用已知神经网络库的神经网络的有效定义,“硬编码”(或至少不是“训练有素”)神经网络,和分数的有效衡量。 import numpy as np bits = 20 from keras.models import Sequential from keras.layers import Dense from sympy import isprime # Hardcode some weights weights = …

1
用神经网络排序
以前的神经网络高尔夫挑战(这个和那个)启发了我提出一个新的挑战: 挑战 找到最小的前馈神经网络,以便在给定具有整数条目的任何4维输入向量(a ,b ,c ,d)(一种,b,C,d)(a,b,c,d),网络输出的坐标方向误差严格小于。[ - 10 ,10 ][-10,10][-10,10]排序(a,b,c,d)分类(一种,b,C,d)\textrm{sort}(a,b,c,d)0.50.50.5 可接纳性 为了应对这一挑战,将前馈神经网络定义为层的组成。的层的功能,其由矩阵指定的权重,一个矢量的偏见,以及一个激活函数并在坐标方向上应用:左:右ñ→ R米大号:[Rñ→[R米L\colon\mathbf{R}^n\to\mathbf{R}^m甲∈ řm × n一种∈[R米×ñA\in\mathbf{R}^{m\times n}b ∈ ř米b∈[R米b\in\mathbf{R}^m F:R → RF:[R→[Rf\colon\mathbf{R}\to\mathbf{R} L (x ):= f(A x + b ),X ∈ řñ。大号(X):=F(一种X+b),X∈[Rñ。 L(x) := f(Ax+b), \qquad x\in\mathbf{R}^n. 由于可以针对任何给定任务调整激活功能,因此我们需要限制激活功能的类别,以使这一挑战变得有趣。允许以下激活功能: 身份。 F(t )= tF(Ť)=Ťf(t)=t ReLU。 F(t )= 最大值(t ,0 )F(Ť)=最大值⁡(Ť,0)f(t)=\operatorname{max}(t,0) Softplus。 F(t …

2
用神经网络找到多项式的最大根
挑战 找到最小的前馈神经网络,以便在给定具有整数项的任何3维输入向量,网络输出最大前馈神经网络(即,“最正”)的根多项式,其误差严格小于。(a,b,c)(a,b,c)(a,b,c)[−10,10][−10,10][-10,10]x3+ax2+bx+cx3+ax2+bx+cx^3+ax^2+bx+c0.10.10.1 可接纳性 在我之前的神经网络高尔夫挑战赛中,可接纳性的概念似乎有些局限,因此对于这一挑战,我们使用了更为宽松的前馈神经网络定义: 甲神经元是一个函数,其由向量所指定的权重,一个偏压和激活函数的方式如下:ν:Rn→Rν:Rn→R\nu\colon\mathbf{R}^n\to\mathbf{R}w∈Rnw∈Rnw\in\mathbf{R}^{n} b∈Rb∈Rb\in\mathbf{R} f:R→Rf:R→Rf\colon\mathbf{R}\to\mathbf{R} ν(x):=f(w⊤x+b),x∈Rn.ν(x):=f(w⊤x+b),x∈Rn. \nu(x) := f(w^\top x+b), \qquad x\in\mathbf{R}^n. 具有输入节点 的前馈神经网络是,可以根据序列个神经元,其中每个从并输出标量。鉴于一些指定的一组的输出节点,则所述神经网络的输出是向量。{1,…,n}{1,…,n}\{1,\ldots,n\}(x1,…,xn)∈Rn(x1,…,xn)∈Rn(x_1,\ldots,x_n)\in\mathbf{R}^n(νk)Nk=n+1(νk)k=n+1N(\nu_k)_{k=n+1}^Nνk:Rk−1→Rνk:Rk−1→R\nu_k\colon\mathbf{R}^{k-1}\to\mathbf{R}(x1,…,xk−1)(x1,…,xk−1)(x_1,\ldots,x_{k-1})xkxkx_kS⊆{1,…,N}S⊆{1,…,N}S\subseteq\{1,\ldots,N\}(xk)k∈S(xk)k∈S(x_k)_{k\in S} 由于可以针对任何给定任务调整激活功能,因此我们需要限制激活功能的类别,以使这一挑战变得有趣。允许以下激活功能: 身份。 f(t)=tf(t)=tf(t)=t ReLU。 f(t)=max(t,0)f(t)=max⁡(t,0)f(t)=\operatorname{max}(t,0) SoftPlus。 f(t)=ln(et+1)f(t)=ln⁡(et+1)f(t)=\ln(e^t+1) 乙状结肠。 f(t)=etet+1f(t)=etet+1f(t)=\frac{e^t}{e^t+1} 正弦曲线。 f(t)=sintf(t)=sin⁡tf(t)=\sin t 总体而言,可允许的神经网络由输入节点,神经元序列和输出节点指定,而每个神经元由权重,偏差和激活函数(由上表列出)指定。例如,以下神经网络是可以接受的,尽管它不能满足此挑战的性能目标: 输入节点: {1,2}{1,2}\{1,2\} 神经元: forνk(x1,…,xk−1):=xk−2+xk−1νk(x1,…,xk−1):=xk−2+xk−1\nu_k(x_1,\ldots,x_{k-1}):=x_{k-2}+x_{k-1}k∈{3,…,10}k∈{3,…,10}k\in\{3,\ldots,10\} 输出节点: {5,9,10}{5,9,10}\{5,9,10\} 该网络由8个神经元组成,每个神经元具有零偏倚和身份激活。换句话说,该网络计算由和生成的广义斐波纳契数列,然后以该顺序输出该数列的第5,第9和第10个数。x1x1x_1x2x2x_2 计分 给定的实数与十进制扩展,让是最小的非负整数为其中,并且让是最小的非负整数为其中是整数。然后我们说是精密的。xxxp(x)p(x)p(x)ppp10−p⋅|x|&lt;110−p⋅|x|&lt;110^{-p}\cdot |x|<1q(x)q(x)q(x)qqq10q⋅x10q⋅x10^q \cdot xp(x)+q(x)p(x)+q(x)p(x)+q(x)xxx 例如,的精度为,而的精度为。x=1.001x=1.001x=1.001444x=0x=0x=0000 您的分数是神经网络中权重和偏差的精度之和。 (例如,上面的示例得分为16。) 验证 虽然可以用三次公式来表示根,但是最大的根也许最容易通过数值手段获得。继@ XNOR的建议下,我计算出的最大根整数的每一次选择,并且结果可以在这里找到。此文本文件的每一行都是形式。例如,第一行报告的最大根大约为。a,b,c∈[−10,10]a,b,c∈[−10,10]a,b,c\in[-10,10]a,b,c,rootx3−10x2−10x−10x3−10x2−10x−10x^3-10x^2-10x-1010.9924714044544910.9924714044544910.99247140445449 编辑:如果多项式具有多个根,我发布的原始文件将出错。当前版本应该没有此类错误。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.