佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 10365|回复: 35

Python 数学与人工智能开发

[复制链接]
发表于 22-6-2016 03:50 PM | 显示全部楼层 |阅读模式
本帖最后由 凌云 于 30-6-2016 02:54 PM 编辑

开发人工智能是我多年的志愿,一直到最近才有机会通过书籍,课程,视频等学习相关知识。
最近比较热门的是机器学习,谷歌在这方面有很好的成果比如语音识别,自动驾驶等。
人工智能在科学上也有很大的贡献比如最近的制造玻色-爱因斯坦凝聚实验。
军事上也有国家制造武装的人工智能无人机,只需通过权限就可以攻击敌人。
所以人工智能对于一个国家的进步是很重要的,因为可以应用在各个领域。

由于以前做过的软件,现在每个月有固定收入,就打算全职学习 Python,和人工智能应用。
也想用这贴记录自己的学习过程和思路,可能可以帮助其他人少走一些弯路。

目录:

第一章完

第二章我们会用 matplotlib library 来画图表。关于下载matplotlib:http://matplotlib.org/
matplotlib 是 Python 的一个开源库。

第二章:A)笛卡尔坐标系 (平面直角坐标)
第二章:B)Python 的 List 和 tuple
第二章:C)简单图表
第二章:D)图表上的标示
第二章:E)标示纽约的2000-2012年平均温度
第二章:F)比较纽约的月平均温度




评分

参与人数 1人气 +3 收起 理由
yk13 + 3

查看全部评分

回复

使用道具 举报


ADVERTISEMENT

发表于 22-6-2016 04:18 PM 来自手机 | 显示全部楼层
留个脚印
我目前读书也是在学校学着AI.
回复

使用道具 举报

 楼主| 发表于 22-6-2016 04:20 PM | 显示全部楼层

人工智能会不会产生意识?

本帖最后由 凌云 于 30-6-2016 01:25 AM 编辑

首先很多人会担心的课题之一是人工智能会不会产生意识呢?
现在的人工智能都是在电脑上运行运算法则,通过对大数据的处理,得出一个判断结果,以达到既定的目标。
说穿了背后运行的还是电脑,所以并不会产生意识。
但是科学家并没有放弃制造有意识的硬件,目前最前端的科学家是Ray Kurzweil, 谷歌的人工智能执行长。
他就声称在2029年,他在工作的机器学习将制造出有意识的大脑,他称之为奇点(Singularity)。

理论上,如果了解了意识产生的原理,是可以制造出有意识的硬件的,就像了解了鸟飞行的原理,人类就可以制造出飞机。另一个例子是人工心脏,并不需要用和心脏同样的材质,只需要用同样原理来制造就可以。

这类有意识的人工智能称为强人工智能,和目前的弱人工智能还是有区别的。

John Searle: "Consciousness in Artificial Intelligence" | Talks at Google



回复

使用道具 举报

 楼主| 发表于 22-6-2016 05:19 PM 来自手机 | 显示全部楼层
kelvin1215 发表于 22-6-2016 04:18 PM
留个脚印
我目前读书也是在学校学着AI.

你们学的是游戏里的AI 吗?还是机器学习的?
回复

使用道具 举报

 楼主| 发表于 23-6-2016 03:39 PM | 显示全部楼层
本帖最后由 凌云 于 29-6-2016 08:34 PM 编辑

Pedro Domingos 写的 The Master Algorithm, Youtube 可以找到他在谷歌的演讲,基本上总结了现在五种人工智能类型和他们各自取得的成果,和各自的优缺点。他们都有自己的一套运算法则。而他作者认为人们应该寻找一个可以结合所有这些运算法则的运算法则(Master Algorithm)。

人工智能五种类型:
1. The Symbolists (符号主义)
2. Connectionists  (深度学习,神经网络)
3. The Evolutionaries (遗传算法,进化算法,Genetic Programming)
4. The Bayesians (源自统计学)
5. The Analogizers (类推算法,比如Amazon的产品推荐系统)

是不是可以找到这样一个完美的数学模型呢?
不知道,我们还是先学好这五类的原理和数学吧。

回复

使用道具 举报

 楼主| 发表于 23-6-2016 06:11 PM | 显示全部楼层
本帖最后由 凌云 于 15-3-2017 06:20 PM 编辑



正则表达式(Regular Expression)和文本数据库的结合。基本上就是用一串很长的正规表达式来解析这些文本,然后建立一个思维网络,这个思维网络的实现好像是自己做的格式,类似决策树或XML格式但是更符合思维概念的需求,也就是这个格式就具备了我们常用的各种抽象概念。

回复

使用道具 举报

Follow Us
 楼主| 发表于 25-6-2016 11:16 PM | 显示全部楼层
