最简单的人工智能 - 用深度学习计算三好学生评选标准

人工智能(Artificial Intelligence,简称AI)从孕育诞生至今,已经至少有近80年历史了。80年的光阴,虽然在历史的长河中不过是浪花一朵,但如果以人的一生来说,已经是进入耄耋老年了。但奇迹般的是,随着深度学习技术的横空出世,人工智能又神奇地焕发出了再一次的青春。深度学习系统AlphaGo及其升级版本一再战胜围棋领域的多位世界冠军级选手,最后甚至到了一败难求、人类选手只能仰视的地步,不能不说是引起了世人广泛关注人工智能领域的决定性事件。指纹识别、人脸识别、无人驾驶等应用了深度学习方法而又贴近人们日常生活的技术,可以说深刻地改变了人类的生活和消费方式,也因此让人工智能更加深入人心,激起了人工智能尤其是深度学习领域的学习热潮。

笔者旧作《深度学习——基于Python语言和TensorFlow平台》中,引入了一个三好学生评选标准推测的问题,很可能是用人工智能(特别是深度学习技术)来解决的最简单的实际生活问题了。用人工智能来解决这个问题,无异于牛刀杀鸡,但也正因为它简单,也更有助于我们大众快速形象地了解人工智能的基本原理。

这个问题大致是这样的:


三好学生成绩问题的引入

某个学校将要评选三好学生;我们知道,三好学生的“三好”指的是品德好、学习好、体育好;而要进行评选,如今都需要量化,也就是说学校会根据德育分、智育分和体育分三项分数来计算一个总分,然后根据总分来确定谁能够被评选为三好学生。假设这个学校计算总分的规则是:德育分占60%(充分体现了学校对品德培养的重视),智育分占30%,体育分占10%(对体育的重视似乎稍有不足)。这个规则如果用一个公式来表达是这样的(我们后面一般用计算机中常用的“*”号来代替乘号“×”,以避免与英语字母“x”混淆):


总分 = 德育分 * 60% + 智育分* 30% + 体育分 * 10%


把百分比转换成小数,也就是:


总分 = 德育分 * 0.6+ 智育分* 0.3+ 体育分 * 0.1


可以看到,计算三好学生总成绩的公式,实际上是把三项分数各自乘上一个权重(weight)值,然后相加求和。


实际评分标准

这是我们要解决问题的背景。那么,我们需要解决的问题是这样的:有两位孩子的家长,知道了自己孩子的三项分数以及总分,但是学校并没有告诉家长们计算出总分的规则。家长们猜测出计算总分的方法肯定是把三项分数乘以不同的权重后相加来获得,唯一不知道的就是这几个权重值到底分别是多少。现在家长们就想用人工智能中神经网络的方法来大致推算出这三个权重分别是多少。


问题分析

我们假设第一位家长的孩子A的德育分是90,智育分是80,体育分是70,总分是85,那么我们分别用w1、w2、w3来代表德育分、智育分、和体育分所乘的权重,可以得到这个式子:


90 * w1 + 80 * w2 + 70 * w3 = 85

另一位孩子B的德育分是98,智育分是95,体育分是87,总分是96,我们可以得到这个式子:


98* w1 + 95 * w2 + 87* w3 = 96


从数学中解方程式的方法来说,这两个式子中,一共有3个未知数,理论上只要有3个不等价的式子,就可以解出答案了。但我们恰恰只有两个学生的数据,只能凑出两个式子,也就无法用解方程的方法解决这个问题。那么这时候,就可以用到人工智能中的经典 —— 神经网络的方法来尝试解决这个问题。


我们先按照一般的理解,可以设计出如下图一样的神经网络模型:


三好学生成绩问题神经网络模型图


在此我们先介绍一下我们在神经网络模型图中的一般约定:


-> 神经网络模型图一般都包含1个输入层、1个或多个隐藏层,以及1个输出层;

