程序员的数学
这应该是叫初、中等数学在计算机中的应用。有初中数学基础就可以理解。我数学差,还是带来一些思想上的更新。按照章节总结如下:
0
计数系统引入 0,可以用来进行占位和统一标准,简化规则。
在实践当中零可以用来表示没有信息,没有效果或不起作用,这样就统一了标准,简化了编程的规则。
逻辑
命题、真假、与、或、非、异或、蕴含、相等等概念,
文氏图用来理解逻辑,
卡诺图用来简化复杂的逻辑。
德摩根公式用于转换逻辑表达式。
逻辑的完整性和排他性对编程是比较重要的。
余数
余数可以用于大数据计算找规律,
奇偶校验,
分组。
草席问题证明不可行,简单判明了不成立的条件;
12 个月前的恋人的题目进行分组,简化了步骤;
七桥问题,将生活当中的问题转化为奇偶点的数目问题。
余数和分组使需要反复验证的问题得以轻松进行解决。
归纳
对数列进行归纳,找出公式可用于快速计算,可将大问题分解成 n 个同类同规模的小问题,
排序
加法,乘法,置换排列组合,可以找出问题的本质,可用于快速计算,并将其抽象化。
递归
汉诺塔、阶乘、伏波那切数列、杨辉三角、分型图。将问题分解成同类,但是不同规模的问题。找到递归结构,再递推计算。
指数
指数爆炸,折纸,搜索,对数,密码不以破解。
对于指数问题,有四种处理方法:极力求解,近似求解,公式求解,概率求解。指数可以对复杂的问题进行极简化。
不可解
反正法、可数、对角论证法、不可解问题、停机问题。
最重要的问题
就是认清模式,进行抽象化,由现实世界转化进数学世界,解决之后再由数学返回现实。
注意的点是完整性,排他性,缩小问题的规模,认清结构,发现模式,抽象化,分组等。
附录 机器学习
机器学习用来解决预测和分类问题
输入和实际结果的目标构成训练数据
使用训练数据对参数进行调整,成为训练好的模型,使用测试数据测试进行评价和对参数的调整。
计算机的输入(或多个值构成向量),交给感知器(模型),参数各有权重,加权求和 x,然后激励函数 f 将连续的值进行 1/2 的判断,使模拟量进入逻辑量。学习的过程是模型输出和目标进行比较,进而调整模型的参数。
过拟合指的是训练数据表现良好,但是测试数据就变成差。
损失函数:比较输出和目标的差的时候,用损失函数来比较两者差异的程度。比如平方和误差函数。
参数和损失函数构成地势,然后用梯度下降寻找低点,梯度下降的步伐是学习率,最小的点就是最优的损失函数,最优的参数。
参数多于三个时,用反向传播算法控制运算量的爆发,该算法微分计算查看权重参数变化如何影响输出结果。
神经网络是将感知器好几层叠放在一块组成的。神经网络节点输出的不是二元单值,而是连续值,可进行微分计算。
深度学习神经网络增加层数得到更深的模型。
强化学习每个输出系统都提供反馈(奖励),参数根据反馈调整。
人类作用:构建模型、确保数据可靠、解释结果、做出决策。
版权声明: 本文为 InfoQ 作者【大奎】的原创文章。
原文链接:【http://xie.infoq.cn/article/b49b6f646612110bc12553c40】。文章转载请联系作者。
评论