本帖最后由 凌云 于 28-6-2016 11:48 PM 编辑

昨天我就照着思路做了一个简单的聊天机器人,就是用一系列正则表达式来匹配,然后提供回复。
可以继续加功能,像其它很多聊天机器人那样,但是我想做有逻辑思维,可以发现不足的知识,自己去搜索学习的机器人。
分辨名词,动词,连接词这些不难,难点在于怎么组织数据成为知识,并且可以组织成一整套的对一个学科的学识,不是单纯的搜索回答,而是可以发现矛盾的知识点,这个数据结构该怎么实现呢?
对于这个我有一个基本的理论但是还有很多地方需要完善的,基本上就是定义知识点的应用,称为对数据的改变。这样如果一个知识点会虽然让某个任务完成,但是却造成其它的后果,都可以从这个知识点的定义发现,并且拒绝使用这样的知识点。或者根据不同的任务,选择不同的知识点来应用。。
回复

使用道具 举报

 楼主| 发表于 27-6-2016 11:08 PM | 显示全部楼层
本帖最后由 凌云 于 30-6-2016 10:47 AM 编辑

中南大学的公开课:Youtube 中南大学:人工智能PK人类智能 第一讲

这个公开课从人工智能的历史讲到如何用电脑实现自动推理等等,是学习人工智能必须看的。
从第一讲到第七讲,由浅入深,很精彩。

回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 29-6-2016 08:28 PM | 显示全部楼层
本帖最后由 凌云 于 29-6-2016 10:41 PM 编辑

数学在人工智能扮演重要的角色。我最近在看《Doing Math With Python》。
觉得可以把每一章的重要内容放上来。先贴上目录,英文的怕管理扣分,注上中文:

Chapter 1: Working with Numbers (数字)
Chapter 2: Visualizing Data with Graphs(用图表视觉化数据)
Chapter 3: Describing Data with Statistics(用统计学描述数据)
Chapter 4: Algebra and Symbolic Math with SymPy(SymPy里使用矩阵和符号)
Chapter 5: Playing with Sets and Probability(玩集合和概率)
Chapter 6: Drawing Geometric Shapes and Fractals(画出几何图形和碎形)
Chapter 7: Solving Calculus Problems(解微分方程式问题)

备注:这里只着重于发Python的数学处理部分,关于Python的语法和一般函数请自行找学习资源。
回复

使用道具 举报

 楼主| 发表于 29-6-2016 08:40 PM | 显示全部楼层
本帖最后由 凌云 于 29-6-2016 08:43 PM 编辑

Chapter 1: Number (数字)

A) 简单数学
加法和减法:
IDLE 输入和输出:
  1. >>> 1 + 2
  2. 3
  3. >>> 1 + 3.5
  4. 4.5
  5. >>> -1 + 2.5
  6. 1.5
  7. >>> 100 – 45
  8. 55
  9. >>> -1.1 + 5
  10. 3.9
复制代码



回复

使用道具 举报

 楼主| 发表于 29-6-2016 08:45 PM | 显示全部楼层
本帖最后由 凌云 于 5-8-2016 10:13 PM 编辑

Chapter 1: Number (数字)

B)乘法和除法
  1. >>> 3 * 2
  2. 6
  3. >>> 3.5 * 1.5
  4. 5.25
复制代码

  1. >>> 3.0 / 2
  2. 1.5
  3. >>> 4 / 2
  4. 2
复制代码

回复

使用道具 举报

 楼主| 发表于 29-6-2016 08:52 PM | 显示全部楼层
本帖最后由 凌云 于 29-6-2016 08:58 PM 编辑

Chapter 1: Number (数字)

C) Floor Division(小的整数) and Remainder (余数)

  1. >>> 3 // 2
  2. 1
  3. >>> -3 // 2
  4. -2
复制代码


floor division // 是除了之后,取小的整数。
3除2等于1.5,小的整数等于1.
-3除2等于-1.5,小的整数等于-2

  1. >>> 9 % 2
  2. 1
复制代码


取余数用% ,9除2的余数等于1.

回复

使用道具 举报

 楼主| 发表于 29-6-2016 09:11 PM | 显示全部楼层
本帖最后由 凌云 于 29-6-2016 10:42 PM 编辑

Chapter 1: Number (数字)

D) power of numbers 指数,根号,
用**来表示指数:

  1. >>> 2 ** 2
  2. 4
  3. >>> 2 ** 10
  4. 1024
  5. >>> 1 ** 10
  6. 1
复制代码
2的2次方为4,2的10次方为1024..

  1. >>> 8 ** (1/3)
  2. 2.0
复制代码
8的根号3为2. 1/3 次方就是根号3
回复

使用道具 举报

 楼主| 发表于 29-6-2016 09:12 PM | 显示全部楼层
