程序员的数学 笔记

程序员的数学

这应该是叫初、中等数学在计算机应用。有初中数学基础就可以理解。我数学差,还是带来一些思想上的更新。按照章节总结如下:

0

  • 计数系统引入0,可以用来进行占位和统一标准,简化规则。
  • 在实践当中零可以用来表示没有信息,没有效果或不起作用,这样就统一了标准,简化了编程的规则。

逻辑

  • 命题、真假、与、或、非、异或、蕴含、相等等概念,
  • 文氏图用来理解逻辑,
  • 卡诺图用来简化复杂的逻辑。
  • 德摩根公式用于转换逻辑表达式。
  • 逻辑的完整性和排他性对编程是比较重要的。

余数

  • 余数可以用于大数据计算找规律,
  • 奇偶校验,
  • 分组。
  • 草席问题证明不可行,简单判明了不成立的条件;
  • 12个月前的恋人的题目进行分组,简化了步骤;
  • 七桥问题,将生活当中的问题转化为奇偶点的数目问题。
  • 余数和分组使需要反复验证的问题得以轻松进行解决。

归纳

对数列进行归纳,找出公式可用于快速计算,可将大问题分解成n个同类同规模的小问题,

排序

加法,乘法,置换排列组合,可以找出问题的本质,可用于快速计算,并将其抽象化。

递归

汉诺塔、阶乘、伏波那切数列、杨辉三角、分型图。将问题分解成同类,但是不同规模的问题。找到递归结构,再递推计算。

指数

指数爆炸,折纸,搜索,对数,密码不以破解。

  • 对于指数问题,有四种处理方法:极力求解,近似求解,公式求解,概率求解。指数可以对复杂的问题进行极简化。

不可解

反正法、可数、对角论证法、不可解问题、停机问题。

最重要的问题

  • 就是认清模式,进行抽象化,由现实世界转化进数学世界,解决之后再由数学返回现实。
  • 注意的点是完整性,排他性,缩小问题的规模,认清结构,发现模式,抽象化,分组等。

附录 机器学习

  • 机器学习用来解决预测和分类问题
  • 输入和实际结果的目标构成训练数据
  • 使用训练数据对参数进行调整,成为训练好的模型,使用测试数据测试进行评价和对参数的调整。
  • 计算机的输入(或多个值构成向量),交给感知器(模型),参数各有权重,加权求和x,然后激励函数f将连续的值进行1/2的判断,使模拟量进入逻辑量。学习的过程是模型输出和目标进行比较,进而调整模型的参数。
  • 过拟合指的是训练数据表现良好,但是测试数据就变成差。
  • 损失函数:比较输出和目标的差的时候,用损失函数来比较两者差异的程度。比如平方和误差函数。
  • 参数和损失函数构成地势,然后用梯度下降寻找低点,梯度下降的步伐是学习率,最小的点就是最优的损失函数,最优的参数。
  • 参数多于三个时,用反向传播算法控制运算量的爆发,该算法微分计算查看权重参数变化如何影响输出结果。
  • 神经网络是将感知器好几层叠放在一块组成的。神经网络节点输出的不是二元单值,而是连续值,可进行微分计算。
  • 深度学习神经网络增加层数得到更深的模型。
  • 强化学习每个输出系统都提供反馈(奖励),参数根据反馈调整。
  • 人类作用:构建模型、确保数据可靠、解释结果、做出决策。

你可能感兴趣的:(数学)