人工智能AI与机器学习ML基础入门

server/2024/12/22 0:05:26/
小学生都能看懂的人工智能入门书籍

 

第一章 入门简介

TensorFlow 入门

如果你想入门人工智能(AI)?机器学习(ML)和深度学习是很好的起点。不过,一开始接触这些概念时,可能会被各种选项和新术语搞得有点迷茫。本人工智能学习课程连载的目标是帮助程序员理清思路,带你一步步通过写代码实现机器学习和深度学习的核心概念,构建像人类一样思考的模型,比如在计算机视觉、自然语言处理(NLP)等场景下应用。通过这些模型,机器开始具备类似人类的智能,形成所谓的人工智能

但说到机器学习,究竟是什么呢?我们先来简单了解一下,从程序员的角度看看它到底是什么。然后,我们会介绍如何安装开发工具,包括 TensorFlow 本身,以及如何搭建编写和调试 TensorFlow 模型的环境。

什么是机器学习

在深入讨论机器学习之前,先看看它是怎么从传统编程发展出来的。我们会先讲讲什么是传统编程,接着看看它的局限性,最后再看机器学习是如何解决这些问题的,同时开启了更多实现人工智能的机会。

传统编程是我们用编程语言写规则,这些规则作用于数据,得到结果。几乎所有可以编程的场景都适用这种方法。

比如,你可以想象一下像打砖块(Breakout)这样的游戏。代码控制着球的运动、得分,以及赢或输的各种条件。比如当球碰到砖块时会发生什么,就像图 1-1 中展示的那样。

图1-1打砖游戏

在这个例子中,小球的运动是由它的 dx 和 dy 属性来决定的。当小球击中砖块时,砖块会被移除,同时小球的速度会加快,方向也会改变。这段代码就是对游戏状态的数据进行操作。

再来看一个金融服务的例子。你有一家公司股票的数据,比如当前价格和收益。你可以用图 1-2 中的代码计算一个很有用的比率,叫做市盈率(P/E,比价格除以收益)。

图 1-2. 财务软件应用场景中的代码

代码会读取价格和收益,最后返回价格除以收益的结果。

如果要用一个简单的图表来概括传统编程,可能就像图 1-3 这样。

图 1-3. 从宏观角度看传统编程技术

可以看到,编程规则是用编程语言表示的,它们作用于数据,最终得出结果。

正如你所看到的,规则是用编程语言来表示的,这些规则作用于数据,最终得出结果。

传统编程的局限性

从图 1-3 的模型问世以来,它一直是开发的基础。不过,它有个明显的限制:只有那些你能推导出规则的场景才能实现。那么其他场景呢?通常,它们很难开发,因为代码太复杂,根本无法写出处理这些问题的代码。

比如活动检测这个例子。能够检测我们日常活动的健身追踪器是最近的创新,这不仅是因为有了便宜的小型硬件,还因为以前的算法根本无法实现这种检测。那为什么会这样呢?我们来探讨一下。

图 1-4 展示了一个简单的行走检测算法。它可以根据人的速度来判断,如果速度低于某个值,我们就可以推测他们可能是在走路。

图 1-4. 运动检测算法

鉴于我们的数据是速度,我们可以扩展这个算法来检测他们是否在跑步(见图 1-5)。

图 1-5. 脱展运动检测算法,检测跑步

你可以看到,按照速度来判断的话,如果低于某个特定值(比如 4 英里每小时),我们可以说这个人在走路,否则就是在跑步。这个方法还是有点效果的。

现在,假设我们想把这个算法扩展到另一项常见的健身活动,比如骑自行车。那么这个算法可能会像图 1-6 这样。

图 1-6. 拓展运动检测算法,检测骑自行车

我知道这个方法有点简单,只是通过速度来判断——毕竟每个人跑步的速度不一样,而且你下坡跑步可能比上坡骑车还快。不过,总的来说它还是有效的。但是,如果我们想扩展到另一个场景,比如打高尔夫(见图 1-7),又该怎么办呢?

图 1-7.  怎样编程才能判断出打高尔夫球运动?

我们现在卡住了。用这种方法,怎么判断一个人是在打高尔夫呢?他们可能走一会儿,停下来做点事情,然后再走一会儿,再停下来,等等。但我们怎么知道这就是在打高尔夫呢?

用传统规则来检测这种活动已经碰到瓶颈了。不过,也许有更好的方法。

这就是机器学习派上用场的时候了。

下一篇我们就正式进入机器学习ML了......

欢迎大家留下评估,我来给大家讲解!


http://www.ppmy.cn/server/132235.html

相关文章

Android build子系统(02)Ninja语法与复杂依赖构建解读

说明:本文将解读Ninja构建系统的基础语法和应用,同时给出一些示例便于理解和学习;给出一个复杂构建的基础demo,通过这个demo的分析理解复杂构建的内在逻辑和build.ninja编写法则;最后扩展之前Android Framework中构建b…

mysql学习教程,从入门到精通,SQL常用函数(40)

1、SQL常用函数 SQL(Structured Query Language)是一种用于管理和操作关系数据库的编程语言。SQL提供了许多内置函数,这些函数可以对数据库中的数据进行各种计算和操作。以下是一些常用的SQL函数,按功能分类: 1.1、字…

数据同步工具Sqoop原理及场景优化

目录 0 数据同步策略 1 数据同步工具 ​编辑 2 Sqoop同步数据原理分析 2.1 原理分析 2.2 Sqoop基本使用分析 3 切片逻辑 3.1 MR切片逻辑 3.2 Hive CombineInputformat切片逻辑 3.3 实验1:Map任务并行度分析1 3.4 实验2: Map任务并行度分析2 3.5 实验3:Map任务并行…

Redis非关系型数据库操作命令大全

以下是 Redis 的常用操作命令大全,涵盖了键值操作、字符串、哈希、列表、集合、有序集合、发布/订阅、事务等多个方面的操作。 1. 通用键命令 命令说明SET key value设置指定 key 的值GET key获取指定 key 的值DEL key删除指定的 keyEXISTS key检查 key 是否存在E…

数据结构:用双栈实现一个队列

要用两个栈实现一个队列,可以利用“栈”的后进先出 (LIFO) 特性来模拟“队列”的先进先出 (FIFO) 操作。具体做法是使用两个栈:一个作为入栈栈,另一个作为出栈栈。 算法步骤 入队操作(enqueue): 将元素压…

面试题:Redis(二)

1. 面试题 2. MoreKey案列 事故案例 2.1 生成上如何限制key*/flushdb/flushall等危险命令的使用? 通过redis.conf配置文件中在SECURITY选项中禁用这些命令 2.2 不用key*避免卡顿那用什么? 用scan命令,类似mysql中的limit命令 语法&…

RDD优化:缓存和checkpoint机制、数据共享(广播变量、累加器)、RDD的依赖关系、shuffle过程、并行度说明

文章目录 1. 缓存和checkpoint机制1.1 缓存使用1.2 checkpoint1.3 缓存和checkpoint的区别 2. 数据共享2.1 广播变量2.2 累加器 3. RDD依赖关系4.shuffle过程4.1 shuffle介绍4.2 spark计算要尽量避免shuffle 5. 并行度 1. 缓存和checkpoint机制 缓存和checkpoint也叫作rdd的持…

Tars RPC源码--C++客户端

Communicator: 客户端最重要的一个类,一个客户端只能生成一个Communicator类的实例,CommunicatorPtr& Application::getCommunicator(),获取线程安全的单例。 ServantProxy与ServantProxyFactory ServantProxy是服务代理,可以由Servan…