人话人工智能(2):非线性模型和**函数
人工智能又叫AI,很多人经常把它和AV弄混,这是两个不同的概念。
AI英文全称是:Artificial Intelligence,翻译成中国话就是人工智能。它可以对人的思维过程进行模拟。
小岳岳捂住了嘴巴,我的天啊,这么神奇吗?
计算机的最底层是1010的逻辑,物质的最底层是原子核和电子组成。即便是很不可思议,但是确实1010组成了你看的电影,原子组成了你抱着啃的鸡腿,包括你也是由原子组成的并且你正在1010地思考。
所以,你需要试着让自己接受无法理解的事实。理解不了记着就好,吹牛逼的时候很有效果,因为别人听都听不懂,而你居然背下来了。
我会尽量把要讲的非线性模型说的好理解。
首先说,什么是线性模型?
线性模型就是一条线,就是一根黄瓜,一根香蕉,数学公式就是:
y = ax + b
这个公式我们初中都学过,就是坐标系上的一条直线。
当让AI识别数据的时候,如果两组数据,一条线就可以区分,那么AI就会算出这一条线。
线性的预测值应该是各个节点的加权和
公式是:
以TensorFlow为例,如果求他的前向传播过程,应该是如下代码:
但是现实世界大多数问题是线性模型解决不了的。
比如下面这个,你画一条线来区分试试:
如果还采用线性的求法,那么累死AI,它也求不对,因为画在哪里都区分不了。
它可能会随便画一条线,它告诉你,我求出来了,你一看根本不对。
这种样本分布,我们就得采用非线性的模型了。
顾名思义,非线性,就是说,不是一条直线,是曲线或者多条直线。
这类函数我们初中学过好多,抛物线就是一种。
抛物线就是一个非线性的模型,数学公式是y=x^2
线性函数有一个特点,就是一个因素导致结果变化。
比如:桶的重量和注水的高度。加水越多,桶就越重。加水桶重,放水桶轻,它实在人。
非线性函数不同,它是多个因素导致结果变化。
比如:桶的重量和放入东西的高度。都是高一米,一个放入石头,另一个放入棉花,单纯高度决定不了结果了。这时候除了看高度还得看放啥东西,并非随着一个高,结果就高。这是非线性。
其实线性外面套一个线性,就是非线性。
数学上讲的通啊。
y1 = ax
y2 = bx
yboss = y1*y2 = abx^2
很多人工智能框架,听(gen)了(ben)我(bu)解(shi)释(de),纷纷修改框架,加了一种叫**函数的东西。
**函数,就是在原来线性运算的基础上,加一层**函数,变成各式各样的非线性模型。
TensorFlow框架里面有7种不同的非线性**函数,常用的有tf.nn.relu、tf.sigmoid和tf.tanh。
再回到线性模型那个例子,这时候我们要用非线性来处理,公式就会变成这样:
以TensorFlow为例,代码层更简单
有了**函数再来实现非线性模型,也就意味着AI不止会画直线了,这时我们可以试验几个高级样本。
成功了。
这就是非线性模型和**函数。
搞得我想找初中的数学课本来看看,因为里面还提到了sin、tan、方差、求导数等等。