泳鱼
泳鱼
### 一、AI围棋机器人:AlphaGo AlphaGo的诞生是人工智能领域的一次里程碑式的事件。 时间回到2016年3月,DeepMind公司推出了名为AlphaGo的围棋机器人,最终以4:1战胜了被誉为“不败少年”的韩国天才围棋手李世石。AlphaGo的出现让人们对人工智能的未来更加充满了期待。中国围棋天才少年柯洁曾经评论AlphaGo:“感觉它就像一个有血有肉的人在下棋一样,会选择弃子也会选择退出,棋风非常均衡,真的看不出它是由程序编写的。” 这次人工智能的胜利向世界证明了人工智能的巨大潜力,让我们对人工智能的未来充满了无限的遐想。  已有团队在AlphaGo Zero论文复现了阿法狗项目,代码链接: https://github.com/pytorch/ELF、github.com/Tencent/PhoenixGo ### 二、 AI蛋白质结构预测:AlphaFold AlphaFold唤醒了科学界对AI潜力的认识。 它是DeepMind公司开发的一种高效的蛋白质结构预测模型。它利用神经网络模型和机器学习技术来对蛋白质的结构进行预测,从而能够更好地理解生命体系的基础。AlphaFold通过对已知的蛋白质结构进行分析和学习,可以预测蛋白质的结构,从而帮助研究人员更好地了解蛋白质的功能和结构。AlphaFold已经被广泛应用于生物医学研究领域,为科学家们提供了更好的工具和方法来研究蛋白质的结构和功能。  项目链接:**[](https://link.zhihu.com/?target=https%3A//alphafold.ebi.ac.uk/)[https://alphafold.ebi.ac.uk](https://alphafold.ebi.ac.uk)** 代码链接:[](https://github.com/deepmind/alphafold)[https://github.com/deepmind/alphafold](https://github.com/deepmind/alphafold) ### 三、AI对话机器人:ChatGPT ChatGPT可以比作AI领域的氢弹,引来的轰动是之前任何AI产品所无法比拟的。 ChatGPT是一款由OpenAI开发基于GPT模型的问答机器人。它可以回答各种各样的问题,并且能够根据上下文进行理解和回答。ChatGPT的训练数据来自于互联网上的大量文本,它也可以通过与人类的对话(强化学习)来不断学习和进化。 目前,ChatGPT已经被广泛应用于各种领域,如客服、智能助手等。它的出现为人们提供了一种全新的解决问题和获取信息的方式。  项目链接:[](https://chat.openai.com/chat)[https://chat.openai.com/chat](https://chat.openai.com/chat) chat开源平替版的代码链接: https://github.com/hpcaitech/ColossalAI 、https://github.com/togethercomputer/OpenChatKit ### 四、AI搜索引擎:Bing AI...
### 一、基本介绍 首先简单介绍下,多标签分类与多分类、多任务学习的关系: - 多分类学习(Multi-class):分类器去划分的类别是多个的,但对于每一个样本只能有一个类别,类别间是互斥的。例如:分类器判断这只动物是猫、狗、猪,每个样本只能有一种类别,就是一个三分类任务。常用的做法是OVR、softmax多分类 - 多标签学习(Multi-label ):对于每一个样本可能有多个类别(标签)的任务,不像多分类任务的类别是互斥。例如判断每一部电影的标签可以是多个的,比如有些电影标签是【科幻、动作】,有些电影是【动作、爱情、谍战】。需要注意的是,每一样本可能是1个类别,也可能是多个。而且,类别间通常是有所联系的,一部电影有科幻元素 同时也大概率有动作篇元素的。  - 多任务学习(Multi-task): 基于共享表示(shared representation),多任务学习是通过合并几个任务中的样例(可以视为对参数施加的软约束)来提高泛化的一种方式。额外的训练样本以同样的方式将模型的参数推向泛化更好的方向,当模型的一部分在任务之间共享时,模型的这一部分更多地被约束为良好的值(假设共享是合理的),往往能更好地泛化。某种角度上,多标签分类可以看作是一种多任务学习的简单形式。  ### 二、多标签分类实现 实现多标签分类算法有DNN、KNN、ML-DT、Rank-SVM、CML,像决策树DT、最近邻KNN这一类模型,从原理上面天然可调整适应多标签任务的(多标签适应法),按同一划分/近邻的客群中各标签的占比什么的做下排序就可以做到了。 这里着重介绍下,比较通用的多标签实现思路,大致有以下4种: #### 方法一:多分类思路 简单粗暴,直接把不同标签组合当作一个类别,作为一个多分类任务来学习。如上述 【科幻、动作】、【动作、爱情、谍战】、【科幻、爱情】就可以看作一个三分类任务。这种方法前提是标签组合是比较有限的,不然标签会非常稀疏没啥用。 #### 方法二:OVR二分类思路 也挺简单的。将多标签问题转成多个二分类模型预测的任务。如电影总的子标签有K个,划分出K份数据,分别训练K个二分类模型,【是否科幻类、是否动作类....第K类】,对于每个样本预测K次打出最终的标签组合。 这种方法简单灵活,但是缺点是也很明显,各子标签间的学习都是独立的(可能是否科幻类对判定是否动作类的是有影响),忽略了子标签间的联系,丢失了很多信息。 对应的方法有sklearn的OneVsRestClassifier方法, ``` from...
机器学习作为一门科学,不可避免的是,**科学**本身是基于归纳得到经验总结,必然存在历史经验不适用未来的情况(科学必可证伪)。这里很应景地讲一个小故事--By 哲学家罗素: > 农场有一群火鸡,农夫每天来给它们喂食。经过长期观察后,一只火鸡(火鸡中的科学鸡)得出结论,“每天早上农夫来到鸡舍,我就有吃的”,之后每天的经历都在证实它的这个结论。 但是有一天,农夫来到鸡舍,没有带来食物而是把它烤了,因为这天是圣诞节,做成了圣诞节火鸡。 通过有限的观察,得出自以为正确的规律性结论的,结局如是此。以这角度,我们去看AI/机器学习的应用,也能看到很多类似的例子。 机器学习是研究怎样使用计算机模拟或实现人类学习活动的科学,是基于一系列假设(基本的如,独立同分布假设)归纳得到经验,进行预测的过程。 也不可避免的,机器学习中也可能出现预测的数据与训练数据不满足同分布,**历史数据经验不那么适用了!**导致预测效果变差或失效的情况。这就类似我们考试的时候,发现这类型的题目我没有见过,歇菜了... ### 一、什么是数据不满足同分布 实际预测与训练数据不满足同分布的问题,也就是数据集偏移(Dataset shift),是机器学习一个很重要的问题。  从贝叶斯定理可得P(y,x) = P(y|x) * P(x) = P(x|y) * P(y),当输入空间的边缘概率分布P(x) , 输出空间的标签分布P(y) 以及表示该机器学习任务的条件概率分布 P(y|x) 之中,有任一项因素发生偏移导致训练数据与预测数据 P(y,x)造成差异,即为数据集偏移现象。 不同因素对应着如下三种情况得数据偏移: -...
### 一、模型解释性的意义 >机器学习业务应用以输出决策判断为目标。可解释性是指人类能够理解决策原因的程度。机器学习模型的可解释性越高,人们就越容易理解为什么做出某些决定或预测。模型可解释性指对模型内部机制的理解以及对模型结果的理解。其重要性体现在:建模阶段,辅助开发人员理解模型,进行模型的对比选择,必要时优化调整模型;在投入运行阶段,向业务方解释模型的内部机制,对模型结果进行解释。比如基金推荐模型,需要解释:为何为这个用户推荐某支基金。 在机器学习应用中,有些领域(如金融风控)的模型决策很看重业务的解释性,通过业务先验的知识加以调整并监控模型、以创造更值得信任的、安全可靠的模型。  追求业务解释性,可以减少一些歧视、违规、不合理的特征决策,对模型带来类似正则化效果,可以减少统计噪音的影响(减少过拟合),有更好的泛化效果。 但是,追求业务解释性是个繁琐的事情,首先你得有足够的业务应用知识的理解,其次还要手动不停地调整一版又一版的模型。业界上对合理的业务解释性可以提升模型的效果这是肯定的,特别是在小数据、数据不稳定的情况, 一个金融领域简单的例子,如现有的1000条样本显示,有条数据规律:申请贷款的次数低于10,用户的贷款逾期概率就越大。但是结合业务来看,一个人频繁申请贷款,其负债、还款能力肯定是有问题的,这时仅凭这条现有数据规律去决策风险有点大,很大概率这条决策在更多样本的情况下就是失效的。 我们通过解释性的工具剖析模型决策,当模型决策不符合合理的业务逻辑或法规什么的 ,这时,就很有必要做一些特征选择,调整模型,以符合业务解释性: - 如经典的逻辑回归-lr ,需要不断凭借业务含义调整特征分箱决策的单调性: [一文梳理金融风控建模全流程(Python)](https://mp.weixin.qq.com/s?__biz=MzI4MDE1NjExMQ==&mid=2247489574&idx=1&sn=98ca40dd2775428963b50a05e3a1f06c&chksm=ebbd9a86dcca1390c85fe18b330db1f8c0458a783a8d327c65a74fbcb38f2b72390dc64c4fe2&scene=178&cur_album_id=1986073923821551618#rd) - 如树模型,[一个简单的剪枝调整业务解释性的方法](https://mp.weixin.qq.com/s/K5RwETMk4S7XmHKkTFxrmg)。 ### 二、引入业务先验约束的树模型(GBDT) 但上面两种方法都比较依赖于手动微调模型,以符合业务解释性。为什么不直接在训练过程中,直接依据业务先验知识辅助模型训练? 在此,本文另提出一个思路,通过在树模型学习训练过程(树节点的分裂过程),简单引入个业务先验约束,以符合决策过程符合业务解释性。  大致步骤是, #### 在 GBDT训练代码中,配置特征业务逻辑性的约束 如 当前二分类数据集有age,weight两个特征。假设我们从业务理解上,认为年龄age应该和标签是呈现负相关的,年龄数值越大,标签值应该要越小。那我们就可以配置特征约束的字典feas_logit, 配置特征age业务逻辑性的约束, 新增{'age': -1},...
## 模型迭代方法 机器学习模型在实际应用的场景,通常要根据新增的数据下进行模型的迭代,常见的模型迭代方法有以下几种: - 1、全量数据重新训练一个模型,直接合并历史训练数据与新增的数据,模型直接离线学习全量数据,学习得到一个全新的模型。 优缺点:这也是实际最为常见的模型迭代方式,通常模型效果也是最好的,但这样模型迭代比较耗时,资源耗费比较多,实时性较差,特别是在大数据场景更为困难; - 2、模型融合的方法,将旧模型的预测结果作为一个新增特征,在新的数据上面训练一个新的模型;优缺点:训练耗时较短了,增加决策的复杂度,新增数据量要足够多才能保证融合效果; - 3、增量(在线)学习的方法,如sklearn中算法可调用partial_fit直接增量学习,可以直接利用新增的数据在原来的模型的基础上做进一步更新。增量学习对于模型迭代是很有效率的(特别适用于神经网络的学习,如 arxiv.org/abs/1711.03705)。实际使用中,在线学习和离线的全量学习经常是结合使用,比如离线以全量数据训练一个复杂的模型,在线利用新增样本进行微调。优缺点:对内存友好,模型迭代快且效率较高; ## 二、增量学习 主流的几种机器学习框架,已经实现了增量学习的功能,像sklearn可以直接调用partial_fit做增量学习,神经网络增量学习也很方便,如下tensorflow.keras框架实现增量学习: ``` # tensorflow.keras增量学习 model_path = 'init.model' #加载线上的原模型 loaded_model = tf.keras.models.load_model(model_path) # 新数据上接着训练原模型 history = loaded_model.fit( train_data_gen,...