人工智能及数学运算的基础方法

Posted xiaozhangpython

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了人工智能及数学运算的基础方法相关的知识,希望对你有一定的参考价值。

一.人工智能的五大核心技术

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。

人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和计算机视觉等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。人工智能可以对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。

人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种“复杂工作”的理解是不同的。

1.计算机视觉

计算机视觉是指计算机从图像中识别出物体、场景和活动的能力。计算机视觉技术运用由图像处理操作及其他技术所组成的序列,来将图像分析任务分解为便于管理的小块任务。比如,一些技术能够从图像中检测到物体的边缘及纹理,分类技术可被用作确定识别到的特征是否能够代表系统已知的一类物体。

计算机视觉有着广泛的应用,其中包括:医疗成像分析被用来提高疾病预测、诊断和治疗;人脸识别被Facebook 用来自动识别照片里的人物;在安防及监控领域被用来指认嫌疑人;在购物方面,消费者现在可以用智能手机拍摄下产品以获得更多购买选择。

机器视觉作为相关学科,泛指在工业自动化领域的视觉应用。在这些应用里,计算机在高度受限的工厂环境里识别诸如生产零件一类的物体,因此相对于寻求在非受限环境里操作的计算机视觉来说目标更为简单。计算机视觉是一个正在进行中的研究,而机器视觉则是“已经解决的问题”,是系统工程方面的课题而非研究层面的课题。因为应用范围的持续扩大,某些计算机视觉领域的初创公司自2011 年起已经吸引了数亿美元的风投资本。

技术分享图片

2.机器学习

机器学习指的是计算机系统无须遵照显式的程序指令,而只依靠数据来提升自身性能的能力。其核心在于,机器学习是从数据中自动发现模式,模式一旦被发现便可用于预测。比如,给予机器学习系统一个关于交易时间、商家、地点、价格及交易是否正当等信用卡交易信息的数据库,系统就会学习到可用来预测信用卡欺诈的模式。处理的交易数据越多,预测就会越准确。

机器学习的应用范围非常广泛,针对那些产生庞大数据的活动,它几乎拥有改进一切性能的潜力。除了欺诈甄别之外,这些活动还包括销售预测、库存管理、石油和天然气勘探,以及公共卫生等。机器学习技术在其他的认知技术领域也扮演着重要角色,比如计算机视觉,它能在海量图像中通过不断训练和改进视觉模型来提高其识别对象的能力。

现如今,机器学习已经成为认知技术中最炙手可热的研究领域之一,在2011~2014 年这段时间内就已吸引了近10 亿美元的风险投资。谷歌也在2014 年斥资4 亿美元收购Deepmind这家研究机器学习技术的公司。

技术分享图片

3.自然语言处理

自然语言处理是指计算机拥有的人类般的文本处理的能力。比如,从文本中提取意义,甚至从那些可读的、风格自然、语法正确的文本中自主解读出含义。一个自然语言处理系统并不了解人类处理文本的方式,但是它却可以用非常复杂与成熟的手段巧妙处理文本。例如,自动识别一份文档中所有被提及的人与地点;识别文档的核心议题;在一堆仅人类可读的合同中,将各种条款与条件提取出来并制作成表。以上这些任务通过传统的文本处理软件根本不可能完成,后者仅针对简单的文本匹配与模式就能进行操作。

自然语言处理像计算机视觉技术一样,将各种有助于实现目标的多种技术进行了融合。建立语言模型来预测语言表达的概率分布,举例来说,就是某一串给定字符或单词表达某一特定语义的最大可能性。选定的特征可以和文中的某些元素结合来识别一段文字,通过识别这些元素可以把某类文字同其他文字区别开来,比如垃圾邮件同正常邮件。以机器学习为驱动的分类方法将成为筛选的标准,用来决定一封邮件是否属于垃圾邮件。

因为语境对于理解“timeflies”(时光飞逝)和“fruitflies”(果蝇)的区别是如此重要,所以自然语言处理技术的实际应用领域相对较窄,这些领域包括分析顾客对某项特定产品和服务的反馈,自动发现民事诉讼或政府调查中的某些含义,自动书写诸如企业营收和体育运动的公式化范文,等等。

