基于BP神经网络的智能家居系统建模与分析
2022-09-07戴玉宽喻昕
戴玉宽,喻昕
南京工程学院,江苏南京,211167
0 引言
智能家居目前还是一个较为新兴的产业,虽然已经走过了概念普及的阶段,但是由于发展缓慢的问题,各方面技术还不是很成熟。目前绝大多数的智能家居系统都是需要在移动电子设备上安装相应的客户端,人为地去设置和触发,来做到“代替遥控”,并不能做到完全的“智能”。同时也有一些厂商为了营造噱头,促进产品的销量,在新品上滥用“智能”之名,不仅对消费者造成了一些误导,也影响了整体智能家居产业的发展环境[1]。
因此,智能家居产业的发展,需要智能化水平的不断提高,来减少人为的干预[2]。这就需要系统拥有自学习的能力,这里需要有大量的传感器来发挥作用,同时也需要一个合理且好用的人工智能系统作为“主脑”来通过不同的家电,对整体家居环境进行智能化的控制。这样才会给消费者带来“智能”的感受。
研究旨在从人工智能控制系统的角度出发,通过使用BP神经网络算法,对智能家居领域进行建模和分析,尝试提升该领域的智能化程度。
1 智能家居BP神经网络的模型设计
1.1 BP神经网络基本原理
BP神经网络是一种模拟人类大脑认识事物过程的一种网络结构,由输入层、隐藏层和输入层三个层次的“神经元”组成[3]。
BP神经网络算法由正向传播、反向传播以及权重更新三个过程组成。在正向传播过程中,输入信息从输入层出发,经隐层单元处理后,传至输出层。每一层神经元的状态变化,只会影响到下一层神经元的状态。如果在输出层没有获得期望输出,则误差信号被反转,即沿着神经元的连接路径返回,同时通过修改各层神经元之间的连接权重,使误差信号达到最小。直到神经网络输出的误差缩小到了设定的程度,或者训练到了预先设定的学习次数为止[4]。
该模型把一组样本输入输出的函数问题转换为了一个非线性优化问题,并使用了优化技术中最为普遍的梯度下降法。由于该算法本身并不是研究要点,故不多赘述。
1.2 数据集的建立
1.2.1 相关变量模型的建立
智能家居的用户数量众多,不同用户会做出各种不同的行为,为了简化数学模型,研究需要将用户在日常生活中的一系列环境变量进行数据化和预处理,模型在初始阶段可以简单地设立几个不同的独立项目,例如观看电视节目、室内温湿度调节、室内灯光模式、空调热水器设置等。
系统采集的数据是通过布置在家庭环境中的,包括电器内和电器外的传感器,经过分门别类的收集得到的。这些数据一方面反映了当前环境中客观信息的变化,另一方面也反映了不同用户之间行为习惯的差距。根据这些数据,系统可以在一定程度上推测出当前用户所需的状态,自动对相应的家居产品进行控制调节,从而做到减少用户的操作量,解放用户双手的效果。
整体建模首先要做的就是对各个数据的预处理。在一开始缺乏实际数据的情况下,研究会使用一些模拟数据来训练一个相对通用性的神经网络,以获得部分基础的参数,这样在后期用大量数据集进行训练的时候就可以减少调参的步骤。首先考虑从某些特定的方面出发,例如空调温控模式的调整、家里照明设备的自动开关等等,来进行基本的建模和训练。
经过简短的头脑风暴之后,我总结了一些可能性的输入层参数,以空调系统为例,系统需要获取到当前房间各个位置的温湿度、室外的温湿度、当前的季节、房间内是否有人等。其中部分客观数据不需要纳入考虑,例如日期和时间。日期的学习周期太长,且日期与日期之间很难产生一些具体的共通性作为实际的参考,因此用日期作为参量来训练没有太大意义;而系统自身的状态原本就是跟随时间的变化而变化,因此把时间再作为参数纳入训练的话,是没有必要的。
接下来就是用于训练时效果反馈的输出层参数,这些参数会作为当前神经网络训练预测值的参考,来促使神经元的参数进行调整。输出层的值同时关乎到之后各类家居系统的控制,这里同样还是以空调系统为例,当前的系统要纳入考虑的就是空调的温度和风速、空调的运转模式,以及扫风模式等等。这样就完成了原始变量模型的建立。
1.2.2 激活函数
由于神经网络需要有能够近似于任何非线性函数的能力,因此需要使用一个激活函数来加入非线性因子。BP神经网络常用Sigmoid函数或线性函数来作为激活函数,训练所用的数据需要把整个实数域的范围映射到(0,1)区间内,因此采用Log-Sigmoid函数,如下式:
其中e为自然对数,x为实际的测量值,f(x)为参与神经网络训练的输入值。由于Sigmoid函数也是可微的,所以也就能够使用最速下降法来优化各权值,使神经网络能够进行较为高效的迭代学习收敛[5]。
1.2.3 不可量化数据的处理
对于不可量化的数据,经过一些研究和思考,本文提出了几种映射方案,其中比较典型的是以下两种:
(1)用所有状态对(0,1)区间做一个均分,例如空调有制冷、制热、除湿、换气四种模式,均分后对应分别转换为0.0001、0.3333、0.6666、0.9999,这些数据用于输入。经过模拟推测输出的数据则会就近转换到四种模式上。
(2)考虑到空调模式和当前的季节有着密切的关系,由此其实不需要运用到BP网络预测,直接根据夏季制冷、冬季制热的常识来实现模式调节。
对第一种模式进行了仔细研究并结合实际合理推测之后,判定该映射方式不合理。理由是空调的运转模式有着一段时间内的高度趋同性,且逻辑较为简单,因此不适合用历史数据来训练,否则会出现夏天训练的模型经过秋天之后,在冬天一开始会偏向制冷,反之冬天训练的模型在夏天会偏向制热这种情况。因此针对这个数据选择第二种模式,也就是直接通过常规逻辑,将数据和其他客观参数直接挂钩的方式。
训练过程中每一个不可量化数据都需要进行逐个的考量,这样大部分数据都确立下了一种对应模式。另外考虑到由于不同家居电器的模式和参数类型大体都不一样,例如空调和电视,由此将不同设备的神经网络分开训练。
这里可以使用一个例子来说明客观条件转化到数据的逻辑,假设用户3月4日星期六16点20分开启了编号为2的空调,制冷模式,温度为26℃,此时室温有3个测量点,分别为28℃,27℃和28℃,红外传感器探测到房间内有人。下面按照之前规定的逻辑把这些数据一一归一化。
首先是前面的日期和时间,按照规定不进行转化;编号为2,用于判定具体使用的模型;制冷模式和季节直接相关,也不会纳入BP神经网络的训练,因此神经网络的输出端训练数据仅有一个设定的目标温度,而输入数据则包括了房间内的三个室温测量点,其中红外传感器作为一项不可量化的数据,其目的是做到感应式控制,在检测到房间内一段时间没有人之后,系统可以根据用户的设置,自动关闭空调或者调高空调的温度,以达到减少能源浪费的效果。
这样就转化成功了一组样本数据,待研究已经获取到足够多组的数据的时候,就可以把这些样本数据作为训练的数据集,输入到BP神经网络模型中进行训练,其中一部分数据可以作为期望输出值来进行误差分析,来对当前的神经网络的精度做出评估。这样就可以建立起较为合理的数据集了。
1.3 神经网络结构的设计
神经网络结构的设计包括网络层数的设计和各层包括的神经元数目的选取两个方面。一个BP神经网络一定具有一个输入层和一个输出层,其中输入层和输出层节点的个数是由实际问题本身决定的,因此,网络结构的设计重点与难点在于隐层结构的设计,即隐层的数量以及各隐层中神经元的数量。
隐层结构在很大程度上决定着BP网络的训练速度和泛化能力。对于隐层的层数,理论上已经证明,只要隐层神经元的数目足够多,三层BP神经网络就能够模拟任意复杂度的非线性映射[6]。因此,一般采用一个隐层的BP神经网络即可。对于隐层神经元数目的选择,我们采用一般的估算方法,估算公式如下:
其中l为隐层神经元数目,n为输入层神经元数目,m为输出层神经元数目,β为1~10之间的常数,此处经过实验设计,隐层神经元数目为10时效果最好。学习速率η的选择比较重要,η值越大,权值的变化就越大,学习的收敛速度也就越快,但η值过大容易引起振荡,即导致网络不稳定;较小的η值可以避免网络的振荡,但收敛速度慢。通常,需要调整η值使网络中各神经元的学习速度差不多,η的取值范围一般为0.01~0.4。
研究对不同η值分别做了测试:使用相同的模拟数据,在BP神经网络中各做了500次的迭代,记录数据,计算误差值,并用Excel制作了趋势更为明显的对数曲线坐标图,结果如图1所示。
从图1可以看出,学习速率为0.01或0.05时,神经网络的收敛速度较慢,对于实际所需的智能家居设备,若是要获得较为精确的结果,其较低的算力很难满足所需的训练次数。而在学习速率为0.4时,神经网络的波动显得过大,特别是在图上训练次数达到320次左右的时候,预测结果产生了超过20倍的误差波动,因此尽管神经网络的收敛速度很快,但是结果不够稳定,很容易返回错误的参数,这样就有可能导致家居系统的异常控制。因此综上来看,学习速率为0.2时,神经网络能够兼顾收敛速度和稳定性,是较为理想的一个参数。
至此,BP神经网络模型的设计基本已经完成,随后需要对该模型做出测试。
2 智能家居BP神经网络的数据测试
研究以Java语言为基础,完成了所有的BP神经网络构建、训练以及测试。计算机处理器型号为Intel(R) Core(TM) i7-9750H@2.60GHz,安装内存为16G。
为验证算法的精度和稳定性,研究选择了2种不同家居产品的数据进行训练和测试,具体数据集来自Kaggle平台上的一个智能家居训练开源数据集[7]。设定的训练的对象分别为空调和电灯,其中空调输入数据为房间内不同地点的几个温度信息,输出为空调的设定温度,是一个范围为[16,30]的整数。电灯输入数据为环境下几个位置的亮度信息和声音信息,输出数据为开或关,值为1或0。上述两个对象分别代表了不同类型的训练数据:一个是两极化的0或者1,另一个则是具有一定范围的整数。
模型训练完毕之后,针对每个神经网络又分别选取了15组新数据来进行结果测试,以判断神经网络模型的精确度是否能够满足日常家居生活当中的智能化需求。
结果如图2所示,从图中可以看出目前的BP神经网络在理想情况下,善于处理结果种类较少的情况,例如对于电灯测试中的二元结果,其能够达到极高的预测准确率,而在空调测试中,虽然整体趋势没有问题,但在偏差较大的时候能够达到±2~3℃,精度稍有欠缺。
3 BP神经网络的优化
由于传统的BP神经网络存在易于陷入局部最小值、收敛速度较慢、易引起震荡等缺陷,此处考虑引入寻优能力较强的遗传模拟退火算法[8]来优化BP神经网络。由于优化算法本身并不是本次研究的重点,此处仅介绍一下步骤。
首先要建立初始种群,这里可以使用实数编码的方式。
随后要建立一个合适的适应度函数,这里建立了如下的函数:
其中yout为BP神经网络的预测输出,y为目标输出。
随后要经过二元选择、实数交叉、非均匀变异这三项操作来生成新的种群,通过“退火”将适应度较高的个体保留,就这样依次进行下去,直到模型收敛,最后将收敛之后的解传递给BP神经网络的权值和阈值,得到的模型误差会更小,由此提高了预测的精度[9]。
随后对优化之后的算法进行了同样的空调测试来观察效果。
从图3我们可以看出,通过GSA-BP优化之后的算法效果最好,所推测出的值可以极大程度地接近真实值,在数据理想化的情况下,其精度完全可以满足实际需求。
4 结语
为了提高当前智能家居系统的智能化程度,提出一种BP神经网络优化的智能家居控制系统,提供控制系统自学习与自适应的能力。
(1)对家居设备进行参数的归纳,将传感器等客观数据视为输入数据,控制参数视为输出数据,得到基本模型。
(2)利用上述数据构成训练用的数据集来训练BP神经网络,测试结果说明,训练的神经网络对于输出范围较小的情况,能够达到很高的精度,而在输出范围较大,结果较复杂的时候,则会存在一定的误差。
(3)在加入模拟退火算法来优化之后,神经网络成功地达到了较高的精度,基本能够满足智能家居控制的需求。