那些机器“教”我的事儿

​三人行,必有我师。而这三人中,如今多了一个“机器人”。

所谓三人同行,那这“三人”必是在生活,学习,工作中都能观察到对方的做事方式和行事逻辑,从而发现对方的长处和自己的不足,作为一个常与“人”工智能打交道的产品人,着实能感受到“机器们”某些方面不凡的表现,当然并不是那些人不可企及的计算和存储能力,具体哪方面值得我们人类学习呢?待我一一说来。

一,泛化能力

 

相信玩过机器学习的同学对“泛化”这个词一点儿都不陌生,我们在训练模型的过程中总会关注模型的泛化能力,而且总会强调要防止过拟合。通俗点儿来说,泛化能力就是这个模型训练好之后,迁移到其他相同或类似的场景下也是work的,反之,如果训练好的数学模型只在当前的实验场景下起作用,但是一旦放到其他环境下,立马就失效了,这就是所谓的过拟合。这里还有一个具体的例子,比如说我们训练一个机器人说话,当我们教了这个机器人一句“谢谢”,并让他回复“不客气”后,那有泛化能力的对话模型,在我们教了他一句“谢谢”之后,他就可以泛化到“谢谢你了”,“谢啦”,“感谢”。。。这些表示感激的表达方式,并且可以在识别相同的意思时回复“不客气”,那过拟合可能就不一样了,你教他一句“谢谢”,并让它回复“不客气”之后,当你再问他同样表达感激的意思时,它就”听“不懂我们的感激了;

屏幕快照 2017-09-16 下午8.29.34.png

(有泛化能力的)


屏幕快照 2017-09-16 下午9.11.00.png

(过拟合)


其实,如果跳出机器的范畴来看,所谓的泛化能力映射到人类身上,所对应的就是一个人触类旁通,举一反三和活学活用的能力。那过拟合的反映是什么呢?正好与之相反--------只会解决某一个问题,但是对于情况稍有变化的同类问题就会束手无策,这就是所谓的人类的过拟合。总的来说我们可以说机器学习的过程就是一个得到泛化能力的过程,而人学习的过程就是一个总结方法的过程。现在越来越多的人担心机器会取代人类,也是感受到了机器在各个领域所表现出的过人的学习能力,先不说名声在外的阿尔法狗,就看看我们身边的随处可见的智能产品,比如说智能手机,智能音响等等已经不是以前的那般“智障”,他们的对于人类世界的认知拟合的表现也越来越好,总的来说,在总结方法这个方面,机器绝对是人的老师,虽然在运算能力上人类是无法企及的,但“泛化”能力是我们需要不断去培养和训练的。

二,重视过程数据,追问5W1H.

上面提到了数学模型的泛化能力,那如何提高这种能力呢?其中很重要的一条便是加入丰富的过程数据。比如说当我们想让机器预测一个人在某个电商网站购买某个品牌商品的概率,那建模过程中的结果就是用户最后有没有购买这个商品,还有这个结果关联度最高的------这个商品属于哪个品牌,这个品牌在哪个电商网站售出。其实离预测结果最近的这些相关信息都属于结果数据,那我们所谓的过程数据是什么呢?其实就是包括这个客户为什么会在这个网站购买,为什么会购买这个品牌?为什么会在这个时间购买?来这个网站购买的人是谁?是什么时候买的?等等,这一系列关于what,why,when,where,which,和how问题的答案就是所谓的过程数据,只有这些数据足够的丰富,我们的机器模型的预测的准确度才会更高。

屏幕快照 2017-09-17 上午11.00.34.png

关于5W1H,我相信学过管理学的同学应该不会陌生,解答好关于5W1H的问题,是我们做决策的基础。我们可以看到,为了训练一个好的模型,即使机器的计算能力如此之强,它都需要这么多的过程数据,更何况我们人所面临的问题更抽象也更不确定,所以在我们分析问题时,需要收集足够多的与结果相关的数据,才能帮助我们洞察事物的本质,找到决策中的最优解。

3.不断迭代,才能持续满足需求。

用过iPhone上Siri的同学应该可以很明显的感受到,2016年第一次在iPhone4s上使用Siri和现在我们再用Siri时体验的差距,最直观的感受可能就是Siri对中文的识别能力的增强,显然,支撑Siri运行的机器模型一直处于不断迭代升级的状态,而且对于所有机器模型来说,唯一不变的,就是持续迭代。这种持续迭代的状态其实也是机器不得不保持的状态,因为人类产生的数据是在不断变化的,而机器的模型是靠数据来训练的,所以这种动态更新也被模型继承。

人类社会的加速变迁也可以通过摩尔定律反映出来,我们所接收到的信息也在爆炸式的更新----我们现在一天能够接收到的信息量可能比古时候一辈子都要多的多。所以,对世界认知的持续迭代也已经成为我们生存,生活所必备的能力之一了。如果说以前我们还有“老人言”可听,有“别人走过的路”可循,那现在我们就只能靠最新的数据,这种“最新”可能是最近一年,一个月,一周,一天,甚至前一小时的数据来作出最后的决策,并不是说以往的经验是错的,而是为了应对外部客观环境瞬息万变,只能靠实时的,持续的迭代才能满足当前时代的节奏。

