llya Sutskever回忆 2002年左右,没有GPU,没有数据,没有思路,就是想让机器能学习。
1、找到了Geoffrey Hinton的神经网络,它能学习,原因就是原理与大脑相似。认为这条路前景是最光明的,所以支撑他一路走来。
2、最开始用的是CPU
3、神经元只有50个或几百个(算很大的)
4、100万的参数认为是很庞大了
5、不懂BLAS,用优化过的Matlab
6、用什么的问题来提问比较好,试试这个,试试那个,都是小的尝试。(比如我们现在用鲁迅与周树人是不是同一个人来区分chatGPT3.5和GPT4)
7、Geoffrey Hinton当时对训练神经网络用于小的数字感到兴奋。分类任务,如何生成那些数字,生成模型的源头就从那时开始。但是问题在于做的那些很酷的东西都很零散。什么才是真正推动技术进步?当时并不明确就是对的问题,但事后看来恰恰对了。
针对这个初心,我想问:想让人长生不老,你认为哪条路最光明?
先实现AGI,再让AGI来实现。
普通人没有那么多资源,怎么办?
比如雷军,用纸画的键盘。
脑子里要什么有什么,大脑是最强模似仿真器。
何时知道要构建面向计算机视觉的神经网络?
1、发现有监督学习才是我们前进的方向。
2、如果你的神经网络非常深且大 ,那就可以用它去解决一项有难度的任务。
3、那时的人们还没有去关注大的神经网络,人们可能还在研究神经网络的深度,大部分机器学习领域根本没有去研究神经网络,他们正在研究各种贝叶斯的模型和内核方法,这些方法虽然有优雅的理论基础,但并不表示就是一个好的解决方案,无论你怎么配置他们。(大部分被某歌带沟里了)。
4、大型的神经网络却能在面对问题求解时,给出一个好的答案。
5、为了找到一个好的数据集以及大量的计算来完成这项工作,我们也做了很多优化工作,但优化是一个瓶颈。
6、这时,Geoffrey Hinton的另一个研究生James Martens取得突破,他提出了一种与我们不同的优化方法,他使用一些二阶方法。
7、关键在于,事实证明可以训练这些神经元,因为之前我们都不知道能否训练他们。所以如果能训练神经网络,就把它变大一些。然后去找一些数据,这样就能成功。所以,接下来的问题是,去找什么样的数据。答案就是ImageNet。
8、在当时看来,ImageNet是一个难度很高的数据集,但很明显,如果你要训练一个大的卷积神经网络,在此数据集上它必须成功。
二阶方法是一种在优化领域特别是在机器学习中常见的算法,它们在寻找最优解时考虑了目标函数的一阶导数(梯度)和二阶导数(Hessian矩阵)。这类方法通常比只考虑一阶导数的方法更精确,但计算上也更复杂。下面是一些常见的二阶方法:
-
牛顿法(Newton's Method):牛顿法使用目标函数的一阶和二阶导数来找到极小值。它通过近似目标函数为二次函数并求解这个二次函数的最小值来迭代更新参数。牛顿法在接近最优解时收敛速度非常快,但计算Hessian矩阵和它的逆是计算成本高的步骤。
-
拟牛顿法(Quasi-Newton Methods):为了降低计算Hessian矩阵的成本,拟牛顿法提出使用近似的Hessian矩阵或其逆矩阵。最常用的拟牛顿方法包括BFGS(Broyden-Fletcher-Goldfarb-Shanno算法)和L-BFGS(Limited-memory BFGS)。L-BFGS特别适用于处理大规模问题,因为它不需要存储整个Hessian矩阵。
-
共轭梯度法(Conjugate Gradient Method):这种方法主要用于求解大型线性方程组,但也可以用于优化。共轭梯度法在每次迭代中使用一阶导数信息,但通过一种特殊的方式来更新搜索方向,使得这些方向"共轭",从而提高搜索效率。
-
海森自由优化(Hessian-Free Optimization):这是一种用于深度学习的二阶优化方法,它并不直接计算Hessian矩阵,而是使用一种叫做矩阵-向量积的技术来近似Hessian矩阵对优化过程的影响。
二阶方法在处理具有复杂曲面的优化问题时非常有效,特别是在目标函数的形状变化较大或参数空间较大时。然而,它们的计算成本通常高于一阶方法(如梯度下降),在实际应用中需要根据问题的具体情况权衡选择。
神经网络能够学习主要是因为它们模拟了人脑的工作方式。我们可以用生活中的例子来帮助理解:
-
模仿人脑结构:想象一下,你的大脑是由很多神经元组成的,这些神经元通过突触(连接点)相互连接。神经网络也是这样,它由许多"神经元"(通常是数学函数)组成,这些神经元通过"突触"(权重)相互连接。就像你学习骑自行车时,大脑的神经元会根据经验调整连接,神经网络在学习数据时也会调整其内部的权重。
-
学习和调整:当你学习新东西时,你的大脑会根据反馈来调整。如果你在学习骑自行车时摔倒了,你的大脑会记住这次经验,并在下次尝试时做出调整。神经网络也是通过反馈来学习的,这种反馈通常是通过一种叫做"反向传播"的算法来实现的。网络会根据它的预测和实际结果之间的差异来调整权重,从而提高预测的准确性。
至于其他让计算机学习的结构,确实存在。除了神经网络,还有以下几种常见的机器学习结构:
-
决策树:就像是在做选择题时,根据每个问题的答案来决定下一个问题。决策树通过一系列的是非问题来做出决策。
-
支持向量机(SVM):可以想象成找到一个最好的"尺子",用这个"尺子"来区分不同类别的数据点。
-
集成学习:就像是征求多个专家的意见,然后综合这些意见来做出最终的判断。集成学习通过结合多个模型的预测来提高整体性能。
-
贝叶斯网络:类似于根据过去的经验来预测未来的事件。它们通过概率推理来做出预测。
每种方法都有其独特的优势和适用场景,而神经网络之所以受到广泛关注,是因为它们在处理大量复杂数据(如图像和语音)时表现出色。
OpenAI今年早些时候向一组多样化的alpha测试用户提供了GPT-4V的访问权限,其中包括"Be My Eyes",这是一个为视觉障碍用户构建工具的组织。
语法分析如下:
-
主句结构:
- 主语:"OpenAI"(OpenAI)
- 谓语:"gave"(给予)
- 直接宾语:"a diverse set of alpha users"(一组多样化的alpha测试用户)
- 间接宾语:"access to GPT-4V"(访问GPT-4V的权限)
-
时间状语:
- "earlier this year"(今年早些时候),用来说明动作发生的时间。
-
包括的内容:
- "including Be My Eyes"(包括Be My Eyes),这是一个插入语,用来进一步说明alpha测试用户的一部分。
-
介词短语:
- "an organization that builds tools for visually impaired users"(一个为视觉障碍用户构建工具的组织)
- 这是对"Be My Eyes"的补充说明,用来描述这个组织的作用和目标。
整个句子说明了OpenAI如何将GPT-4V的早期访问权限提供给了一个多元化的用户群体,特别提到了"Be My Eyes"这个为视觉障碍者提供工具的组织,强调了GPT-4V在多种场景下的潜在应用。
"Alpha测试用户"指的是在软件开发过程中早期阶段参与测试的用户群体。在软件或产品的开发周期中,alpha测试通常是在内部测试之后、beta测试之前进行的阶段。这个阶段的特点和重要性如下:
-
早期阶段的测试:
- Alpha测试通常发生在软件开发的早期阶段,当产品的主要功能已经开发完毕但可能还存在很多未解决的问题和bug。
-
限定的用户群:
- Alpha测试用户通常是一群限定的用户,他们可能是公司内部员工、特定的外部测试人员或一些特殊的客户。
-
收集反馈和数据:
- Alpha测试的目的是收集用户对产品的早期体验反馈,帮助开发团队识别问题、改进产品的功能和用户体验。
-
高风险和不稳定性:
- 在alpha测试阶段,产品通常还不够稳定,可能会有很多bug和性能问题。因此,这个阶段的测试用户需要有一定的容错能力和对产品开发过程的理解。
在OpenAI将GPT-4V提供给alpha测试用户的上下文中,这意味着这些用户是首批体验和测试GPT-4V的群体,他们的反馈对于产品的进一步开发和改进至关重要。