想学习人工智能、大语言模型?这份学习路线与免费学习资源最值得推荐

本文主要是介绍想学习人工智能、大语言模型?这份学习路线与免费学习资源最值得推荐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

想学习人工智能吗?但不知道如何开始?要熟练掌握人工智能相关的技术,光学习很多课程是不够的。

为了摆脱只是跟着教程学习,你需要亲自动手,从头开始编写算法,动手实践,并通过使用人工智能解决问题来做一些有趣的边项目。这篇文章试图创建一份免费的课程路径,希望对大家学习有帮助。(注意:有大量教程、书籍、论文和资源都是英文的,请配合 AI 翻译工具来阅读吧。)

本文目录

自上而下的方法

算法学习

工具

Python

PyTorch

机器学习

从头编写

参加比赛

做一些小项目

部署它们

深度学习

计算机视觉

强化学习

自然语言处理(NLP)

大型语言模型

从头编写变换器

学习如何运行开源模型

提示工程

微调LLM

RAG

上手实践

如何保持知识更新


自上而下的方法

这份课程采用自上而下的方法——先编码,后理论。

建议大家在必要时才进行学习。即,如果我需要解决某个问题或制作一个原型,我会四处寻找所需的信息,学习、理解然后进行实践。

例如,我目标是成为一个从根本上理解大型语言模型(LLM)的AI工程师,这包括从头编码变换器的技能和在GPU上微调LLM等。我现在还做不到,因为我的知识有缺口,我希望填补这些缺口。

在我给你推荐一堆链接之前,还有两个学习过程中的建议:不要闷头自学。

学无止境,尤其是在人工智能领域,每个月都有前沿的论文发布。

最大的错误是自己闷头学习。除了能完成了某些事之外,你没有任何成果可展示。这样你会错失很多机会。更重要的是你如何处理这些信息,如何将其转化为可以与公众分享的知识,以及从这些信息中产生了什么新颖的想法和解决方案。

因此,你应该在公开你的学习进展,学习经验,甚至是一些成果。

这意味着要养成创造的习惯。这可能意味着,你尝试做这些事情:

  • 写博客和教程
  • 参加黑客马拉松并与他人合作
  • 在社区中提问和回答问题
  • 做你感兴趣的项目
  • 在一些社交媒体上发表你新发现的有趣的事

现在我们开始吧。

算法学习

机器学习严重依赖三大数学支柱:线性代数、微积分、概率与统计。每个都在算法有效运行中扮演着独特的角色。

  • 线性代数:数据表示和操作的数学工具箱,矩阵和向量构成算法解释和处理信息的语言。
  • 微积分:机器学习中优化的引擎,通过理解梯度和变化率,使算法能够学习和改进。
  • 概率与统计:在不确定性下做决策的基础,允许算法通过随机性和可变性的模型预测结果并从数据中学习。

这是一套从程序员视角出发的机器学习数学系列:由Weights & Biases提供的《机器学习的数学》(github 地址)

如果你想从代码角度学习线性代数,可以学习fast.ai创造者的《计算线性代数》(github 地址)。

同时阅读《Python应用机器学习线性代数入门》。

如果你想要更传统的内容,可以看伦敦帝国学院的讲座——线性代数与多变量微积分。(这两个视频,在国内视频网站中没有搜到,大家可以自己跳转去看)

观看3Blue1Brown的《线性代数的本质》和《微积分的本质》。

为了学习统计学,观看StatQuest的《统计学基础》。

补充资料:

  • 书籍:《机器学习的数学》
  • 论文:《深度学习所需的矩阵微积分》

工具

Python

初学者从这里开始:实用Python编程。当然,B 站上也有清华北大整理的 Python 教程,也不错,大家可以自己搜索。

如果你已经熟悉Python,可以学习这个高级Python精通课程。

这两个课程都是由David Beazley(《Python Cookbook》的作者)提供的。

阅读《Python设计模式》。

补充资料

  • 书籍:《流畅的Python,第二版》(Github 地址)
  • 播客:Real Python & Talk Python

PyTorch

PyTorch官网是一个很好的资源。

  • PyTorch示例
  • 官方PyTorch教程
  • 常见问题解答页面
  • 通过一些谜题测试你的知识:srush/Tensor-Puzzles:解决谜题。提升你的PyTorch技能。

补充资料

  • 书籍:《深度学习的PyTorch编程》

