机器学习

机器识别

步骤一:

创建function

Linear Model 线性模型

Deep Learning 深度学习 == 特别复杂的function == 能做特别复杂的事。

步骤二:

machine可以自动衡量function的好坏,这需要确定一个衡量标准,也就是我们通常说的损失函数(Loss Function),损失函数的确定也需要依据具体问题而定,如回归问题一般采用欧式距离,分类问题一般采用交叉熵代价函数。

步骤三:

machine有一个好的方法可以挑出最好的function,这一步是最大的难点,做到又快又准往往不是一件容易的事情。常用的方法有梯度下降算法,最小二乘法等和其他一些技巧(tricks)。

第二章“深度学习”,是算法的进阶路线,内容比第一章更丰盛,有12步:

是构建深度学习环境 (初) ,是训练自己的第一个网络 (初) ,是理解CNN (初) ,是搭个自己的图像数据集 (中) ,是在自己的数据集上训练一个CNN (中) ,是调整学习率 (中) ,是数据扩增 (中) ,是特征提取和微调预训练网络 (中) ,是视频分类 (高) ,是多输入和多输出网络 (高) ,十一是改进自己的网络 (高) ,十二是AutoML和AutoKeras。

前言

机器学习的核心是“使用算法解析数据,从中学习,然后对世界上的某件事情做出决定或预测”。这意味着,与其显式地编写程序来执行某些任务,不如教计算机如何开发一个算法来完成任务。有三种主要类型的机器学习:监督学习、非监督学习和强化学习,所有这些都有其特定的优点和缺点。

监督学习

监督学习涉及一组标记数据。计算机可以使用特定的模式来识别每种标记类型的新样本。监督学习的两种主要类型是分类和回归。

在分类中,机器被训练成将一个组划分为特定的类。分类的一个简单例子是电子邮件帐户上的垃圾邮件过滤器。过滤器分析你以前标记为垃圾邮件的电子邮件,并将它们与新邮件进行比较。如果它们匹配一定的百分比,这些新邮件将被标记为垃圾邮件并发送到适当的文件夹。那些比较不相似的电子邮件被归类为正常邮件并发送到你的邮箱。

第二种监督学习是回归。在回归中,机器使用先前的(标记的)数据来预测未来。天气应用是回归的好例子。使用气象事件的历史数据(即平均气温、湿度和降水量),你的手机天气应用程序可以查看当前天气,并在未来的时间内对天气进行预测。

无监督学习

在无监督学习中,数据是无标签的。由于大多数真实世界的数据都没有标签,这些算法特别有用。无监督学习分为聚类和降维。聚类用于根据属性和行为对象进行分组。这与分类不同,因为这些组不是你提供的。聚类的一个例子是将一个组划分成不同的子组(例如,基于年龄和婚姻状况),然后应用到有针对性的营销方案中。降维通过找到共同点来减少数据集的变量。大多数大数据可视化使用降维来识别趋势和规则。

强化学习

最后,强化学习使用机器的个人历史和经验来做出决定。强化学习的经典应用是玩游戏。与监督和非监督学习不同,强化学习不涉及提供“正确的”答案或输出。相反,它只关注性能。这反映了人类是如何根据积极和消极的结果学习的。很快就学会了不要重复这一动作。同样的道理,一台下棋的电脑可以学会不把它的国王移到对手的棋子可以进入的空间。然后,国际象棋的这一基本教训就可以被扩展和推断出来,直到机器能够打(并最终击败)人类顶级玩家为止。

串的模式匹配

BF算法

BF算法是一种简单的模式匹配,其主要思想为:从主串的第一个字符开始和模式串的第一个字符比较,如果相等就继续比较两者的后续字符;否则,从主串的第二个字符开始和模式串的第一个字符比较。重复上述过程,若全部匹配完毕,则说明匹配成功,返回本趟匹配的起始位置;否则,匹配失败,返回-1。

java代码

  1. public int indexBF(String t) {
  2. for(int i = 0; i<this.length() - t.length(); i++){
  3. int j = 0;
  4. int k = 0;
  5. while(j<t.length() && this.value[k] == t.value[j]){
  6. j++;
  7. k++;
  8. }
  9. if(j == t.length()){
  10. return i;
  11. }
  12. }
  13. return -1;
  14. }

存在两个问题:

1.主串回溯:在比较过程中,即使主串中有多个字符与模式串相应字符相等,但此后只要出现一个不相等情况,主串就必须回溯。

2.模式串回溯到首字符:当主串回溯时,模式串也需要回溯到首字符开始下一趟比较。