关于人工智能教学的思考和实践

标签:
教育 |
分类: 学习情况 |
美国国家科学院院士张首晟曾表示,人工智能发展的三大支柱首先是最根本的信息社会的定律——摩尔定律,就是我们的计算能力,在过去的五六十年里面每过十八个月就翻一次倍;其次是互联网产生了大量数据提供给机器学习;再次是算法的推进。随着数据技术和人工智能技术的发展,我们认知事物的方式,学生信息素养的要求在不断的发生改变。
今年夏天,学校里突然出现大批黑色橙纹的“蝴蝶”,一大片满是,学生好奇这是何方来客?名字是啥?大量涌现对生态环境有何影响?课堂上一些同学就在网络上搜索,但查了好一会也没有准确结果。我把手机给学生拍下照片,打开百度识图上传照片,马上识别出此物——“橙带蓝尺蛾”。学生了解了这些尺蛾(原来不是蝴蝶)大批出现的原因和防治措施,同时对百度的图像识别技术又点赞又表示非常感兴趣。于是,原来备好的程序课就变成了一节人工智能信息识别的概论课。
在以人工智能和大数据为显著特征的信息时代,我们的课堂完全可以让学生去感受人工智能技术,并发挥自己的创想去“玩”出新花样。今年第10期的《中国信息技术教育》中有吴俊杰老师和陈晨老师的对话专栏《如何理解作为学科的人工智能教育》,读后我也在想,如何让学生去体验人工智能的“神奇”,了解其基本原理,做些大多数学生力所能及的应用开发呢?
Scratch等图形化编程软件的出现,大大降低了接触程序与算法的学生的年龄层次,也拉近了学生间因学习能力个体差异而造成的差距。Scratch3.0的发布,让学生可以体会更多方位的人工智能技术。比如,可以直接拓展Micro:bit模块,做出感知温度、明暗度、方向、位置形态等信息的互动程序。不少公司也基于Scratch3.0开发了不少图形化硬件编程平台,让学生的创意程序能脱离电脑,由主控板来控制执行。前段时间偶尔搜索到乐智kenschool的编程平台(https://simba.kenschool.com.cn/),非常惊喜他们的平台集成了语音、文字识别、人脸识别、图像识别、人体分析、自然语言处理等信息识别与处理模块。自己苦苦思索如何降低编程难度让学生学习人工智能信息识别的苦恼一下消散了!下一轮相应的Scratch人工智能学习项目也开始以这个平台拟定。但同时我也担忧,哪一天这个平台是否就不免费开放了或者停止开发?要实现人工智能进入中小学课程,人工智能学科化,国家和地区联合技术机构开发非营利性的教学平台是非常必要的。
下面以几个实例让大家了解下这个平台。实时翻译程序学生原来觉得特别高深,在这里通过拓展Google翻译模块和Amazon朗读模块,马上就可以实现。学生对着麦克风说一句话,程序执行后即翻译为所选择的语言并朗读出来。
关于文字识别,我们编写下面这样一个简短的程序。将文本资料放在摄像头前,程序执行就可以读出所识别的文字了。
以上例子只算是最基础的应用实例,还应该让学生去创想图像识别、人脸识别、文字识别等在生活中还有什么应用,比如自动点名,以特定手势回答课堂问题实时统计等,然后针对具体问题去修改程序解决问题。学生也可以建立一个语音应答数据组,通过大量数据测试,打造个性化的聊天程序。
在高中阶段,吴俊杰老师和程晨老师提到人工智能的重点是机器学习,高中阶段要让学生能够测试已有的一些人工智能学习算法,理解机器学习的概念,利用大量的数据来训练某种机器学习模型。这是立足人智能这一角度所述的目标,从学科目标上看,理解基本原理、概念和算法思想是基本,但底层的算法优化和改进方面,我认为可能只有小部分学生能达到。课程标准对模块4“人工智能初步”的定位是:“通过本模块的学习,学生应该了解人工智能的发展历程及概念,能描述典型人工智能算法的实现过程,通过搭建简单的人工智能应用模块,亲历设计与实现简单智能系统的基本过程与方法,增强利用智能技术服务人类发展的责任感。“所以,高中阶段可以分层设定目标要求,学生普遍能够用代码式引用现在的开放数据库开发更灵活的程序,亲历设计与实现简单智能系统的基本过程与方法,小部分学生进行更深层的底层学习。就如语文学科,学生普遍具备需达成的读写能力和学科核心素养,小部分学生或许能进行更具深度的文学创作。
说到代码编程,在这里也提一下Python在信息识别和处理方面的应用。Scratch毕竟是一种实时互动,而代码编程则可开发独立的程序。例如,可以通过Python调用百度大脑AI开放平台的API接口实现一些应用。下面给出一个实现中英互译的实例(代码参考网络和百度技术文档):
import urllib,hashlib
import random
import requests,sys
def
getTransText(in_text):
q = in_text
fromLang =
'auto' #翻译源语言=自动检测
toLang1 =
'auto' #译文语言
= 自动检测
appid = '***********' #APP
ID
salt = random.randint(32768,
65536)
secretKey = '***********'
#密钥
#生成sign
sign =
appid+q+str(salt)+secretKey
#计算签名sign(对字符串1做md5加密,注意计算md5之前,串1必须为UTF-8编码)
sign = m1.hexdigest()
#计算完整请求
myurl =
'/api/trans/vip/translate'
myurl = myurl+'?
appid='+appid+'&q='+q+'&from='+fromLang+'&to='+toLang1+'&salt='+str(salt)+'&sign='+sign
url =
"http://api.fanyi.baidu.com"+myurl
# 发送请求
url = url.encode('utf-8')
res = requests.get(url)
#转换为字典类型
res = eval_r(res.text)
return
(res["trans_result"][0]['dst'])
while(True):
in_text=input()
print (in_text+'=
'+getTransText(in_text))
执行结果如下:
如果import
requests出现错误提示,可能是未安装相应库,可以在WINDOWS命令提示符下运行pip install requests
安装。百度翻译API可在百度AI开放平台注册并申请,因私密信息,上面程序隐藏api
ID和密钥。百度AI开放平台也提供了图像、人脸识别等应用接口,可以进行类似调用。如果学生的程序要基于网页执行,还需学习网页代码及信息传送等相关知识。
高中信息技术课程标准要求使学生“明确信息社会公民的权利与义务、伦理与法规,形成与信息社会相适应的价值观与责任感”,开展人工智能教育,也应让学生通过智能系统的应用体验,“了解社会智能化所面临的伦理及安全挑战,知道信息系统安全的基本方法和措施,增强安全防护意识和责任感。辩证认识人工智能对人类社会未来发展的巨大价值和潜在威胁,自觉维护和遵守人工智能社会化应用的规范与法规。”