-> 一般来说,输入层是描述输入数据的形态的;我们用方块来代表每一条输入数据的一个数(或者叫一个字段),叫做输入节点;输入节点一般用x来命名,如果有多个数值,则用x1, x2,…, xn来代表;

-> 隐藏层是描述我们设计的神经网络模型结构中最重要的部分;隐藏层可能有多个;每一层中都会有1个或多个神经元,我们用圆圈来表示,叫做神经元节点或隐藏节点,有时也直接简称为节点;每一个节点都接收上一层传来的数据并进行一定的运算后向下一层输出数据,符合神经元的特性,神经元节点上的这些运算我们称做“计算操作”或“操作”(operation,简称op);

-> 输出层一般是神经网络模型的最后一层,会包含1个或多个以菱形表示的输出节点;输出节点代表着整个神经网络计算的最后结果;输出层的节点一般习惯上用y来命名,但并非必须;

-> 我们在神经网络模型图中,一般约定在各个节点的右下方(有时候因为拥挤也会在左下方)标记节点的名称,在节点的左上方标记该节点所做的计算,例如,上图中x1,x2,x3,n1,n2,n3,y都是节点名称,“* w1”、“* w2”、“* w3”、“∑”这些都代表节点运算。


现在我们回到模型本身,这是一个标准的前馈神经网络,即信号总是往前传递的神经网络。输入层有3个节点x1, x2, x3,分别代表了我们前面所说的德育分、智育分和体育分。因为问题比较简单,隐藏层我们只设计了一层,其中有3个节点n1、n2、n3,分别对三个输入的分数进行处理,处理的方式就是分别乘以3个权重w1、w2、w3。输出层只有一个节点y,因为我们只要求一个总分数值;节点y的操作就是把n1、n2、n3三个节点输出过来的数值进行相加求和。


可以看到,这个神经网络模型是非常简单的,我们使用目前应用最广泛的深度学习框架TensorFlow来实现这个神经网络的代码如下:

import tensorflow.compat.v1 as tf

tf.disable_eager_execution()

x1 = tf.placeholder(dtype=tf.float32)

x2 = tf.placeholder(dtype=tf.float32)

x3 = tf.placeholder(dtype=tf.float32)

yTrain = tf.placeholder(dtype=tf.float32)

w1 = tf.Variable(0.1, dtype=tf.float32)

w2 = tf.Variable(0.1, dtype=tf.float32)

w3 = tf.Variable(0.1, dtype=tf.float32)

n1 = x1 * w1

n2 = x2 * w2

n3 = x3 * w3

y = n1 + n2 + n3

loss = tf.abs(y - yTrain)

optimizer = tf.train.RMSPropOptimizer(0.0001)

train = optimizer.minimize(loss)

sess = tf.Session()

init = tf.global_variables_initializer()

sess.run(init)

for i in range(50000):

    result = sess.run([train, x1, x2, x3, w1, w2, w3, y, yTrain, loss], feed_dict={x1: 90, x2: 80, x3: 70, yTrain: 85})

    print(result)

    result = sess.run([train, x1, x2, x3, w1, w2, w3, y, yTrain, loss], feed_dict={x1: 98, x2: 95, x3: 87, yTrain: 96})

    print(result)



运行代码,将神经网络训练50000次之后,可以看到如下图如所示,几个系数的推测结果和预测的评分标准已经非常接近于实际值了:



神经网络运行结果


可以看到,神经网络根据输入的两位学生的成绩和他们的总分,不断自行调节几个系数,最终训练的次数越多,得到的结果越接近于实际可能的值。这与人类不断“凑数”去猜结果的方法似乎看起来一样,但是人工智能技术是有一个可靠的方法来保证“猜测”的结果不断向正确的方向迈进的,这是它的不同之处。


人工智能是人类这些年最重要的科技应用成果之一,它不但可以用于高深的科技领域,也在我们日常生活中日益发挥着重要的作用,本文以一个最简单的人工智能应用例子,形象地解释了人工智能中的深度学习技术应用于生活问题的过程。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容