? 阿里云社区专家博主,大厂算法开发工程师。 ? 从事视觉算法开发和模型压缩部署工作。 ? 欢迎关注我的公众号-嵌入式视觉。
梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具(梯度下降算法)。因此,有必要从头理解梯度的来源和意义。本文从导数开始讲起,讲述了导数、偏导数、方向导数和梯度的定义、意义和数学公式,有助于初学者后续更深入理解随机梯度下降算法的公式。
大多数深度学习算法都会涉及某种形式的优化,所谓优化指的是改变 x 以最小化或最大化某个函数 f(x) 的任务,我们通常以最小化 f(x) 指代大多数最优化问题。损失函数大致可分为两种:回归损失(针对连续型变量)和分类损失(针对离散型变量)。常用的减少损失函数的优化算法是“梯度下降法”(Gradient Descent)。
本文分析了激活函数对于神经网络的必要性,同时讲解了几种常见的激活函数的原理,并给出相关公式、代码和示例图。从机器学习的角度来看,神经网络其实就是一个非线性模型,其基本组成单元为具有非线性激活函数的神经元,通过大量神经元之间的连接,使得多层神经网络成为一种高度非线性的模型。神经元之间的连接权重就是需要学习的参数,其可以在机器学习的框架下通过梯度下降方法来进行学习。
在工业界,数据预处理步骤对模型精度的提高的发挥着重要作用。对于机器学习任务来说,广泛的数据预处理一般有四个阶段(视觉任务一般只需 Data Transformation): 数据清洗(Data Cleaning)、数据整合(Data Integration)、数据转换(Data Transformation)和数据缩减(Data Reduction)。
所谓超参数,即不是通过学习算法本身学习出来的,需要作者手动调整(可优化参数)的参数(理论上我们也可以设计一个嵌套的学习过程,一个学习算法为另一个学习算法学出最优超参数),卷积神经网络中常见的超参数有: 优化器学习率、训练 Epochs 数、批次大小 batch_size 、输入图像尺寸大小。
数据层面的处理方法总的来说分为数据扩充和数据采样法,数据扩充会直接改变数据样本的数量和丰富度,采样法的本质是使得输入到模型的训练集样本趋向于平衡,即各类样本的数目趋向于一致。
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、能更高效地利用服务器。
先描述下一般处理器的概念,维基百科的定义是 “In computing, a processor is an electronic circuit which performs operations on some external data source, usually memory or some other data stream”。最为常见的处理器有 CPU(可以运行任何程序)、GPU(图形图像处理)和 DSP(处理数字信号),还有专门用来做 DNN 应用神经网络处理器。
在 Linux中,环境变量是一个很重要的概念。环境变量可以由系统、用户、Shell 以及其他程序来设定。变量就是一个可以被赋值的字符串,赋值范围包括数字、文本、文件名、设备以及其他类型的数据。
一个基本概念:任何装置在 Linux 下都是文件,数据沟通的接口也有专属的文件在负责,Linux 的文件种类繁多,常用的是一般文件(-)与目录文件(d)。 注意:Linux 文件类型和文件的文件名所代表的意义是两个不同的概念,在 linux 中文件类型与文件扩展名没有关系。它不像 Windows 那样是依靠文件后缀名来区分文件类型的,在 linux 中文件名只是为了方便操作而的取得名字。Linux 文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等。
计算机执行机器代码,用字节序列编码低级的操作,包括处理数据、管理内存、读写存储设备上的数据,以及利用网络通信。编译器基于编程语言的规则、目标机器的指令集和操作系统遵循的惯例,经过一系列阶段生成机器代码。
在 IEEE 754 标准中浮点数由三部分组成:符号位(sign bit),有偏指数(biased exponent),小数(fraction)。浮点数分为两种,单精度浮点数(single precision)和双精度浮点数(double precision),它们两个所占的位数不同。 • 在单精度浮点格式(C 语言的 float)中,符号位,8 位指数,23 位有效数。 • 在双精度浮点格式(C 语言的 double)中,符号位,11 位指数,52 位有效数。
计算机系统是由硬件和系统软件组成,它们共同工作来运行应用程序。C 语言是系统级编程的首选,同时它也非常实用于应用级程序的编写。
在 C++11 之前,C++ 编程只能使用 C-style 日期时间库,其精度只有秒级别,这对于有高精度要求的程序来说,是不够的。但这个问题在C++11 中得到了解决,C++11 中不仅扩展了对于精度的要求,也为不同系统的时间要求提供了支持。另一方面,对于只能使用 C-style 日期时间库的程序来说,C++17 中也增加了 timespec 将精度提升到了纳秒级别。
归并排序和快速排序是两种稍微复杂的排序算法,它们用的都是分治的思想,代码都通过递归来实现,过程非常相似。理解归并排序的重点是理解递推公式和 merge() 合并函数。
递归是一种非常高效、简洁的编码技巧。只要是满足“三个条件”的问题就可以通过递归代码来解决。编写递归代码的关键就是不要把自己绕进去,正确姿势是写出递推公式,找出终止条件,然后再翻译成递归代码。
广度优先搜索,通俗的理解就是,地毯式层层推进,从起始顶点开始,依次往外遍历。广度优先搜索需要借助队列来实现,遍历得到的路径就是起始顶点到终止顶点的最短路径。深度优先搜索用的是回溯思想,非常适合用递归。
二分查找(Binary Search)算法是一种针对有序且不含重复数据集合的查找算法,时间复杂度为 O(logn)O(logn) ,二分查找虽然性能比较优秀,但应用场景也比较有限。
工业智慧视觉应用主要涉及四个场景:识别、测量、定位、检测。`HALCON` 是德国 MVtec 公司开发的一款综合性的机器视觉标准软件,拥有全球通用的集成开发环境(HDevelop)。
图和树一样都是非线性表数据结构,但是更复杂。树中的元素我们称为节点,图中的元素我们叫作顶点(vertex)。图中的一个顶点可以与任意其他顶点建立连接关系,这种连接关系叫作边(edge)。有方向的图叫做“有向图”。以此类推,我们把边没有方向的图就叫做“无向图”。
常见数据结构-红黑树(上)基础
常见数据结构-二叉树(下)二叉查找树
常见数据结构-哈希算法
常见数据结构-散列表(下)散列表和链表的组合
常见数据结构-散列表(中)实战
常见数据结构-散列表(上)理论
常见数据结构-队列先进先出
常见数据结构-栈先进后出
Linux 基础-查看进程命令 ps 和 top
Linux 基础-查看 cpu、内存和环境等信息
Linux 基础-文本处理命令
Linux 基础-文件权限与属性
Linux 基础-新手必备命令
C++ 编程基础总结
算法图解笔记
西瓜书学习笔记
西瓜书学习笔记
机器学习基础
CNN 基本部件-常用激活函数
使用 CNN 进行图像分类总结
Backbone 网络-ResNet v2 详解
Backbone 网络-DenseNet 详解
Pytorch 基础-tensor 数据结构
TensorRT 基础笔记
ONNX 模型分析与使用
cv算法工程师成长路线
1-计算机视觉岗2019届实习面经
神经网络模型复杂度分析
模型压缩部署概述
通用矩阵乘算法从入门到实践
备份数据非常重要,对于个人开发者来说,我主要是对个人文档、代码数据等做备份,常用方法无非是以下几种: 1.本地备份:我通常会在本地计算机上创建一个备份副本,以便在需要时可以轻松地访问和还原数据,另外也会使用外部固态硬盘进行本地文件拷贝备份。本地备份的好处是速度快、可控性强!完全需要担心网络或者第三方存储的不可靠性问题。
2.云备份(阿里云盘、百度云盘):当然我也会使用云备份来保护我的数据。云备份可以将数据备份到远程服务器,可以设置周期性备份照片、文档等数据,使用更方便,但也有着备份速度不够快、第三方不够安全的问题。
其实无论使用哪种备份方式,最重要的都是确保备份是定期更新的,因为只有更新的备份才能确保数据的安全。
个人使用 K8s 主要是为了更好地部署和管理容器化应用。
我会将应用打包成 Docker 镜像,并通过 K8s 部署到集群中。毕竟 K8s 提供了丰富的部署、扩缩容、负载均衡、健康检查、故障处理等功能,可以让应用的部署和管理变得更加方便和高效。
此外,K8s 提供的配置管理、存储管理等功能也很好用。
K8s 的配置管理可以将配置信息与应用解耦,使得应用可以更加灵活地适应不同的环境和需求;而存储管理则提供了多种存储方式和卷管理功能,可以满足不同应用对数据存储的需求。
是否选择云原生数据库要根据实际情况来考虑。
云原生数据库是为云原生应用而设计的数据库,具有高可用、高性能、易扩展等特点,适合在容器、微服务等云原生场景中使用。如果我的应用是在云原生环境中运行,那么选择云原生数据库可能会更加适合,因为其可以更好地与云原生架构进行集成,提高应用的稳定性和性能。
但是,如果我的应用是在传统环境中运行,那么选择云原生数据库可能会增加部署和维护的复杂度,不一定会带来明显的性能和可用性提升。此外,选择云原生数据库还要考虑到成本、厂商支持等因素。
因此,选择是否使用云原生数据库需要综合考虑实际应用场景、业务需求、技术实力等因素。
1,专业基础,包括底层原理和工具使用。 2,项目经验,这个更看重对项目技术栈和对业务的思考,比如说业务的价值和解决了什么问题,未来怎么发展 3,作为研发人员的技术敏感度和对外输出博客/code 的能力。
我是人工智能方向的从业者,在 LLM 时代,如果拥有海量的云资源,那肯定是用来训练LLM大模型,做一个个人定制版的 chatgpt。
阿里云的不同云产品服务可以搭配使用,形成不同的化学反应,以下是一些常见的组合及其独特的特点:
一句话总结就是,阿里云的不同云产品服务可以灵活搭配使用,来提高应用的性能、可用性、弹性和安全性,同时也可以节约成本。
个人觉得,开源社区可以通过以下方法建立“可控开源”体系:
1.明确项目治理结构和规则:开源项目需要有明确的治理结构和规则,以确保所有参与者都知道自己的角色和责任,遵守相应的规则和标准。这包括项目的贡献者、维护者、核心开发者等,他们应该明确自己在项目中的权利和义务。
2.选择合适的开源协议:选择合适的开源协议可以确保项目的代码在保护知识产权的同时,也能够被广泛地使用和贡献。一些常见的开源协议包括MIT、Apache、GPL等。
3.制定代码贡献流程:开源项目需要一个明确的代码贡献流程,以确保代码质量和安全性,并为参与者提供一个透明的贡献过程。这包括代码审查、测试、部署等环节。
4.建立透明的决策机制:在项目中,需要建立透明的决策机制,以确保所有决策都是公开和透明的,并且有广泛的参与度。例如,可以建立投票机制或者由核心开发者团队进行集体决策等方式。
5.建立文化和价值观:开源社区需要建立文化和价值观,以确保参与者共享相同的目标和理念,并且遵循公正、互信、尊重、共同成长等价值观。这样可以形成更好的社区合作氛围,提高开源项目的可持续性。
6.建立安全和隐私保护机制:在开源项目中,需要建立安全和隐私保护机制,以确保用户数据和隐私信息不受到侵犯。可以建立安全审查和风险评估机制,以及保护用户数据和隐私信息的相关政策和措施。
总之,建立“可控开源”体系需要多方面的努力和合作,包括建立治理结构、选择合适的开源协议、制定代码贡献流程、建立透明的决策机制、建立文化和价值观、建立安全和隐私保护机制等等。这样可以确保开源项目的稳健性和可持续性,也能够吸引更多的参与者和用户。
一句话回答,两者并不冲突,coding的同时做好管理,只是重心不一样,这才是中国未来技术领导者的走向。作为一名开发者,首先需要做的是了解自己的职业目标和职业发展方向,这样才能进行有效的职业规划。以下是一些建议:
最后,职业规划其实是需要持续的努力和反思的,在职场生涯打怪升级的同时也不要忘了停下脚步去总结过去和远望未来。
1,第二个问题,前端开发要向哪个方向发展才能保持竞争优势?
一句话总结就是,基础是不断学习和适应新技术和工具,并不断提升自己的技术深度和拓宽自己的边界,同时也要对外输出开源项目/文档来提升自己的影响力。展开来讲的话,以下是几个前端开发者可以进阶的方向:
2,第二个问题,怎么看待低代码的现状以及未来? 个人感觉,在未来低代码开发可能会变得更加流行,因为它可以帮助开发者更快地验证自己的产品,而不需要太多的编码知识。
尊重技术、理解业务,坚持原创、和做有价值有意义的事情,底线是不作恶!
1,希望在社区看到更多技术基础详解的文章,以及对学习方法、职业规划、产品设计、开源技术等内容的更多讨论。
2,关于社区内容推荐机制,我强烈建议一定要把文章阅读完成率和阅读时长作为衡量一个文章质量高低的主要指标,且一定要从根本上杜绝标题党和形式主义文章的传播!
根据目前的技术积累和行业趋势,可以初步预测下云技术在2023年可能出现的一些新的突破。
1,首先对于中低层面的自媒体作者,Chatgpt 真的很有可能代替他们,今日头条、浏览器新闻的那些文章,如果给足够的中文文章数据去给 Chatgpt 训练,那么未来Chatgpt 肯定能在特定自媒体领域取代部分作者。所以我觉得各个自媒体平台得加速快跑了,未来像通用知识和娱乐圈等方向的文章都可以直接使用 Chatgpt 来写了。
2,国内玩家,目前来看的话百度还是积累最深也有可能是做得最好的,毕竟很早就发布了“文心” nlp 和 cv 相关模型。但最重要的是,百度有国内最全、最大、质量相对最高的语料数据啊,低端的中文问答知识数据用百度搜索、百度知道、百度文库、百度百科、百度经验,中端的用知乎优质问答数据(百度投资过知乎)。但是,我依然觉得国内玩家短时间内不可能超过 Chatgpt。(原因就是另一个话题了,当然我很期待被打脸。)
PS: 想不到吧,百度具有这么多知识问答和分享平台,哎以前因为互联网文化还行,所以百度的一些产品运营也不错,现在由于自身和外部原因,那些平台也都在走下坡路了。
国外玩家,看好和谷歌和 meta,有可能弯道超车.谷歌有着很深的AI技术积累也有着很大很全的数据积累,Meta 同样在 nlp 领域积累很深,对话系统的数据估计积累也不少,而且最近 Meta 发表了一个很有意义的论文-Toolformer。这篇论文虽然被近期 ChatGPT 的风头盖过去了,但是其论文中提到的想法和技术极大可能是末来大模型发展的一个重要的分支!通俗理解Toolformer的作用就是,如果将 ChatGPT 等LLM比作智能大脑的话, Toolformer 模型就是给这些大脑加上了「手」,可以开始使用现有人类世界的软件工具!其意义还是很重大的。因此 Meta 同样不容小觑。
对于云计算等技术体系的安全管控,以下方法可以参考:
1,国内为什么一直没有出现chatgpt式的颠覆性创新
2,当前国内公司可以完全复现乃至超越chatgpt吗
个人觉得年轻的时候应该专注纵向发展,把特定方向的技术基础打扎实,并做深;年纪稍大或者技术已经达到一定深度之后,就可以朝技术广度发展了,这样不仅利于我们转型为技术型的管理者,也有利于成为全能型技术专家。
参加活动
1,如果未来我们拥有极致算力后,可以应用在哪些领域?
2,对未来50年的科技发展产生了怎样的期待?
1,关于问题:哪些算法模型更具备“人类智慧”?GPT-3或Stable Diffusion等大型AI模型是如何支撑生成式AI发展的?
首先,生成式AI(Generative AI)在国内也被称为AIGC(AI Generated Content)。GPT-3或Stable Diffusion等模型都属于生成式AI模型。
其次,我个人觉得,这两年 GPT-3、Stable Diffusion、ChatGPT 等 LLM(大型语言模型)的突破,至少证明了一件事,一定程度上,大力是可以出奇迹的,即基于更大更好的数据、更大的模型、更大的算力三个主要条件下,模型能力是会有质的突破的。而这些模型的发展和突破,反过来也会反哺生成式AI的发展。
2,关于问题:生成式AI会成为人工智能未来的主要发力点吗?
LLM 技术突破至少会替代目前AI落地应用的产品如:客服机器人、虚拟人、机器翻译等产品,使用生成式AI技术来做这些产品的支撑其效果大概率会更好。
3,关于问题:AI开源对国内人工智能领域发展有什么影响?
AI开源有利于打造国内质量更好、更全、更大的中文语料数据集。只要使用过 chatgpt 的人都能明显感觉到其英文问答比中文问答明显更好,其根本原因还是因为英文语料数据集质量更好更全。
AI开源有利于技术和资源共享,在大模型这个赛道上,国内厂家和科研机构已经落后太多了,如果不借助开源(团队力量)来去赶超,后面这个方向上大概率会和美国公司差距越来越大。个人觉得,科研机构、大型公司、创业公司等应该一起发挥各自优势,先去搭建一个更好更大的中文语料数据集,然后大模型基础技术共享,最后各家公司各凭能力看谁能打造最好的中国版 chatgpt。