人工智能基础知识入门
本分类包括AI人工智能、机器学习、算法、深度学习......
涉及知识很广:高等数学、线性代数、概率论、经济学等等方面的知识。
开始今天的文章:
背景:
首先,大家看下面这张图片,可以看出这就是一个锤子,但是让我们想想锤子是怎么生产出来的呢?
寻找材料->给锤子造型->高温打造->入水进一步塑性...
锤子的建造是不是根据我们需要的需求一步一步变化的呢?答案是当然的,是不是可以归纳为:
不同的输入对应不同的输出显然,没问题这是不是就和我们以前学的函数y=f(x)联系起来啦。
在美国,曾经有这么一个节目(PlinKo),大概就是在现场挑选一名幸运观众到台上完成一个游戏,将圆球从大板上扔下来如果扔到对应的轨道里就获得相应的奖品。
这里是不是就可以把扔球的位置看做一个变量,结果看做一个对应的值呢一个输入对应一个输出
来看一下这位观众中奖时的样子,大致看一下:
背景分享完了,下面我们直接奔向主题: 抓取原理,借助数学知识,解决实际的问题(例如:如何让我们每次扔圆球都扔到中奖的位置呢?),这里就是通过简单的公式去验证原理,而是通过代码实现的方式去证明。
圆球位置的变化会让结果也发生变化,很强大的理论。
可以理解为:输入对应输出
我们通过大量的实验来找到这里面的规律,我们就可以结合AI知识开发一个智能机器人,通过扔圆球来获得大奖。
简单来说就是,通过数据,数据会说话(转化为一种信息),建立一个模型(方法)来解决实际的问题,再通过数据来训练模型,最后我们就可以通过feature来预测label了!
人类通过回忆之前的经历,衍生出经验,对于下次类似的事情就有解决的办法,对应的解决措施。例如:上图的决策树,判断条件判断结果。通过天气因素,判断车的到达时间,我们就可以通过收集大量的数据,选择一个模型,从而实现预测。
机器学习其实就是通过以前的数据,找出规律,建立模型,从而预测未来。机器学习是实现人工智能(AI)的一个途径。
机器学习和我们备战高考其实是一样的道理,我们通过做模拟题,找到出题规律,对一些题目建立模型,找到方法,我们模拟的分数越高,我们的高考成绩就会相应的预测的更好。
模拟一个扔圆球的游戏,来进行分析,最后预测不同位置所对应的不同结果。
通过map()函数,通过设置函数,对应一个新的列表。
Python中的numpy库有两种排序,一种是排序后返回列表,另一种是通过返回下标。
这里我们选择knn算法模型进行代码实现预测:
这样就可以通过这个简单的knn(一维方法)进行预测,预测的效果可能不是很精确,接下来就要采取措施提高模型优化。
解决方案:
调参增加数据维度增加测试数据改变模型,改变算法重新优化数据集:
分为训练集和测试集(比例大概10:1)
k的选择
一般选择训练集的条数开根号,上下15个百分点适宜...
通过我们收集的预测导入得出:
补充:处理数据,把数据充分打散,拆分成训练集和测试集
如何计算准确率:
如果找到最好的参数后,准确率还不够的话,我们就进入到下一步,增加变量的个数.
增加新的变量:
我们研究的数据都是基于数字,所以这里就将球颜色的信息转化为球的弹性数据,如何转换呢?
可以在加载test_data数据的时候进可以转换,np.loadtxt(...)中的api coverters={数据列数(从0开始数):转换函数} 同时注意设置的编码 编码要与读取文件的编码匹配
假设变量是多维度的,那我们如何进行呢?
这里就要定义一个新的参考概念了,欧氏距离!
d=根号下所有变量与预测变量差的平方之和
那我们新的代码就可以写了,增加变量feature:
但是,这样做精确率并没有上升多少,为什么???
因为颜色这个指标的差距实在太小,我们需要换方法,在原来模型的基础上再次调优!
引入数据处理之数据归一化,数据整形:
让每一个变量都有发言权!不会再因为变量之间的差距过于小而没有效果。
其实就是设置一个比例,各个变量设置比例即可
代码实现:
可以看出还影响小球落地位置的因素,假设变量足够多,我们又该如何是好呢?难道继续采用挨个变量归一化设置标准欧式距离吗???
接下来,向量出场了!
向量之向量的点乘概念:
有必要说一下两个向量之间的夹角,如果夹角越小,他的余弦值就越大,代表两个向量就越接近,例如:我们的推荐系统,猜你喜欢,就是根据向量的点乘实现的。两个商品就好像是两个向量,如果他们之间的夹角越小,点乘的结果越大,两个商品就越相似,就越推荐相似的商品给客户。
以上就是使用基本的知识实feature对应的label结果...
谢谢大家的阅读!!!
人工智能之基础理论
1.大数据智能理论。研究数据驱动与知识引导相结合的人工智能新方法、以自然语言理解和图像图形为核心的认知计算理论和方法、综合深度推理与创意人工智能理论与方法、非完全信息下智能决策基础理论与框架、数据驱动的通用人工智能数学模型与理论等。
2.跨媒体感知计算理论。研究超越人类视觉能力的感知获取、面向真实世界的主动视觉感知及计算、自然声学场景的听知觉感知及计算、自然交互环境的言语感知及计算、面向异步序列的类人感知及计算、面向媒体智能感知的自主学习、城市全维度智能感知推理引擎。
3.混合增强智能理论。研究“人在回路”的混合增强智能、人机智能共生的行为增强与脑机协同、机器直觉推理与因果模型、联想记忆模型与知识演化方法、复杂数据和任务的混合增强智能学习方法、云机器人协同计算方法、真实世界环境下的情境理解及人机群组协同。
4.群体智能理论。研究群体智能结构理论与组织方法、群体智能激励机制与涌现机理、群体智能学习理论与方法、群体智能通用计算范式与模型。
5.自主协同控制与优化决策理论。研究面向自主无人系统的协同感知与交互,面向自主无人系统的协同控制与优化决策,知识驱动的人机物三元协同与互操作等理论。
6.高级机器学习理论。研究统计学习基础理论、不确定性推理与决策、分布式学习与交互、隐私保护学习、小样本学习、深度强化学习、无监督学习、半监督学习、主动学习等学习理论和高效模型。
7.类脑智能计算理论。研究类脑感知、类脑学习、类脑记忆机制与计算融合、类脑复杂系统、类脑控制等理论与方法。
8.量子智能计算理论。探索脑认知的量子模式与内在机制,研究高效的量子智能模型和算法、高性能高比特的量子人工智能处理器、可与外界环境交互信息的实时量子人工智能系统等。
人工智能涉及哪些学科
人工智能是一个综合学科,其本身又分为多个方面如神经网络、机器识别、机器视觉、机器人等。一个人想自学所有人工智能方面并不是很容易的一件事。对于你想知道人工智能在编程方面需要多深的要求。怎么说好呢无论C++还是汇编他都是一门语言主要会灵活运用。大多机器人仿真都用的混合编程模式,也就是运用多种编程软件及语言组合使用。之所以这样是为了弥补语言间的不足。prolog在逻辑演绎方面比突出。C++在硬件接口及windos衔接方面比较突出,MATLAB在数学模型计算方面比较突出。如果单学人工智能算法的话prolog足以,如果想开发机器仿真程序的话VC++MATLAB应该多学习点。下面是小编整理的相关书籍,仅供参考。1.人工智能算法方面:《人工智能及其应用》第三版、人工智能与知识工程。。第一本感觉能简单并且全面点。这类书其实很多可是大多内容都是重复的所以买一到两本即可。2.机器视觉算法方面:《机器视觉算法与应用》这本书讲的大多都是工业化生产中机器视觉应用。从内容来说并不是很简单,建议不要当入门教材来学习。3.机器人方面:新版《机器人技术手册》日译的书。这本书由基础到应用以及一些机器人实际问题上讲述得很全面。强烈建议买一本。二、学习人工智能AI需要下列最基础的知识:1.需要数学基础:高等数学,线性代数,概率论数理统计和随机过程,离散数学,数值分析。2.需要算法的积累:人工神经网络,支持向量机,遗传算法等等算法;当然还有各个领域需要的算法,比如要让机器人自己在位置环境导航和建图就需要研究SLAM;总之算法很多需要时间的积累。3.需要掌握至少一门编程语言,毕竟算法的实现还是要编程的;如果深入到硬件的话,一些电类基础课必不可少。人工智能一般要到研究生才会去学,本科也就是蜻蜓点水看看而已,毕竟需要的基础课过于庞大。