简单了解历史
人工智能之父
“让机器像人类一样思考”最早是由英国数学家艾伦·图灵于1950年发表的《计算机与智能》中提出。
因此,图灵被称为计算机科学与人工智能之父。
理解人工智能
智能(Intelligence)通常指的是人类独有的、用于解决问题的智慧。判断一个机器是否具有智能,可以使用图灵测试。
图灵测试——模仿游戏
图灵提出,要测试一个机器是否具有智能,只需要看它是否能成为一个“人类模仿大师”。
测试具有聊天功能的机器人是否“智能”,我们可以让它模仿人类的说话习惯,然后与不同的测试人员聊天。
判断结果
若在规定的时间内,大部分测试人员没有意识到与他聊天的是机器人,那我们就认为该机器人是“人类聊天模仿大师”,即它是具有智能的。
总结一下,
机器模仿人类思考的能力,被称为具有“人工智能”。
比如人脸解锁,就是机器在模仿人类“从不同的面部信息中,识别指定面孔”的能力。
后续
图灵的想法引起多位学者的重视,开启了探讨人工智能的热潮。
那么,早期的“人工智能”是如何实现的呢?
最早期的人工智能-----”专家系统“
基于设定好的条件规则,能够进行自动判断的程序问世,从而搭建了问题处理系统。
专家系统就是其中之一,它被认为是最早期的“人工智能”。卡
定义
将某个领域专家水平的知识作为数据存储起来形成“知识库”,并把其经验设定为规则条件,就构成了一个能够自动解决该领域问题的程序。
该程序称为专家系统。
隐喻
心理医生用来测试心理状况的问卷,就可以看作是一个心理行业的专家系统。
总结:
简单来说,早期的“人工智能”程序由大量的字典等内容组成数据储备,并用固定数量的条件规则作为逻辑。
机器在遇到问题时,通过规则从数据中查找答案。
因为所有的规则都由人工录入,所以机器并没有真的“思考”。
为此,美国哲学家约翰·希尔勒提出了“中文房间”的实验。
中文房间
对于一个英语母语者来说,若为他提供足够的翻译书籍工具 与查阅这些资料的时间,他就能够正常的通过文字与中文使用者交流。
但实际上我们认为他并没有学会中文,因为他无法处理数据以外的内容。
因此“中文房间”证明了专家系统并非具有真正的“智能”
人们认识到,要想实现真正的人工智能,除了读取固有的数据以外,还需要让电脑对未知的数据进行预测。
但限于当时计算机硬件的发展,直到图灵去世都未有一台机器通过图灵测试。
时间回到现在,随着计算机硬件大幅度升级,电脑的存储区域呈爆炸性增长。
人们提出了以统计学等数学方法为基础的新“人工智能” —— 机器学习。
机器学习与人工智能
了解机器学习
举一个例子
如何利用数学方法来实现机器学习呢?
现在让我们来扮演一名房地产销售经理,看一下这个过程。
例子:预测房价
用A与C来预测B
找出在这些数据中,最吻合的直线。然后获取房型B在该直线上对应的位置,就能够预测出它的售价。
通过某种方式将这些数据归纳、总结,就可以得出新的结论。这就是人类学习的过程。
分析例子
刚才根据数据找直线的过程,是机器学习中的「线性回归」算法,用于研究两个变量之间的线性相关关系。
除此之外,机器学习中还有许多其它的算法。
比如,K近邻、朴素贝叶斯、决策树、逻辑回归、聚类算法、支持向量机、EM算法等等。看到这些算法名称,是不是有点害怕?
不用担心,后面的课程里我们会避开复杂难懂的概念,带你从不一样的角度了解机器学习,并用它实现一些酷炫的人工智能应用~如下:
1. 文本处理
机器学习可以处理文本,具体分为文本识别、语音识别、自然语言处理等,主要目的是为了让机器理解人类的语言。
比如:
拍照提取图片文字;
聊天机器人、智能客服;
文本内容分类等。
2. 图像识别
我们可以利用摄像头等设备实现对图像进行处理、分析和理解的程序。
比如:
提取画面中的人脸信息;
图片内容提取、自动分类;
自动修改图片内容——美颜等。
3. 推荐系统
机器学习可以分析用户行为数据,建立用户偏好模型,最后找到用户可能感兴趣的对象进行推荐。
比如:
听歌软件的每日推荐;
短视频的相关推荐;
购物网站的“猜你喜欢”等。
比如,我们会学习如何通过“人脸识别”技术,自动提取监控设备中的人脸画面,对乘客的面部特征进行分析,并对未佩戴口罩的乘客进行筛选并提醒。
from aip import AipFace
""" 你的 APPID AK SK """
APP_ID = '10252021'
API_KEY = 'ZHe7788sh11GEjIAdEKeY'
SECRET_KEY = 'JMMzHe7788BUSH1ZhEnM1YUEhh'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)
import base64
def get_img(path):
with open(path, "rb") as f:
res = f.read()
img = base64.b64encode(res)
return img
""" 如果有可选参数 """
options = {}
options["face_field"] = "age,quality"
options["max_face_num"] = 10
img_path = "/User/image.png"
img = str(get_img(img_path), 'utf-8')
""" 带参数调用人脸检测 """
ret_data = client.detect(img, "BASE64", options)
print(ret_data)
from PIL import ImageDraw, Image, ImageFont
# 创建画布
with Image.open(img_path) as img:
img_cp = img.copy().convert('RGB')
draw = ImageDraw.Draw(img_cp)
# 自适应文字大小
print(img_cp.size[0])
font = ImageFont.truetype('font/yahei_consola.ttf', img_cp.size[0] * 1 // 30)
if ret_data['result']:
for face_dict in ret_data['result']['face_list']:
r = list(face_dict['location'].values())
left, top, width, height = r[:4]
age = face_dict['age']
print(age)
face_qa = face_dict['quality']['occlusion']
if face_qa['nose'] > 0.5 and face_qa['mouth'] > 0.5:
color = (0, 255, 0)
text = '\n已佩戴口罩'
else:
color = (255, 0, 0)
text = '\n未佩戴口罩'
draw.rectangle((left, top, left+width, top+height), outline=color, width=4)
draw.text((left + 5, top+height), str(age)+text, fill=color, font=font, align="left")
# draw.text((left, top+height), text, fill=color, font=font)
img_cp.save('face.png')
else:
print('人脸识别失败!')