Julia 机器学习简介
机器学习是人工智能的一个分支,它基于向系统提供数据、识别模式并在没有任何明确干预的情况下做出决策。机器学习一词由美国计算机游戏和人工智能领域的先驱 Arthur Samuel 于 1959 年创造,并表示“它使计算机能够在没有明确编程的情况下进行学习”。机器学习还与计算统计有关,这是使机器准确预测结果的主要任务。
与其他领域的关系
- 人工智能:机器学习通常用于对机器进行编程,在对特定数据集进行一定训练后,它可以在无需人工干预的情况下自行做出决定。
- 数据挖掘:数据挖掘侧重于使用机器学习方法了解数据集特征的属性。另一方面,机器学习使用数据挖掘作为一种无监督的学习方法。
- 优化:算法可以最小化训练数据集的损失,而机器学习可以最小化不可见或其他数据集的损失。
- 统计:统计从样本中得出总体推断,而机器学习则发现泛化预测模式。
有几种算法可用于处理某些有条件的数据集,但是,当有数百万数据可用的大数据时,这些算法的效率会降低。基本思想是在数据集上训练系统进行学习,然后让它根据情况做出自己的决定。例如,在 1997 年,Tom Mitchell 将机器学习定义为“如果计算机程序在 T 上的性能以 P 衡量,随着经验 E 的提高而提高,则称计算机程序从经验 E 中学习关于某些任务 T 和某些性能度量 P”。
Julia 作为编程语言
现在,Julia 于 2012 年由美国麻省理工学院 (MIT) 的 Viral B. Shah、Jeff Bezanson、Stefan Karpinski 和其他贡献者首次推出。它是一种开源语言,广泛应用于统计计算、科学研究、数据分析、图形表示、数据建模和报告。它还拥有数据科学所需的所有库。
Julia 的行业实现
很少有财富 500 强公司,例如贝莱德,使用 Julia 编程语言进行时间序列分析。另一个名为Aviva的英国组织使用 Julia 作为风险计算。纽约储备银行过去常常制作美国经济模型,并指出该语言使用 Julia 进行模型估计。据该组织称,该模型比之前的 MATLAB 实现快 10 倍。
最近NVIDIA在他们的GPU中实现了 Julia,因为他们发现 Julia 像Python一样易于使用,但像 C 一样运行。它增加了高性能和多线程功能。使用大型机器学习专家社区来构建他们的高性能模型。
用于机器学习的流行 Julia 包
- Mocha.jl:这是一个用 Julia 编写的深度学习包。它是一个可以与核心功能交互的本机界面。有了这个包,就不需要包含外部依赖了。
- Knet:这是一个用 Julia 编写的深度学习包。它允许在 Julia 中定义模型的计算,使用循环、递归、连接和其他功能。
- SciKitLearn.jl:它是一个用 Julia 编写的包装器,用于称为 Scikitlearn 的Python库。
- Flux: Flux 是 Julia 中的一个包,它直观地定义了模型,与数学符号相同。任何现有的 Julia 库都可以直接包含在通量模型中。
- Merlin:这是一个用 Julia 编写的深度学习包。它为机器学习提供了一个快速而紧凑的库。该库在 CPU 和 CUDA GPU 上运行。
- MLBase.jl: Julia 包提供了支持数据预处理和修改、分类、评估、验证和模型调整等程序的工具。
- Strada:它是一个具有 Caffe 框架的 Julia 包。它支持 Caffe 功能并与 Julia 集成。
- TensorFlow.jl:它是开源 TensorFlow 的包装器。
Julia 在机器学习中的应用
目前,Julia 在机器学习领域主要专注于计算机视觉、物联网(IOT)、图分析、信号处理、自然语言处理。
- 计算机视觉:它是使用计算机和相关输入/输出设备的生物视觉。学者和工程师为计算机视觉应用程序开发了软件包,如Metalhead.jl、Flux和ImageProjectiveGeometry.jl
- 自然语言处理:用于进行机器学习、理解和生成人类语言内容的计算技术。 Package LightNLP.jl是 Julia 的轻量级 NLP 工具包。
- 图分析:这是结合图、统计和数据库技术来建模、存储、检索和分析图。 Julia 有一个像LightGraphs.jl这样的包
- 物联网 (IOT)是一种范式,即机器和设备相互连接的网络。 Fugro Roames 工程师在机器学习算法中使用 Julia 来识别网络故障和潜在故障。
机器学习方法的类型
- 回归:回归技术帮助机器学习方法预测连续值。例如,检测正确的图像
- 分类:输入被分成一个或多个类或类别,供学习者生成一个模型来分配看不见的模块。例如,在电子邮件不真实的情况下,我们可以将电子邮件分为两类,即“垃圾邮件”和“非垃圾邮件”。
- 聚类:此技术遵循总结,找到一组相似的实体。例如,我们可以收集和读取医院患者的读数。
- 关联:此技术查找同时发生的事件或项目。例如,市场篮子。
- 异常检测:该技术通过发现异常情况或行为来工作。例如,信用卡欺诈检测。
- 序列挖掘:该技术预测下一个流事件。例如,点击流事件。
- 推荐:此技术推荐项目。例如,根据名人的歌曲或电影。
使用 Julia 实现机器学习的优势
- 与Python不同,Julia 像 C 语言一样被编译但不是解释性的。这使得代码运行能力更快。
- 它还以这样的方式设计,它也可以很好地与并行和分布式计算一起工作。
- Julia 的代码是直接编译而不是解释的,这使得它更快。
- 它有一个内置的包管理器。
- 函数调用是直接的。不需要包装器或容器 API。
- 用户定义的类型与内置类型一样快速和紧凑。
- 它带有自己的命令行工具。
- 它具有易于使用的数学友好语法。
- Julia 是开源的,在 MIT 许可下免费。
- 它是可扩展的。
- 适用于 GPU 和 CPU