技术分享图片

4.机器人

将机器视觉、自动规划等认知技术整合至极小却高性能的传感器、制动器以及设计巧妙的硬件中,这就催生了新一代的机器人,它有能力与人类一起工作,能在各种未知环境中灵活处理不同的任务。例如,无人机、可以在车间为人类分担工作的“cobots”等。

5.语音识别

语音识别主要是关注自动且准确地转录人类的语音技术。该技术必须面对一些与自然语言处理类似的问题,在不同口音的处理、背景噪声、区分同音异形/异义词(“buy”和“by”听起来是一样的)方面存在一些困难,同时还需要具有跟上正常语速的工作速度。语音识别系统使用一些与自然语言处理系统相同的技术,再辅以其他技术,比如描述声音和其出现在特定序列与语言中概率的声学模型等。语音识别的主要应用包括医疗听写、语音书写、电脑系统声控、电话客服等。比如Domino 抯Pizza,最近推出了一个允许用户通过语音下单的移动APP。

上述5 项技术的产业化,是人工智能产业化的要素。人工智能将是一个万亿级的市场,甚至是10 万亿级的市场,将会为我们带来一些全新且容量巨大的子产业,比如机器人、智能传感器、可穿戴设备等,其中最令人期待的是机器人子产业。(以上文章转载自http://www.sohu.com/a/219358847_100110445,有个别地方进行修改.)

二.python基础运算方法

小编自己整理的最基础数学方法,如有错误,还请指正.技术分享图片

 

1.解构

  • 了解解构

    a = 10
    b = 20
    a,b=b,a
    print(a,b)   #此时将a和b的值进行交换
  • 利用解构进行赋值


    直接把元组或者列表中的数据拿出来.
    a, b, c = (10, 20, 30) 必须一一对应  a=10,b=20,c=30
  • 利用解构进行冒泡排序


    从上面的例子引出冒泡排序:
    冒泡排序算法的原理如下:
    比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
    针对所有的元素重复以上的步骤,除了最后一个。
    持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
    例子:对齐进行排序
    lst = [7,9,6,3,8,4,2,5,1,0,435,345,123,567,457,456,678]
    for i in range(len(lst)):
       for j in range(len(lst)-1):
           if lst[j]>lst[j+1]:
               lst[j],lst[j+1]=lst[j+1],lst[j]
    print(lst)
    此时程序还可以优化,不用循环这么多次:
    for i in range(len(lst)-1):
       for j in range(len(lst) - 1 - i):
           if lst[j]>lst[j + 1]:
               lst[j], lst[j + 1]= lst[j + 1], lst[j]
    print(lst)

2.比较(三目运算)


a = 10
b = 20
c = a if a>b else b
print(c)  #用于判断    此时c为20

3.返回最大最小值


a = 10
b = 20
print(max(a,b))  返回20
print(min(a,b))   返回10

 

4.求和

sum (Iterable,start) :把可迭代的对象进行循环,计算和,然后和后面的数相加,不写的话默认为0


例子:计算两个列表的和
lst1=[2,3,4]
lst2=[1,2,3,4]
print(sum(lst1,sum(lst2)))

5.绝对值

abs():返回绝对值  

6.列表推到式

[结果 for循环 if筛选] 
例子:100以内能被3整除的数的平方
lst = [i*i for i in range(1, 101) if i % 3 == 0]
print(lst)

7.字典推到式


{key: value for循环 if 筛选}
例子:集合中的key和value进行调换
dic = {"张无忌":"九阳神功", "乔峰":"降龙十八掌", "楚留香":"帅"}
d = {dic[k]: k for k in dic}
print(d)

8.集合推到式

{key for循环 if 筛选} 作用是去重

例子.


lst = [1,-1,6,-6,123,3245,-9,0,9]
s={abs(i) for i in lst}
print(s)  #{0, 1, 6, 9, 3245, 123}

9.元祖推到式

元祖无推导式,因为其不可变.

10.枚举

enumerate():获取集合的枚举对象,拿到的是元祖

例子:


lst = ["叮当猫","机器猫","美少女战士"]
for el in enumerate(lst): #拿到的是元祖
   print(el)  # (0, ‘叮当猫‘)(1, ‘机器猫‘)(2, ‘美少女战士‘)
for index,el in enumerate(lst):  #结构
   print(index,el) # 0 叮当猫  1 机器猫 2 美少女战士

11成员运算

成员运算符 in  和 not in 的运用

  • if x in y           判断 x 否出现在y中,  是的话返回true

  • if x not in  y    x 不再y中,返回true

    例子1



lst = [1,8,16,32,55,78,89,7,9,6,4,44,2,5,5,7,8]
n = int(input("请输入一个数字:"))
if n in lst:
   print("我在列表中")
else:
   print("我不在列表中")
这个例子应用在屏蔽敏感字符当中,如下所示
li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
comment = input("请输入你的观点:")
for el in li:
   if el in comment:
        comment= comment.replace(el,"*" * len(el))
print(comment)

   

例子2:顺序查找

从列表第一个元素开始,顺序进行搜索,直到找到为止。效率慢


lst = [1,8,16,32,55,78,89,7,9,6,4,44,2,5,5,7,8]
lst2=sorted(list(set(lst))) #去重并排序
print(lst2)
n = int(input("请输入一个数字:"))
for i in lst:
   if i==n:
       print("存在")
       break
else:
   print("不存在")
 

12.身份运算

  • is    比较的是内存地址

  • is not

    a=10

    b=10

    print(a is b)  ?

    如果ab的值分别为1000呢?

13.位运算

   a= 60  (二进制位 0011   1100  )  

   b=13  (二进制位  0000   1101  )

  • &  按位与运算符 a&b 0000  1100      12

  • | 按位与运算符 a|b    0011  1101     61

  • ^按位异或运算符a^b   0011   0001   49

  • ~ 按位取反运算符~a    1100 0011      -61  

  • <<  左移运算符       >>右移运算符  后边接指定移动的位数

14.逻辑运算

  • and

  • or

  • not

    逻辑运算的优先级

    ()>not >and >or

    x or y,如果x为0,则返回y,否则返回x, and和or相反,运算的时候如果有False,可以认为0,True可以认为是1,因此 输出的结果 有可能是数字或者False(True)。

15.二分法查找

每次能够排除掉一半的数据. 查找的效率非常高. 但是局限性比较大, 必须是有序序列才可以使用二分法查找.

核心思想:掐头结尾取中间.

lst = [1,8,16,32,55,78,89,7,9,6,4,44,2,5,5,7,8]
lst2=sorted(list(set(lst))) #去重并排序
# print(lst2) [1, 2, 4, 5, 6, 7, 8, 9, 16, 32, 44, 55, 78, 89]
left = 0
right = len(lst2)-1  #13
n = int(input("请输入一个数字:"))
while left<=right:
   mid = (left+right) //2 #索引只能是整数
   if n >lst2[mid]:
       left=mid+1
   elif n<lst2[mid]:
       right =mid-1
   else:
       print("存在")
       break
else:
   print("不存在")
连接地址:https://mp.weixin.qq.com/s/p0KAAgnfBFmA9-dBeuDYEA

扫描下方二维码,获取更多信息
技术分享图片




































































































以上是关于人工智能及数学运算的基础方法的主要内容,如果未能解决你的问题,请参考以下文章

Python基础 ---对象及数字对象与数学运算

人工智能数学基础--概率与统计2:排列组合的表示方法二项式系数及斯特林近似

人工智能数学基础--概率与统计2:排列组合的表示方法二项式系数及斯特林近似

[Python系列-12]:人工智能 - 数学基础 -2- 数组元素的算术运算

[Python系列-14]:人工智能 - 数学基础 -4- 数组元素的线性代数运算(向量矩阵运算)

[Python系列-11]:人工智能 - 数学基础 -1- 数组元素的函数运算