TensorFlowJS是一个开源软件库JavaScript ,可以在浏览器和 Node.js 训练和部署机器学习模型,可用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索。
本系列课程从基本概念开始,由浅入深的介绍了如何利用TensorflowJS在浏览器中进行深度学习。
在浏览器中进行深度学习:TensorFlow.js (一)基本概念
线性代数(Linear algebra)是整个深度学习的数学基础。而张量(Tensor)是线性代数的基本数学概念和运算单元。这一张介绍了有关张量的基本概念和运算。
希望了解更多的有关线性代数的知识,请参考:
- 机器学习中的线性代数
- 用于深度学习的线性代数备忘清单
- 为什么线性代数如此难教?
在浏览器中进行深度学习:TensorFlow.js (二)线性回归
线性回归是最基本的机器学习,适合学习其它模型之前来了解。
在统计学中,线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。 在线性回归中,数据使用线性预测函数来建模,并且未知的模型参数也是通过数据来估计。
希望了解更多的线性回归的知识,请参考:
- 免费Python机器学习课程一:线性回归算法
- 线性回归终极指南
- 图解机器学习 线性回归
在浏览器中进行深度学习:TensorFlow.js (三)更多的基本模型
在本章中,我们利用TensorflowJS实现了逻辑回归和K近邻算法。并利用梯度下降的原理解决了一个几何问题,如果通过平面上的三个点来确定一个圆。
更多逻辑回归,梯度下降的内容,请参考:
- 逻辑回归的几何解释
- 机器学习算法简介-Logistic回归
- 了解逻辑回归系数
- 图解机器学习 逻辑回归
- 梯度下降方法的视觉解释(动量,AdaGrad,RMSProp,Adam)
在浏览器中进行深度学习:TensorFlow.js (四)识别MNIST手写数据
MINST数据集来进行手写识别对于深度学习而言,就像是学习编程的Hello World。本节利用TensorflowJS来演示了如何手写数字的识别。
在浏览器中进行深度学习:TensorFlow.js (五)构建一个神经网络
神经网络(Neural Network)是深度学习的基础,基本概念包括:神经元,层,反向传播等等。本节利用TensorflowJS构建一个基本的神经网络。
更多神经网络的知识请参考:
- 神经网络可视化帮助你更好地了解神经网络如何工作
- 码农必须了解的5种神经网络架构
- 从头开始可视化神经网络的工作方式
- 了解神经网络和模型泛化
- 每种机器学习算法都可以表示为神经网络
- 在理解通用逼近定理之前,你都不会理解神经网络
- 可视化解释11种基本神经网络架构
- 为什么神经网络如此强大?
- 用Numpy从零开始构建神经网络
- 神经网络架构简介
- 神经网络介绍 – 深度学习
在浏览器中进行深度学习:TensorFlow.js (六)构建一个卷积网络
卷积神经网络是一种前馈神经网络,卷积神经网络最擅长的就是图片的处理。它受到人类视觉神经系统的启发。
CNN 有2大特点:
- 能够有效的将大数据量的图片降维成小数据量
- 能够有效的保留图片特征,符合图片处理的原则
目前 CNN 已经得到了广泛的应用,比如:人脸识别、自动驾驶、美图秀秀、安防等很多领域。
更多卷积神经网络的知识,请参考:
- 卷积神经网络学习识别手写数字时的可视化
- 卷积神经网络(机器学习从零到大师,第3部分)
- 如何训练神经网络—CNN简介 「Pytorch基础知识」
在浏览器中进行深度学习:TensorFlow.js (七)递归神经网络
神经网络除了CNN之外的另一个常见的类别是RNN,递归/循环神经网络。这里的R其实是两种神经网络,Recurrent:时间递归 , Recusive:结构递归。时间递归神经网络的神经元间连接构成有向图,而结构递归神经网络利用相似的神经网络结构递归构造更为复杂的深度网络。我们大部分时间讲的RNN指的是前一种,时间递归神经网络。
更多递归神经网络的知识请参考:
- 详解LSTM网络
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络
GAN是深度学习中非常有趣的一种模型。GAN的两个主要支柱是生成器和鉴别器。 这是两个复杂的神经网络。通过生成器和鉴别器的相互对抗,生成以假乱真的内容。
更多生成对抗网络的内容,请参考:
- 深度学习中的生成对抗网络GAN
- GAN(生成对抗网络)背后的数学
- 初学者的生成对抗网络(GAN)教程
- 条件对抗网络的图像到图像翻译 Pix2Pix
- 这将改变您看待GAN的方式
在浏览器中进行深度学习:TensorFlow.js (九)训练词向量
词向量,英文名叫Word Embedding,在自然语言处理中,用于抽取语言模型中的特征,简单来说,就是把单词用一个向量来表示。词向量嵌入训练是自然语言处理的基础。
更多词向量嵌入和自然语言处理的内容,请参考:
- 使用TensorFlow在10分钟内掌握词嵌入
- 用IMDB评论在10分钟内掌握单词嵌入
- 自然语言处理(NLP)入门
- Python 自然语言处理从零到大师
- 对于自然语言处理,你需要了解3种神经网络架构
在浏览器中进行深度学习:TensorFlow.js (十)构建一个推荐系统
推荐系统是机器学习的一个常见应用场景,它用于预测用户对物品的“评分”或“偏好”。通常推荐系统产生推荐列表的方式通常有两种:
- 协同过滤以及基于内容推荐,或者基于个性化推荐。协同过滤方法根据用户历史行为(例如其购买的、选择的、评价过的物品等)结合其他用户的相似决策建立模型。这种模型可用于预测用户对哪些物品可能感兴趣(或用户对物品的感兴趣程度)。
- 基于内容推荐利用一系列有关物品的离散特征,推荐出具有类似性质的相似物品。
更多推荐系统的内容请参考:
- 手把手教你基于深度学习构建推荐系统
- 如何使用Python Surprise构建基于内存的推荐系统
- Netflix推荐系统-大数据案例研究
在浏览器中进行深度学习:TensorFlow.js (十一)时间序列预测
时间序列预测的机器学习的一种常见应用,例如预测股票和金融产品价格走势, 温度,天气的走势等等。
更多时间序列分析的内容请参考:
- 时间序列分析快速入门
- 用于时间序列预测的AutoML
- Sktime:用于时间序列机器学习的统一Python库
- Prophet+深度学习= NeuralProphet
在浏览器中进行深度学习:TensorFlow.js (十二)异常检测算法
异常检测是机器学习领域常见的应用场景,例如金融领域里的信用卡欺诈,企业安全领域里的非法入侵,IT运维里预测设备的维护时间点等。
更多异常检测的内容,请参考:
- 每个数据科学家都需要的3种简单的异常检测算法
- 用Python中从头开始的实现完整的异常检测算法
- 用TensorFlow 2.0实现基于自编码器的异常检测
- 用Python做单变量数据集的异常点分析
- 如何在数据流中轻松检测异常值
- 使用Apache Kafka和Cassandra进行大规模可扩展的异常检测