机器学习

阅读《100页机器学习书》。

从头编写

在阅读时,从头开始编写算法。

查看下面的代码库:

  • eriklindernoren/ML-From-Scratch
  • JeremyNixon/oracle
  • trekhleb/homemade-machine-learning

如果你想要挑战自己,可以通过以下课程尝试从头开始编写PyTorch。

  • MiniTorch:一个关于机器学习工程的DIY课程(Github 地址)

参加比赛

将所学应用于竞赛。

  • 在 bitgrit 和 Kaggle 等平台上参加机器学习竞赛;在这篇文章中,你可以找到更多类似竞赛。
  • 查看过去参与竞赛的获胜解决方案,并学习它们

做一些小项目

例如阅读Vicki Boykis撰写的《将机器学习投入生产》。她还写了关于构建Viberary(一种图书的语义搜索)的学习经验。

获取数据集并构建模型(例如,使用earthaccess获取NASA地球数据)。你也可以尝试一些已经开源的模型,从部署、训练到微调。如果你缺少合适的 GPU 资源,还有硬件资源,你可以尝试使用 Paperspace 这样的 GPU 云来解决。(中文介绍)

部署它们

将模型投入生产环境,并跟踪你的实践成果。学习如何监控模型。亲身体验数据和模型的变化。

以下是一些优秀资源:

  • Made With ML
  • DataTalksClub/mlops-zoomcamp:免费的MLOps课程
  • chiphuyen/machine-learning-systems-design
  • Evidently AI — ML系统设计:300个案例研究
  • stas00/ml-engineering:机器学习工程在线书籍

补充资料

  • 使用PyTorch和Scikit-Learn的机器学习(Github 地址)
  • 机器学习中的模型评估、模型选择和算法选择
  • 机器学习面试入门书籍·MLIB

深度学习

如果你想从上而下开始,先从fast.ai开始。你可以浏览fast.ai (第一部分, 第二部分) ,以及 W&B学习小组。

如果你想要一个更全面、传统的课程,查看UNIGE 14x050 — François Fleuret教授的深度学习。

如果你需要在某个时候回归理论,这些书籍很棒:

  • 深入深度学习(包含PyTorch、NumPy/MXNet、JAX和TensorFlow的代码示例)
  • 《深度学习》,这本书的作者是Ian Goodfellow, Yoshua Bengio和Aaron Courville
  • 神经网络和深度学习
  • 理解深度学习

在你的神经网络收敛时阅读这些:

  • 训练神经网络的配方
  • 深度神经网络:33年前和33年后

参加更多比赛:

  • PlantTraits2024 — FGVC11 | Kaggle(计算机视觉)

一些值得推荐的论文:

  • 查看labml.ai注释的PyTorch论文实现
  • Papers with Code是一个很好的资源;这里有关于BERT的解释。

以下是深度学习内部一些专业领域的资源:

计算机视觉

  • 很多人推荐CS231n:计算机视觉的深度学习。它很有挑战性,但如果你能坚持下来,会发现很值得一读。

强化学习

对于想要了解强化学习的人来讲,这两个资源很值得看:

  • OpenAI的Spinning Up in Deep RL
  • Hugging Face的深度强化学习课程

自然语言处理(NLP)

  • 另一个很棒的斯坦福课程,CS 224N | 自然语言处理与深度学习
  • 学习Hugging Face:Hugging Face NLP课程
  • 查看这个超级NLP仓库

一些好文章和解析,其中一些插图版本的内容会更加生动易懂:

  • BERT研究 — 第1集 — 关键概念和来源Chris McCormick
  • 插图版Word2vec — Jay Alammar
  • 插图版BERT, ELMo等(NLP如何破解迁移学习)
  • 理解LSTM网络 — colah的博客
  • 从头开始的PyTorch RNN — Jake Tae

补充资料:

  • 使用变换器的自然语言处理书籍

大型语言模型

首先,观看由Andrej主讲的1小时演讲《大型语言模型入门》。接着观看由Alexander Rush — Cornell Tech主讲的《五个公式中的大型语言模型》(暂时没有在国内视频网站看到过这个资源)。

同时,还推荐观看Andrej Karpathy的《神经网络:从零到英雄》。它从解释和从头编写反向传播算法开始,最后教你从头编写GPT。Andrej Karpathy最近发布了新视频 :让我们来构建GPT的分词器(这个视频也没有在国内视频网站上搜到)。

