专业书籍:
数学建模教程-吴孟达
《A First Course in Mathematical Modeling(Fifth Edition) 》叶其孝和姜启源翻译
Python科学计算(高清版)PDF
公信部禁止发网盘链接,请加群索取。
#1.方程求导 from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import scipy.misc def f(x): return 2*x*x + 3*x + 1 print(sp.misc.derivative(f, 2))</pre> #2.求不定积分 from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import scipy.integrate f = lambda x : x**2 print(sp.integrate.quad(f, 0, 2)) print(sp.integrate.fixed_quad(f, 0, 2)) 3.求解非线性方程组 from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import scipy.optimize def f(x): return [5*x[1] + 3, 4*x[0]*x[0], x[1]*x[2] - 1.5] ans = sp.optimize.fsolve(f, [0, 0, 0]) print(ans) print(f(ans)) 4.求解线性方程组 from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import matplotlib.pylab as plt import scipy.linalg a = np.array([[1, 3, 5], [2, 5, 1], [2, 3, 8]]) b = np.array([10, 8, 3]) print(sp.linalg.solve(a, b)) # print(sp.linalg.inv(a).dot(b)) 5.画3D马鞍面 from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import matplotlib.pylab as plt from pylab import * from mpl_toolkits.mplot3d import Axes3D fig = figure() ax = Axes3D(fig) X = np.linspace(-10, 10, 30) Y = np.linspace(-10, 10, 30) X, Y = np.meshgrid(X, Y) Z = (X*X)/3 - (Y*Y)/3 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='hot') show() 6.画三叶玫瑰线 from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import matplotlib.pylab as plt t = np.linspace(0, 2*np.pi, 1000, endpoint=True) p = 3 * np.sin(3 * t) plt.subplot(111, polar=True) plt.plot(t, p, lw=3, color='g') plt.grid(True) plt.show() 7.画星形线 from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import matplotlib.pylab as plt t = np.linspace(-10, 10, 1024) X = np.cos(t) ** 3 Y = np.sin(t) ** 3 plt.plot(X, Y, label='My', lw=3, color='g') plt.xlim(X.min()*1.2, X.max()*1.2) plt.ylim(Y.min()*1.2, Y.max()*1.2) plt.grid(True) plt.legend() plt.show() 8.画随机散点图 from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import numpy.random import matplotlib.pylab as plt X = np.random.rand(50) Y = np.random.rand(50) colors = np.random.rand(50) area = np.pi * (15 * np.random.rand(50)) ** 2 plt.scatter(X, Y, s=area, c=colors) plt.show()
从数学建模到人工智能
为什么要把数学建模与当今火热的人工智能放在一起?
首先,数学建模在字面上可以分解成数学+建模,即运用统计学、线性代数和积分学等数学知识,构建算法模型,通过模型来解决问题。数学建模往往是没有对与错,只有”更好”(better),就好像让你评价两个苹果哪个更好吃,只有好吃、不好吃或者更好吃,没有对与错。
人工智能(Artificial Intelligence, AI),你可以将其理解为是一种”黑科技”,人类通过它,让计算机能够”更好”地像人一样思考。可以说”算法模型”是人工智能的”灵魂”,没有算法模型,一切都是”水中月””镜中花”!
因此,本文将从数学建模入手,由浅入深地为读者揭开AI的神秘面纱。
1.1 数学建模
数学建模与人工智能
数学建模简介
数学建模是利用数学方法解决实际问题的一种实践。即通过抽象、简化、假设、引进变量等处理过程,将实际问题用数学方式表达,建立起数学模型,然后运用先进的数学方法及计算机技术进行求解。数学建模可以通俗地理解为数学+建模,即运用统计学、线性代数,积分学等数学知识,构建数学模型,通过模型解决问题。
按照传统定义,数学模型是对于一个现实对象,为了一个特定目的(实际问题),做出必要的简化假设(模型假设),根据对象的内在规律(业务逻辑、数据特征),运用适当的数学工具、计算机软件,得到的一个数学结构。
亚里士多德说,”智慧不仅仅存在于知识之中,而且还存在于应用知识的能力中”。数学建模就是对数学知识最好的应用,通过数学建模,你会发现,生活中很多有意思的事情都可以靠它来解决,其流程如图1-1所示。
2.人工智能简介
对于普通大众来说,可能是近些年才对其有所了解,其实人工智能在几十年以前就被学者提出并得到一定程度的发展,伴随着大数据技术的迅猛发展而被引爆。
▲图1-1 数学建模流程
(1)人工智能的诞生
最初的人工智能其实是20世纪30至50年代初一系列科学研究进展交汇的产物。1943年,沃伦·麦卡洛克(Warren McCulloch)和瓦尔特·皮茨(Walter Pitts)首次提出”神经网络”概念。1950年,阿兰·图灵(Alan Turing)提出了著名的”图灵测试”,即如果一台机器能够与人类展开对话(通过电传设备)而不能被辨别出其机器身份,那么称这台机器则具有智能。直到如今,图灵测试仍然是人工智能的重要测试手段之一。1951年,马文·明斯基(Marvin Minsky)与他的同学一起建造了第一台神经网络机,并将其命名为 SNARC(Stochastic Neural Analog Reinforcement Calculator)。不过,这些都只是前奏,一直到1956年的达特茅斯会议,”Artificial Intelligence”(人工智能)这个词才被真正确定下来,并一直沿用至今,这也是目前AI诞生的一个标志性事件。
▲图1-2 达特茅斯会议参会者50年后聚首照[footnoteRef:1] [1: 达特茅斯会议参会者50年后再聚首,左起:Trenchard More、John McCarthy、Marvin Minsky、Oliver Selfridge和Ray Solomonoff(摄于2006年),图片版权归原作者所有。]
在20世纪50年代,人工智能相关的许多实际应用一般是从机器的”逻辑推理能力”开始着手研究。然而对于人类来说,更高级的逻辑推理的基础是”学习能力”和”规划能力”,我们现在管它叫”强化学习”与”迁移学习”。可以想象,”逻辑推理能力”在一般人工智能系统中不能起到根本的、决定性的作用。当前,在数据、运算能力、算法模型、多元应用的共同驱动下,人工智能的定义正从用计算机模拟人类智能,演进到协助引导提升人类智能,如图1-3所示。
(2)人工智能的概念
人工智能(Artificial Intelligence),英文缩写为AI,它是研究开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
▲图1-3 下一代人工智能(图片来源《新一代人工智能发展白皮书》)
人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的”容器”,也可能超过人的智能。
(3)人工智能、机器学习、深度学习
下面我们来介绍下主要与人工智能相关的几个概念,要搞清它们的关系,最直观的表述方式就是同心圆,如图1-4所示,最先出现的是理念,然后是机器学习,当机器学习繁荣之后就出现了深度学习,今天的人工智能大爆发是由深度学习驱动的。
▲图1-4 AI、机器学习、深度学习的关系
人工智能(AI)、机器学习(ML)、深度学习(DL)的关系为DL⊆ML⊆AI。
人工智能,即AI是一个宽泛的概念,人工智能的目的就是让计算机能够像人一样思考。机器学习是人工智能的分支,它是人工智能的重要核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。深度学习是机器学习研究中的一个新领域,推动了机器学习的发展,并拓展了人工智能的领域范围。甚至有观点认为,深度学习可能就是实现未来强AI的突破口。
可以把人工智能比喻成孩子大脑,机器学习是让孩子去掌握认知能力的过程,而深度学习是这个过程中很有效率的一种教学体系。
因此可以这样概括:人工智能是目的、结果;深度学习、机器学习是方法、工具。
本书讲解了人工智能、机器学习、深度学习的相关应用,它们之间的关系,常见的机器学习算法等知识,希望你通过对本书的学习,深刻理解这些概念,并可以轻而易举地给别人讲解。
3.数学建模与人工智能关系
无论是数学建模还是人工智能,其核心都是算法,最终的目的都是通过某种形式来更好地为人类服务,解决实际问题。在研究人工智能过程中需要数学建模思维,所以数学建模对于人工智能非常关键。
下面通过模拟一个场景来了解人工智能与数学建模之间的关系。
某患者到医院就诊,在现实生活中,医生根据病人的一系列体征与症状,判断病人患了什么病。医生会亲切地询问患者的症状,通过各种专项检查,最后进行确诊。在人工智能下,则考虑通过相应算法来实现上述过程,如德国的辅助诊断产品Ada学习了大量病例来辅助提升医生诊病的准确率。
▲图1-5 AI机器人
情景①:如果用数学建模方法解决,那么就通过算法构建一个恰当的模型,也就是通过图1-1所示的数学建模流程来解决问题。
情景②:如果用人工智能方法解决,那么就要制造一个会诊断疾病的机器人。机器人如何才能精准诊断呢?这就需要利用人工智能技术手段,比如采用一个”人工智能”算法模型,可能既用了机器学习算法,也用了深度学习算法,不管怎样,最终得到的是一个可以落地的疾病预测人工智能解决方案。让其具有思考、听懂、看懂、逻辑推理与运动控制能力,如图1-5所示。
通过上面的例子可以看出,人工智能离不开数学建模。在解决一个人工智能的问题过程中,我们将模型的建立与求解进行了放大,以使其结果更加精准,如图1-6所示。
▲图1-6 AI下对数学建模的流程修正
可见,从数学建模的角度去学习人工智能不失为一种合适的方法。