(AIfES for Arduino)–高效微控制器人工智能开源框架
原文链接:链接: AIfES for Arduino由Jean-Luc Aufranc撰写。
4-1 IoT简介(物联网简介)
4-2 点亮未来之路: AI
让电脑有能力自我学习,这就是机器学习。
4-3 传感器新浪潮:AI + IoT
①云端计算
②边缘计算
4-4 Arduino软件开发ESP32应用
(一) 准备一块ESP32开发板
ESP32是一个可以用于控制的AI硬件开发板,可借两侧的输出入(I/O)管脚控制外部电子元件。还具有WIFI连网接口传送数据的功能。
(二)安装Arduino开发环境
下载Arduino IDE开发环境(链接: 下载Arduino IDE)
下载安装驱动程序链接:( 下载安装驱动程序链接)
新增ESP32开发板到Arduino IDE
在Arduino IDE中执行‘文件’->‘首选项’
打开 Arduino 软件,点击 “文件”→“首选项”,在 “附加开发板管理器网址” 中输入 https://dl.espressif.com/dl/package_esp32_index.json(这是 ESP32 开发板的管理网址,其实不填也行,不影响下面的步骤)
在Arduino IDE中执行‘工具’->‘开发板管理器’
搜索输入框esp32,按此安装
因为要在国外的网站下载,所以会失败。可以转为手动下载方式。
手动下载方式:
进入镜像仓库网址链接: 下载 ESP32 的支撑包 https://codechina.youkuaiyun.com/mirrors/espressif/arduino-esp32 下载 ESP32 的支撑包。该仓库的下载速度相对较快,能有效解决从国外网站下载速度慢或无法访问的问题。这个过程会很花很长时间,加上安装时间,约1个多小时。
连接ESP32,选择所使用的开发板和串口号
4-5 什么是AI人工智能
图像辨识、语音识别、数据处理的问题,转成程序语言,形成解决问题的规则。 让电脑自己学习规则,这就是机器学习( Machine Learning , ML)
4-5-1 机器学习
监督式学习 与 非监督式学习
监督式学习所使用的训练数据集合会事先给予标记 ,即准备一些问题和对应的答案给电脑后,通过合适的推理让它\ 自行找出其中的规则,并有能力针对类似的问题给出正确的回答,
常见的回归分析(Regression Analysis)与 统计分类(Classification)
4-5-2 神经网络
在机器学习中最主流的方法是类神经网络(Artificial Neural Network ,ANN,简称神经网络)
人工神经元
输入-就是问题
输出-就是答案
权重 和 偏值 就是要自我学习的参数 可以表示成:
输出 = 输入 1 × 权重 1 + 输入 2 × 权重 2 + 输入 3 × 权重 3 + 偏值 输出 = 输入1×权重1+输入2×权重2+输入3×权重3+偏值 输出=输入1×权重1+输入2×权重2+输入3×权重3+偏值
如果只有一个输入的神经元:
输出 = 输入 × 权重 + 偏值 输出=输入×权重+偏值 输出=输入×权重+偏值
回归问题
指的是找到两组数据之间的对应关系
资料如下:
有1条线能大致连接: y = 0.8337 x − 81.331 y=0.8337x-81.331 y=0.8337x−81.331
其实就是一个函数: 体重 = 身高 × 0.8337 − 81.331 体重=身高×0.8337-81.331 体重=身高×0.8337−81.331
用直线表示关系,不是很贴合。`(>﹏<)′
用分段的折线来解决非线性问题。( ̄︶ ̄)↗
采用 激活函数(activation function) 便能 在神经元输出之前进行非线性计算,再将值输出:
最常用的激活函数是 ReLU函数,小于转折点的输出数值都等于0
如果更贴合数据,就要导入更多非线性度,做法
将多个神经元连接在一起:
上下并排的神经元合称 神经层,
由于每个神经元共用一个激活函数,多个
有 激活函数 的神经元,等同提供更多非线性度,(ReLU 就是一次转折),所以生成函数更贴近数据:
神经网络
为了预测更加准确,可以加入更多输入数据,这些数据又称为-特征(Feature)
完整的神经网络又可以称为 - 模型 (model)
神经元的学习过程
神经元怎么学习?
一开始神经元什么都不会,因此 权重 和 偏值
都是乱猜的,
所以输出的答案也是不对的,不过它会比对你给
的数据来调整,直到它的输出与你给的资料一致:
损失函数 -计算预测值和标签误差的函数, 计算出来的值称为-损失值(loss) ,越大代表误差越多,
神经元有这个数值后就知道怎么调整它的参数,
不同问题会搭配不同损失函数,例如,回归问题就会使用
- 均方误差(Mean Squared Error,MSE)
每笔标签减预测值(即误差),取平方,再取平均值。
标签值: y 1 、 y 2 、 y 3 、 y 4 、 y 5 、 . . . 、 y n 、 标签值:y_1、y_2、y_3、y_4、y_5、...、y_n、 标签值:y1、y2、y3、y4、y5、...、yn、
预测值: y 1 ^ 、 y 2 ^ 、 y 3 ^ 、 y 4 ^ 、 y 5 ^ 、 . . . 、 y n ^ 、 预测值:\hat{y_1}、\hat{y_2}、\hat{y_3}、\hat{y_4}、\hat{y_5}、...、\hat{y_n}、 预测值:y1^、y2^、y3^、y4^、y5^、...、