所以,泛化能力,解决5W1H的问题,不断迭代这三大能力也是我们工作中的三大利器,无论机器人还是人类,都依托于这些基础能力才能创造新的价值。

人工智能崛起的时代,我们所关注的不该只有技术层面,从1956年AI这一概念被创造,直到今天真正渗入到我们生活,从中我们应该看到哪些优势导致了这种必然,并持续的学习这些优势,不断的迭代自己。

让机器学习?No!向机器学习!

本文由:@赵磊 原创发布于PMCAFF产品经理社区,转载请保留此信息。

原文地址:http://www.pmcaff.com/article/index/934450483083392



CH341A编程器是一款广泛应用的通用编程设备,尤其在电子工程和嵌入式系统开发领域中,它被用来烧录各种类型的微控制器、存储器和其他IC芯片。这款编程器的最新版本为1.3,它的一个显著特点是增加了对25Q256等32M芯片的支持。 25Q256是一种串行EEPROM(电可擦可编程只读存储器)芯片,通常用于存储程序代码、配置数据或其他非易失性信息。32M在这里指的是存储容量,即该芯片可以存储32兆位(Mbit)的数据,换算成字节数就是4MB。这种大容量的存储器在许多嵌入式系统中都有应用,例如汽车电子、工业控制、消费电子设备等。 CH341A编程器的1.3版更新,意味着它可以与更多的芯片型号兼容,特别是针对32M容量的芯片进行了优化,提高了编程效率和稳定性。26系列芯片通常指的是Microchip公司的25系列SPI(串行外围接口)EEPROM产品线,这些芯片广泛应用于各种需要小体积、低功耗和非易失性存储的应用场景。 全功能版的CH341A编程器不仅支持25Q256,还支持其他大容量芯片,这意味着它具有广泛的兼容性,能够满足不同项目的需求。这包括但不限于微控制器、EPROM、EEPROM、闪存、逻辑门电路等多种类型芯片的编程。 使用CH341A编程器进行编程操作时,首先需要将设备通过USB连接到计算机,然后安装相应的驱动程序和编程软件。在本例中,压缩包中的"CH341A_1.30"很可能是编程软件的安装程序。安装后,用户可以通过软件界面选择需要编程的芯片类型,加载待烧录的固件或数据,然后执行编程操作。编程过程中需要注意的是,确保正确设置芯片的电压、时钟频率等参数,以防止损坏芯片。 CH341A编程器1.3版是面向电子爱好者和专业工程师的一款实用工具,其强大的兼容性和易用性使其在众多编程器中脱颖而出。对于需要处理25Q256等32M芯片的项目,或者26系列芯片的编程工作,CH341A编程器是理想的选择。通过持续的软件更新和升级,它保持了与现代电子技术同步,确保用户能方便地对各种芯片进行编程和调试。
内存分区情况的分析是嵌入式系统开发中的一个重要环节,特别是在资源有限的MCU(微控制器)环境中。标题提到的工具是一款专为分析Linux环境下的`gcc-map`文件设计的工具,这类文件在编译过程结束后生成,包含了程序在目标设备内存中的布局信息。这个工具可以帮助开发者理解程序在RAM、ROM以及FLASH等存储区域的占用情况,从而进行优化。 `gcc-map`文件通常包含以下关键信息: 1. **符号表**:列出所有定义的全局和静态变量、函数以及其他符号,包括它们的地址和大小。 2. **节区分配**:显示每个代码和数据节区在内存中的位置,比如.text(代码)、.data(已初始化数据)、.bss(未初始化数据)等。 3. **内存汇总**:总览所有节区的大小,有助于评估程序的整体内存需求。 4. **重定位信息**:显示了代码和数据如何在目标地址空间中定位。 该分析工具可能提供以下功能: 1. **可视化展示**:将内存分配以图形化方式呈现,便于直观理解。 2. **详细报告**:生成详细的分析报告,列出每个符号的大小和位置。 3. **比较功能**:对比不同编译版本或配置的`map`文件,查看内存使用的变化。 4. **统计分析**:计算各种内存区域的使用率,帮助识别潜在的优化点。 5. **自定义过滤**:允许用户根据需要筛选和关注特定的符号或节区。 虽然在MCU环境中,Keil IDE自带的工具可能更方便,因为它们通常针对特定的MCU型号进行了优化,提供更加细致的硬件相关分析。然而,对于通用的Linux系统或跨平台项目,这款基于`gcc-map`的分析工具提供了更广泛的适用性。 在实际使用过程中,开发者可以利用这款工具来: - **优化内存使用**:通过分析哪些函数或数据占用过多的内存,进行代码重构或调整链接器脚本以减小体积。 - **排查内存泄漏**:结合其他工具,比如动态内存检测工具,查找可能导致内存泄漏的部分。 - **性能调优**:了解代码执行时的内存分布,有助于提高运行效率。 - **满足资源限制**:在嵌入式系统中,确保程序能在有限的内存空间内运行。 总结来说,`gcc-amap`这样的工具对于深入理解程序的内存布局和资源消耗至关重要,它能帮助开发者做出更明智的决策,优化代码以适应不同的硬件环境。在处理`map`文件时,开发者不仅能获取到程序的内存占用情况,还能进一步挖掘出可能的优化空间,从而提升系统的整体性能和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值