@TOC
前言
本文主要介绍什么是AI技术。
一、什么是AI技术
人工智能(Artificial Intelligence),英文缩写为AI。它是用于模拟、延伸和扩展人的某些思维过程和智能行为,集理论、方法、技术及应用系统于一身的一门新的技术科学。通俗来说,人工智能就是由人类生产制造出来的,具有一定思考能力的、能够模拟人类行为的一种计算机技术。
二、AI技术是如何实现的
2.1 知识图谱
知识图谱就像是人的海马体,能够储存分析所接收到的数据。
Tips:知识图谱是指显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。知识图谱技术是指知识图谱建立和应用的技术,是融合认知计算、知识表示与推理、信息检索与抽取、自然语言处理与语义Web、数据挖掘与机器学习等方向的交叉研究
2.2 问答系统
问答系统就像是人的语言中枢,来读懂人类的语言,并与之对话。
Tips:问答系统分为开放领域的对话系统和特定领域的问答系统。问答系统技术是指让计算机像人类一样用自然语言与人交流的技术。人们可以向问答系统提交用自然语言表达的问题,系统会返回关联性较高的答案。
2.3 AI芯片
AI芯片就相当于人类的大脑,是最为核心的部分,是对数据处理的中心。
Tips:AI芯片主要有传统芯片和智能芯片两类,另外还有受生物脑启发设计的类脑仿生芯片等。传统芯片可以覆盖人工智能程序底层所需要的基本运算操作,但是在芯片架构、性能等方面无法适应人工智能技术与应用的快速发展。智能芯片是专门针对人工智能领域设计的芯片,包括通用和专用两种类型。
三、AI在不同领域的发展趋势
3.1 硅光芯片
电子芯片的发展逼近摩尔定律极限,难以满足高性能计算不断增长的数据吞吐需求。硅光芯片用光子代替电子进行信息传输,可承载更多信息和传输更远距离,具备高计算密度与低能耗的优势。随着云计算与人工智能的大爆发,硅光芯片迎来技术快速迭代与产业链高速发展。
3.2 个性化推荐
越来越多的媒体开始采纳以“今日头条”为代表的“个性化推荐”模式,即基于用户的阅读倾向和偏好,通过算法来为他们推送其所感兴趣的新闻内容,代表性应用如“一点资讯”、“天天快报”等。“抖音”等短视频平台也采用了算法推荐。
这种算法推荐机制提高了信息分发效率,更好地将内容与用户需求相匹配,有助于发挥内容价值、延长用户使用时长和提高用户留存率。但其负面影响也日益突出,尤其是“信息茧房”和算法的价值观问题,引发了社会关注和广泛讨论。
四、AI+前端
一个完整的人工智能项目,不可或缺的是算法、数据和工程。
具体的大致可以分为五块内容:人机交互,数据可视化,产品Web, 算法执行和模型训练。对于前三点偏重交互的领域,毋庸置疑用前端做起来驾轻就熟。
4.1 人机机互
在AI的项目中,很多时候需要获取麦克风和摄像头的权限,好实现“听”,“说”, “看”的功能。
H5中的MediaDevices.getUserMedia 文档,里面对这块有详细的介绍。
对于图片的处理,以Canvas为主。
Web Audio API 很好的解决了这个问题,它提供了在Web上控制音频的一个非常有效通用的系统,允许开发者来自选音频源,对音频添加特效,使音频可视化,添加空间效果等等
4.2 数据可视化
人脸可视化、大数据可视化
4.3 产品Web
任何人工智能的技术最终一定需要转化成实际的产品或者项目,以Portal和控制台为主。
4.4 算法执行
执行算法逻辑,比如人脸识别,语音识别。
随着 V8 引擎在2008 年发布, Node.js 在2009 年 发布,前端的领地就扩展到服务器端,桌面应用。PC性能体能,V8对JS执行的优化,特别WebGL 在各个浏览器端的普及,很多算法执行不一定并不一定需要在后端执行,浏览器也可以胜任。
4.5 模型训练
类ConvNetJS 这种在浏览器端做深度学习算法训练的工具。
前端在这块还是非常欠缺的,缺少非常成功的实践。因为跨了领域,而且基础的专业类库往往都不是javascript写的,造成更大的隔阂,但就像谷歌的TensorFlow机器学习框架底层大部分使用 C++实现,但选择了 Python 作为应用层的编程语言。
其他相关AI前端应用:预测数值(线性回归)、商标识别(图片分类)、声控轮播图(语音识别)、手写数字识别
五、其他
5.1 QA1
Q:类比牛顿第二定律的案例,在你的工作和生活中还有哪些问题可以用监督学习的框架来解决?模型假设和参数是什么?评价函数(损失)是什么?
A:在工作和生活中,可以使用监督学习框架来解决的问题有:自动驾驶汽车,自动图像分类,自动机器翻译等。模型假设是通过从训练数据中提取特征,建立模型来预测输入的未知数据的输出。参数是模型中的变量,用于控制模型的行为。评价函数(损失)是用来衡量模型预测结果和实际结果之间的差异,并用来优化模型的准确性。5.2 QA2
Q:为什么说深度学习工程师有发展前景?怎样从经济学(市场供需)的角度做出解读?
A:深度学习工程师有发展前景是因为现在深度学习技术正在被越来越多的行业所采用,例如自然语言处理、计算机视觉等领域,从市场供需角度来说,由于技术的普及,对深度学习工程师的需求量越来越大,而且深度学习工程师所需要掌握的技能也比较特殊,从而把市场上的深度学习工程师供给量限制在一定范围内,使其成为一种紧缺职位,给深度学习工程师提供了发展的机会。
5.3 QA3
Q:样本归一化:预测时的样本数据同样也需要归一化,但使用训练样本的均值和极值计算,这是为什么?
A:样本归一化是将数据的值缩放到一定的范围内,以便于不同特征之间的比较和处理。在训练模型时,我们使用训练数据的均值和极值来计算缩放参数,并将其应用于训练和验证数据。同样,在预测时,我们需要使用相同的缩放参数来对新的样本数据进行归一化。
使用训练样本的均值和极值计算缩放参数的原因是,这可以确保在预测时使用与训练时相同的缩放方式,从而使预测结果更加准确和一致。如果我们在预测时使用新的均值和极值来计算缩放参数,那么我们就不能保证我们正在使用相同的缩放方式,这可能会导致预测结果出现错误。此外,使用训练数据的均值和极值来计算缩放参数还可以确保我们的模型对于未见过的数据具有更好的泛化能力。
5.4 QA4
Q:当部分参数的梯度计算为0(接近0)时,可能是什么情况?是否意味着完成训练?
A:当某些参数的梯度接近0时,并不意味着训练已经完成。事实上,这可能导致优化器在训练期间无法更新这些参数,从而使训练效果变差。解决这个问题的一些方法包括使用梯度裁剪、改变优化器、使用正则化等技术。
当部分参数的梯度计算为0或接近0时,可能是因为以下几种情况:
- 梯度消失:在深度神经网络中,反向传播算法计算梯度时,如果梯度通过多个层传递时,梯度值可能会变得非常小甚至消失,这可能导致某些参数的梯度接近0。
- 局部最小值:在梯度下降算法中,优化器试图最小化损失函数,但有时可能会被卡在局部最小值附近,导致部分参数的梯度接近0。
- 对称性:如果模型存在对称性,例如在卷积神经网络中使用相同的权重进行卷积,可能导致梯度计算为0。
- 正则化:正则化可以抑制模型的某些参数,这可能导致梯度计算为0。
5.5 QA5
Q:随机梯度下降的batchsize设置成多少合适?过小有什么问题?过大有什么问题?
A:对于小数据集,通常batch size可以设置得较小,例如1、2、4、8等。对于大数据集,batch size应该设置得大一些,通常为32、64、128等。这是因为如果batch size过小,则更新的方向在各个迭代中会变化很大,这会使收敛速度变慢,而如果batch size过大,则会导致内存不足,计算效率降低。
过小的batch size会导致以下问题:
- 收敛速度变慢:每次迭代中使用的数据太少,使得更新的方向可能变化很大,导致收敛速度变慢。
- 噪声影响:每个batch的样本都是随机选择的,如果batch size太小,则模型更新的方向可能受到噪声的影响,从而导致模型学习到的参数不稳定。
过大的batch size会导致以下问题:
- 内存不足:每次迭代中使用的数据太多,会导致内存不足,从而无法进行训练。
- 计算效率低下:每次迭代中需要计算的梯度变得更加复杂,因此计算效率降低。