自动编码器是一种用于降维的神经网络,这也就是说,它可以用于特征选择和提取。
隐藏层数量多于输入的自动编码器有可能会学习恒等函数(输出直接等于输入的函数),进而变得无用。
降噪自动编码器是基本自动编码器的一种扩展,是加入了随机因素的自动编码器。降噪自动编码器采用对输入进行随机污染(即引入噪声)的方式来减少学习恒等函数的风险,
自动编码器必须将污染后的输入重构,或称降噪。
自动编码器是一种用于降维的神经网络,这也就是说,它可以用于特征选择和提取。
隐藏层数量多于输入的自动编码器有可能会学习恒等函数(输出直接等于输入的函数),进而变得无用。
降噪自动编码器是基本自动编码器的一种扩展,是加入了随机因素的自动编码器。降噪自动编码器采用对输入进行随机污染(即引入噪声)的方式来减少学习恒等函数的风险,
自动编码器必须将污染后的输入重构,或称降噪。
受限玻尔兹曼机由 Geoff Hinton 发明,
是一种用于降维、分类、回归、协同过滤、特征学习和主题建模的算法。
RBM是有两个层的浅层神经网络,它是组成深度置信网络的基础部件。RBM的第一个层称为可见层,又称输入层,而第二个层是隐藏层。
深度自动编码器由两个对称的深度置信网络组成,
其中一个深度置信网络通常有四到五个浅层,构成负责编码的部分,另一个四到五层的网络则是解码部分。
这些层都是受限玻尔兹曼机(RBM),即构成深度置信网络的基本单元,
它们有一些特殊之处,我们将在下文中介绍。以下是简化的深度自动编码器架构示意图,下文会作具体说明。
Word2vec是一个用于处理文本的双层神经网络。它的输入是文本语料,输出则是一组向量:该语料中词语的特征向量。
虽然 Word2vec 并不是深度神经网络,但它可以将文本转换为深度神经网络能够理解的数值形式。
Word2vec的应用不止于解析自然语句。它还可以用于基因组、代码、点赞、播放列表、社交媒体图像等其他语言或符号序列,同样能够有效识别其中存在的模式。
发现距离上次学习 DL 已经有大半年了,中间因为网络原因而放弃。
仔细想来,是自己没有坚持。
希望自己坚持下去,深度学习必将是编程的一次革命性进步。
为了提高兴趣和反馈,可以将知识点细碎的过一遍。
每一篇内容少一些。以后补充些实际的例子。
卷积网络(Convolutional Neural Networks)对图像进行物体辨识,可识别人脸、人类个体、道路标志、茄子、鸭嘴兽以及视觉数据中诸多其他方面的内容。
卷积网络与运用光学字符辨识进行的文本分析有重合之处,但也可用于对离散文本单元以及声音形式的文本进行分析。
DL4J目前支持以下各类循环神经网络
GravesLSTM(长短期记忆)
BidirectionalGravesLSTM(双向长短期记忆)
此处个人选择 Deeplearning4j。
用什么框架区别并不大,静下心来学习原理才是重要的。
下面是深度学习框架 TensorFlow、PyTorch、Caffe、Theano、Weka、Marvin、ConvNetJS、MXNet 和 Neon 的对比表格:
下面是深度学习框架 TensorFlow、PyTorch、Caffe、Theano、Weka、Marvin、ConvNetJS、MXNet 和 Neon 的对比表格:
特性 | TensorFlow | PyTorch | Caffe | Theano | Weka | Marvin | ConvNetJS | MXNet | Neon |
---|---|---|---|---|---|---|---|---|---|
编程语言 | Python、C++ | Python | C++ | Python | Java | Java | JavaScript | Python、Java、Scala | Python |
动态计算图 | 部分支持 | 是 | 否 | 是 | 否 | 是 | 是 | 是 | 是 |
社区支持 | 非常活跃 | 非常活跃 | 活跃 | 较少活跃 | 较少活跃 | 较少活跃 | 活跃 | 活跃 | 活跃 |
易用性 | 中等 | 非常高 | 中等 | 较高 | 高 | 高 | 高 | 中等 | 高 |
分布式训练支持 | 是 | 是 | 是 | 是 | 否 | 是 | 否 | 是 | 是 |
平台支持 | Windows、Linux、macOS、Android、iOS、Raspberry Pi | Windows、Linux、macOS | Windows、Linux | Windows、Linux、macOS | Windows、Linux、macOS | Windows、Linux、macOS | 浏览器 | Windows、Linux、macOS、Android、iOS | Windows、Linux、macOS、Android、iOS |
灵活性 | 高 | 非常高 | 中等 | 高 | 中等 | 高 | 中等 | 高 | 中等 |
功能丰富性 | 非常高 | 非常高 | 中等 | 高 | 高 | 中等 | 中等 | 高 | 中等 |
可扩展性 | 非常高 | 非常高 | 中等 | 高 | 中等 | 高 | 中等 | 高 | 高 |
实时训练和可视化 | 是 | 是 | 否 | 否 | 否 | 是 | 是 | 是 | 否 |
主要应用领域 | 通用深度学习领域 | 通用深度学习领域 | 计算机视觉 | 通用深度学习领域 | 通用机器学习领域 | 计算机视觉 | 图像处理和计算机视觉 | 通用深度学习领域 | 通用深度学习领域 |
DeepLearning4j(DL4J)是一个为Java和Scala开发者设计的开源、分布式的深度学习库。它由Skymind公司开发,旨在为企业级用户提供一个强大的深度学习工具。
DL4J是建立在Java虚拟机(JVM)上的,这使得它可以与现有的Java应用程序轻松集成,并且可以利用Java和Scala生态系统的广泛资源和工具。
DL4J的主要特点包括:
分布式和并行计算:DL4J支持分布式和并行计算,可以在多个CPU和GPU上运行深度学习任务,从而加速训练过程。
支持多种深度学习模型:DL4J支持各种深度学习模型,包括卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆网络(LSTM)等,以及它们的变体。
与Hadoop和Spark集成:DL4J可以与Apache Hadoop和Apache Spark等大数据处理框架无缝集成,从而能够处理大规模数据集。
易于使用的API:DL4J提供了简单易用的API,使得开发者能够快速构建、训练和部署深度学习模型。
支持多种数据格式:DL4J可以处理多种数据格式,包括图像、文本、时间序列等,使其适用于各种应用场景。
跨平台:DL4J可以在各种操作系统上运行,包括Windows、Linux和macOS等。
此处个人选择 Deeplearning4j。用什么框架区别并不大,静下心来学习原理才是重要的。
Deeplearning4j 是第一个为 Java 和 Scala 编写的商业级开源分布式深度学习库。
DL4J 集成了 Hadoop 和 Spark,旨在在分布式 GPU 和 CPU 上用于商业环境中。
可应用于以下深度学习领域:
人脸/图像识别
语音搜索
语音转文字(Speech to text)
垃圾信息过滤(异常侦测)
电商欺诈侦测
MNIST包含手写数字的图像是一个数据库,与每一个图像标记的整数。它用于基准测试的机器学习算法的性能。
深度学习MNIST上执行的很好,实现超过99.7%的准确率。
我们将使用MNIST训练一个神经网络来看看每个图像和预测数字。
MNIST数据集包含一个培训组60000例,和测试组10000例。
训练集用于教算法来预测正确的标签,整数,而测试集是用来检查准确经过训练的网络可以猜测。