理论上 神经网络为什么可以拟合任何函数?( 二 )


如果这个区域是圆呢?
我们就可以用8条直线乃至更多直线去拟合这圆,然后判断该点是否在这些直线内部:
同理,只要每层的直线够多,我们就可以拟合任意图像:
原文链接:用小学数学带你感受人工智能的魅力
科普:人工智能中一层神经网络包括一次连续线性变化与非连续线性变化 。
连续线性变化就是 y = k x + b y = kx+b y=kx+b,要求连续且为直线 。将输入的x乘系数后再加上截距,使它变大或变小,在图中为一条直线 。
非连续线性变化就是判断函数,在人工智能领域称为激活函数 。比如我们本次用的判断函数在0处是间断的,不是连续的 。
我们处理以上问题时,都用了两层神经网络,大家知道是哪两层吗?
以判断一点是否在矩形内为例:
从一个图形到多个图形
那么如果是要判断一点是否在以下阴影区域呢?
那就需要用4条直接拟合矩形,3条直线拟合三角形,把他们的结果汇总,需要再加一层神经网络( z 10 z10 z10):
有了这个例子,在二维平面内的所有问题(任何形状、任意多少区域)都可以使用3层神经网络来解决,比如:
这就是人工智能领域著名的结论:三层神经网络可以模拟任意决策面 。这就是深度学习(神经网络)的基础 。
神经网络的精妙之处在于,将前一层的多个输出值再次构造成一个新的线性函数从而进行再判断,以此类推 。神经网络不断从线性变为非线性的过程,就是提取数据特征的过程 。
从二分类到多分类
此上介绍的问题都是二分类问题(在阴影中或不在阴影中),但生活中绝大多数问题都是多分类问题 。比如如何判断一点在以下哪个区域?这就是一个三分类问题 。
几分类问题就设置几个输出,最后哪个判断函数的输出为1,该点就在哪个区域:
原文链接:用小学数学带你感受人工智能的魅力
从二维到多维
我在AI科普4:通俗易懂的机器学习模型中举例的肿瘤问题:有一批肿瘤病人相关数据,横轴为肿瘤存在时长,纵轴为肿瘤的大小,橙色为恶性肿瘤,绿色为良性肿瘤 。每位病人肿瘤的大小和存在时长就构成了二维空间中的一个点,现在我们有10位病人的肿瘤病情信息 。
如果新来一位病人,我们怎么判断它是良性还是恶性呢?这个问题我们就可以用神经网络去解决 。
构造一条线(曲线也可以),这条线是 k 1 y + k 2 x + b = 0 k_1y+k_2x + b= 0 k1?y+k2?x+b=0,它可以将良性肿瘤与恶性肿瘤分开:
新来一位病人,他得肿瘤的时长是x,目前大小是y,就把它代入神经网络 z = k 1 y + k 2 x + b z = k_1y+k_2x + b z=k1?y+k2?x+b 。
如果z大于0,在直线上方,就为恶性;在直线下方,就为良性 。
实际问题中,只要考虑的因素更多,数据的维度变多,也就意味着输入更多 。比如进行电影评分预测(结果分为5个等级),那么一部电影要考虑的因素可能包括电影类型、导演、演员、电影时长等等 。我们就把这些因素设为输出,将5个结果设为输出:
这个过程,是不是很像我们大脑的思考过程?其实神经网络就是根据人脑来设计的模型 。例如当我们要买一件短袖,我们会参考品牌、价格、款式、颜色等维度综合考量,得出买或不买的结论 。
这就是人工智能的强大之处,只要直线个数够多、维度够多,就可以拟合任意空间,解决任何问题 。比如现在的,就有1750亿个参数 。
难点就是学习这些参数
以一点是否在三角形中的函数为例 z 4 = k 4 f ( z 1 ) + k 5 f ( z 2 ) + k 6 f ( z 3 ) ? 2.5 z_4 = k_{4}f(z_1) + k_{5}f(z_2) + k_{6}f(z_3) - 2.5 z4?=k4?f(z1?)+k5?f(z2?)+k6?f(z3?)?2.5: