本文作者:柳絮泡泡

浅谈人工智能

柳絮泡泡 11-03 16
浅谈人工智能摘要: 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑,人工智能时代就要来临了,科幻电影中的场景将成为现实,未来已来!什么是人工智能?通俗来讲,就是让机器能像人一样思考。这个无需解...

人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑,人工智能时代就要来临了,科幻电影中的场景将成为现实,未来已来!


浅谈人工智能

什么是人工智能?通俗来讲,就是让机器能像人一样思考。这个无需解释太多,因为通过各种科幻电影我们已经对人工智能很熟悉了。大家现在感兴趣的应该是——如何实现人工智能?



要实现AI技术的应用,"神经网络"(neural network)必不可少,人工智能的底层模型是神经网络。许多复杂的应用(比如模式识别、自动控制)和高级模型(比如深度学习)都基于它。

那么,神经网络是什么?


人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。在工程与学术界也常直接简称为“神经网络”或类神经网络。


人工神经网络是受到人类大脑结构的启发而创造出来的,这也是它能拥有真智能的根本原因。在我们的大脑中,有数十亿个称为神经元的细胞,它们连接成了一个神经网络。




人工神经网络正是模仿了上面的网络结构。下面是一个人工神经网络的构造图。每一个圆代表着一个神经元,他们连接起来构成了一个网络。




上面的x是神经元的输入,相当于树突接收的多个外部刺激。w是每个输入对应的权重,它影响着每个输入x的刺激强度。


大脑的结构越简单,那么智商就越低。单细胞生物是智商最低的了。人工神经网络也是一样的,网络越复杂它就越强大,所以我们需要深度神经网络。这里的深度是指层数多,层数越多那么构造的神经网络就越复杂。

如何将数据传入神经网络中


在语音识别、人脸识别这些应用中,是如何将语音、人脸输入到神经网络中的?


下面我拿识别猫的例子来给大家介绍如何将猫的图片数据输入到神经网络中。




这个例子中,待输入的数据是一张图像。为了存储图像,计算机要存储三个独立的矩阵(矩阵可以理解成二维数组),分别与此图像的红色、绿色和蓝色相对应(世界上的所有颜色都可以通过红绿蓝三种颜色调配出来)。如果图像的大小是64 * 64个像素(一个像素就是一个颜色点,一个颜色点由红绿蓝三个值来表示,例如,红绿蓝为255,255,255,那么这个颜色点就是白色),所以3个64 * 64大小的矩阵在计算机中代表了这张图像,矩阵对应于图像的红绿蓝强度值。上图中只画了个5 * 4的矩阵,而不是64 * 64,为什么呢?因为没有必要,搞复杂了反而不易于理解。


为了更加方便后面的处理,我们一般把上面那3个矩阵转化成1个向量x(向量可以理解成1 * n或n * 1的数组,前者为行向量,后者为列向量)。那么这个向量x的总维数就是64 * 64 * 3,结果是12288。在人工智能领域中,每一个输入到神经网络的数据都被叫做一个特征,那么上面的这张图像中就有12288个特征。这个12288维的向量也被叫做特征向量。神经网络接收这个特征向量x作为输入,并进行预测,然后给出相应的结果。


对于不同的应用,需要识别的对象不同,有些是语音有些是图像有些是传感器数据,但是它们在计算机中都有对应的数字表示形式,通常我们会把它们转化成一个特征向量,然后将其输入到神经网络中。

神经网络如何进行预测


给定一个输入特征向量x(例如你想要识别的图像——是否有猫),你需要一个算法进行计算之后进行结果输出(在这里我们用的是逻辑回归算法)。这个被输出的预测结果我们称为y^y^,假设y。




上图第一个公式中的x是个(n,1)维的矩阵,表示一个训练样本,里面的n表示一个训练样本中的特征数量,例如一张图片就是一个训练样本,图片中每个颜色强度值就是一个特征;w也是一个(n,1)维的矩阵,它表示权重(weight),它一一对应于每个输入的特征,也可以说它指示了某个特征的重要程度;b是一个实数,在这里可以将其看作为一个阈值。


如何理解w和b呢?我举个例子来帮助大家理解。可以把上面的算法过程看作是一种通过权衡输入然后再做出决定的一个过程。假设周末即将到来,你听说在你的城市将会有一个音乐节。你要决定是否去参加这个节日。你需要通过权衡3个因素(3个特征)来做出决定:1、天气好吗 2、你的女友是否愿意陪你去 3、举办地点离地铁近吗 这3个因素就对应着上图中的x1、x2,x3(它们是x这个训练样本中的3个特征)。我们可以给它们赋个值,如果天气好,那么x1为1,否则为0,x2和x3雷同;假设你很讨厌坏天气,如果天气不好,你就不会去参加这个节日,对其它两个因素要求不高(这里假设你是个老司机,女人多得是,不怕冷落了女友)。那么我们分别给3个权重赋值为7,2,2。w1的值大很多,这表明天气对你来说很重要,比你的女友是否愿意去,以及交通的便利性更重要。而b我们可以看作一个阈值,假设我们给b赋值为-5,那么也就是说,只要天气好,即使女友不陪你去、交通也不方便,你也会去参加这个节日——x1 * w1 + x2 * w2 + x3 * w3 = 1 * 7 + 0 * 2 + 0 * 2 = 7(这里的*代表乘法)(我们这里先不考虑σ函数),而7 +(-5)> 0,结果是你会去那个音乐节。如果我们选择不同的w和b值,那么对于同一个输入x,会有不同的结果输出。


训练神经网络的目的就是通过训练过程来得到这些w和b值。这些w和b值可以让神经网络得到一项判断能力,一项预测能力——输入一张图片,神经网络根据训练好的w和b,通过上面的公式根据每个像素的值以及与其对应的权重值以及阈值来判定这张图里是否有猫。神经网络就是这样来进行预测的。它和我们人类的思考方式是一样的。虽然我们人可以做出非常复杂的判断,但是基本原理是很简单的。人为什么能轻松分辨出一个图片中是否有猫?因为我们人就是一个巨型的神经网络,这个神经网络里面包含了数亿甚至更多的神经元(上图蓝色的圆圈就表示一个神经元),每个神经元都可以接受多个输入,在日常生活中,小孩子通过大人的教导,不断的看见猫,我们的神经元对于这个输入就形成了很多特定的w(权重),所以当再次看见一个猫时,这个输入(这个猫)与相应的w联合起来进行运算后,其结果就指示了这个输入是一个猫。



觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享