Chapter 1: Number (数字)
E) 挂弧

  1. >>> 5 + 5 * 5
  2. 30
  3. >>> (5 + 5) * 5
  4. 50
复制代码


回复

使用道具 举报

 楼主| 发表于 29-6-2016 09:15 PM | 显示全部楼层
Chapter 1: Number (数字)
F) 变量

  1. >>> a = 3
  2. >>> a + 1
  3. 4
复制代码

  1. >>> a = 5
  2. >>> a + 1
  3. 6
复制代码
回复

使用道具 举报

 楼主| 发表于 29-6-2016 09:18 PM | 显示全部楼层
本帖最后由 凌云 于 29-6-2016 09:20 PM 编辑

Chapter 1: Number (数字)
G) 数字类型

  1. >>> type(3)
  2. <class 'int'>

  3. >>> type(3.5)
  4. <class 'float'>

  5. >>> type(3.0)
  6. <class 'float'>
复制代码


int 是整数,float 是浮点也就是小数。
可以用函数转换:

  1. >>> int(3.8)
  2. 3
  3. >>> int(3.0)
  4. 3
  5. >>> float(3)
  6. 3.0
复制代码


回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 29-6-2016 09:56 PM | 显示全部楼层
本帖最后由 凌云 于 29-6-2016 09:57 PM 编辑

Chapter 1: Number (数字)
H) Fraction 分数

  1. >>> from fractions import Fraction
  2. >>> f = Fraction(3, 4)
  3. >>> f
  4. Fraction(3, 4)
复制代码
fractions 是Python的标准库(Standard Library).
Fraction(3,4) 表示 3/4

  1. >>> Fraction(3, 4) + 1 + 1.5
  2. 3.25
复制代码
当你的算数里面有小数点,回值就是float(小数点/浮点)。

  1. >>> Fraction(3, 4) + 1 + Fraction(1/4)
  2. Fraction(2, 1)
复制代码
当你的算术只有分数和整数,回值就是分数。

回复

使用道具 举报

 楼主| 发表于 29-6-2016 10:26 PM | 显示全部楼层
Chapter 1: Number (数字)
I) Complex Number 复数

在Python里,复数写成 2 + 3j 的格式:
  1. >>> a = 2 + 3j
  2. >>> type(a)
  3. <class 'complex'>
复制代码


也可以这么写:
  1. >>> a = complex(2, 3)
  2. >>> a
  3. (2 + 3j)
复制代码


复数的加减:
  1. >>> b = 3 + 3j
  2. >>> a + b
  3. (5 + 6j)
  4. >>> a - b
  5. (-1 + 0j)
复制代码


复数的乘除:
  1. >>> a * b
  2. (-3 + 15j)
  3. >>> a / b
  4. (0.8333333333333334 + 0.16666666666666666j)
复制代码


real and imaginary parts 复数的实部和虚部:
  1. >>> z = 2 + 3j
  2. >>> z.real
  3. 2.0
  4. >>> z.imag
  5. 3.0
复制代码


conjugate 共轭复数:
  1. >>> z.conjugate()
  2. (2 - 3j)
复制代码


magnitude 复数大小/绝对值:
用两点距离公式来算:
  1. >>> (z.real ** 2 + z.imag ** 2) ** 0.5
  2. 3.605551275463989
复制代码


或者可以用 abs 绝对值函数:
  1. >>> abs(z)
  2. 3.605551275463989
复制代码


标准库里面的 cmath (cmath for complex math) 有很多可以处理复数的函数可以使用。
回复

使用道具 举报

 楼主| 发表于 29-6-2016 10:35 PM | 显示全部楼层
在 Python IDLE写一个简单的数学函数例子:

  1. >>> def is_factor(a, b):
  2.         if b % a == 0:
  3.             return True
  4.         else:
  5.             return False
复制代码


Python 用 def 来定义一个函数。上面这个例子检查 a 是不是 b 的因子。
  1. >>> is_factor(4, 1024)
  2. True
复制代码


回复

使用道具 举报

 楼主| 发表于 29-6-2016 10:54 PM | 显示全部楼层
Chapter 1: Number (数字)
J) Converting Units of Measurement 单位换算:

inch 换成 cm 再换成 m (1 inch=2.54cm,1cm=0.01m):
  1. >>> (25.5 * 2.54) / 100
  2. 0.6476999999999999
复制代码


m 换成 miles (1英里=大约1.609米):
  1. >>> 650 * 1.609
  2. 1045.85
复制代码


F 华氏温度 换成 C 摄氏温度:
  1. >>> F = 98.6
  2. >>> (F - 32) * (5 / 9)
  3. 37.0
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 29-3-2024 08:58 AM , Processed in 0.070974 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表