另外,你还可以看看Jay Mody的《60行NumPy代码中的GPT》。

一些免费的LLM训练营

由Full Stack Deep Learning发布的付费LLM训练营,现已免费。它会教你提示工程、LLMOps、LLM的用户体验设计,以及如何在一小时内启动LLM应用。

如果你已经跃跃欲试想要在训练营后开始构建,那你看看这些资源,学习如何使用LLM构建应用:

  • 观看由Andrew Ng主讲的《使用大型语言模型进行应用开发》
  • 阅读Huyen Chip的《为生产环境构建LLM应用》
  • 以及Eugene Yan的《构建基于LLM的系统和产品的模式》
  • 参考OpenAI Cookbook。
  • 使用Vercel AI模板开始。

当然,还推荐你参加一些黑客马拉松,练练手。lablab.ai每周都有新的AI黑客马拉松。

如果你想深入理论并了解一切如何运作。那么可以阅读论文:

  • Sebastian Raschka撰写的《理解大型语言模型》是一篇很棒的文章,列出了你应该阅读的一些论文。
  • 他最近还发表了另一篇文章,介绍了你应该在2024年1月阅读的论文,涵盖了mistral模型。

从头编写变换器

  • 阅读Lil’Log的《变换器家族2.0》以获取概览。
  • 选择最适合你的格式,并从头开始实现。

论文

  • 需要关注的焦点
  • 用漫画讲变换器
  • Harvard的注释变换器
  • 像变换器一样思考

博客

  • 从头开始创建变换器 — 第一部分:注意力机制(第二部分)
  • Sebastian Raschka博士撰写的《从头开始理解和编码大型语言模型的自我注意机制》
  • 从头开始的变换器

看完这些,现在你可以从头开始编码变换器了。但还有更多。

一些好的博客

  • Gradient Descent into Madness — 从头构建一个LLM
  • 插图变换器 — Jay Alammar
  • 关于注意力和变换器的一些直觉 — Eugene Yan
  • 加速GPT — KV缓存 | Becoming The Unbeatable
  • 超越自我注意:一个小型语言模型如何预测下一个标记
  • 从头开始的Llama(或如何在不哭泣的情况下实现一篇论文)| Brian Kitano
  • 改进LoRA:从头开始实现权重分解的低秩适应(DoRA)

学习如何运行开源模型

  • 使用ollama:在本地启动并运行Llama 2、Mistral和其他大型语言模型。他们最近发布了Python和JavaScript库。
  • 在 H100 上运行 MosaicML 模型并进行微调

提示工程

  • 阅读Lil’Log的《提示工程》
  • 由Ise Fulford (OpenAI)和Andrew Ng撰写的ChatGPT提示工程

另外,DeepLearning.ai还提供了其他你可以免费注册的短期课程。

微调LLM

  • 阅读Hugging Face的微调指南。
  • 一本好的指南书:微调 — GenAI指南书

RAG

  • Anyscale撰写的一篇很棒的文章:为生产构建基于RAG的LLM应用
  • 由Aman Chadha提供的检索增强生成的全面概述

上手实践

千万不要忘了我们在最开始说的,一定要多动手实践,在实践过程中,你会发现自己的知识盲区,然后学习会更有动力。

如果你手上没有合适的 GPU 或电脑设备能让你去运行那些大语言模型,那么你可以考虑使用 GPU 云服务,比如 DigitalOcean 的 Paperspace 平台(这里有中文介绍),支持包括 H100、A100、V100 等多种 GPU,并预装机器学习常用的技术栈(包括语言、工具、框架等)。随时扩展,按需停止,只需按使用量付费。相比自建服务器、租赁 GPU,你会发现 GPU 云服务也是个不错的选择。

如何保持知识更新

学到这里,你要做的更多的就是保持自己能得到更多新的资讯、知识,了解当前AI 行业中又有哪些新模型、新论文。所以你可以通过结合新闻、播客,在社交平台上关注一些博主,来保证得到最新的信息。

我们已经花了足够的时间编写和组织这些内容,以至于收益递减。现在是时候学习和构建了。希望这能帮助你在AI旅程中前行!

这篇关于想学习人工智能、大语言模型?这份学习路线与免费学习资源最值得推荐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/949926

相关文章

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES