[译]经验教训:遗传算法简介
By robot-v1.0
本文链接 https://www.kyfws.com/ai/lesson-to-learn-introduction-to-genetic-algorithms-zh/
版权声明 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 18 分钟阅读 - 8542 个词 阅读量 0经验教训:遗传算法简介(译文)
原文地址:https://www.codeproject.com/Articles/1271407/Lesson-to-Learn-Introduction-to-Genetic-Algorithms
原文作者:Dmitriy Gakh
译文由本站 robot-v1.0 翻译
前言
An introduction to Genetic Algorithms with brief reference to biology and example of finding one solution for complex mathematical equation
遗传算法简介,简要介绍了生物学以及为复杂数学方程式找到一个解的示例
- 下载C#示例-15.6 KB(Download C# example - 15.6 KB)
- 下载Java示例-8.1 KB(Download Java example - 8.1 KB)
- 下载C ++示例-19.2 KB(Download C++ example - 19.2 KB) C#和C ++示例是使用MS Visual Studio Community 2015创建的.Java示例是使用Eclipse neon.3创建的.源代码与不同平台兼容.(C# and C++ examples were created using MS Visual Studio Community 2015. Java example was created using Eclipse neon.3. Source codes are compatible with different platforms.)
介绍(Introduction)
本文是对遗传算法的介绍,该遗传算法已在机器学习和人工智能等现代技术中广泛使用.本文是为开始学习编程的学生而写的,这是对他们的主要课程的补充阅读,以激发他们学习高级学科的能力.它对于所有想提高自己的知识和技能的人也很有用.(This article is an introduction to Genetic Algorithms that are widely used in such modern technologies as Machine Learning and Artificial Intelligence. The article is written for students starting to learn programming as additional reading to their main course to motivate them to study advanced subjects. It can also be useful for all who would like to improve their knowledge and skills.)
作者试图使文章和程序的源代码尽可能简单,希望读者喜欢阅读文本并运行代码.作者将很高兴收到读者的任何反馈意见,以提高阅读水平.(The author tried to make the article and program source codes as simple as possible and hope the reader will enjoy reading the text and running the codes. The author will be glad to get any feedback from the readers to improve this reading.)
内容(Contents)
背景(Background)
动机(Motivation)
作为巴库州立大学的讲师,作者注意到学生具有不同水平的编程技能和才能.对年轻专业人员的教育不仅需要知识转移,还需要学习和自我发展的动力.为学生提供更多的阅读材料以扩大他们的视野并理解信息技术变得很重要.这些额外的读数不是强制性的,但强烈建议使用.有才华和技能的学生会获得实践经验,而其他人则会丰富他们的知识.(Being a lecturer in Baku State University, the author observes that the students have different levels of the programming skills and talent. Education of young professionals require not only knowledge transfer, but also motivation to study and to self-develop. It becomes important to provide additional readings for the students to expand their vision and to understanding informational technologies. These additional readings are not obligatory for them, but are highly recommended. Talented and skilled students gain practical experience while others enrich their knowledge.)
如何阅读文章(How to Read the Article)
本文包括两个主要部分:(The article consists of two main parts: “)生物学背景(Biological Background)“和”(” and “)算法的实现(Implementation of the Algorithm)”. 章节 “(”. Chapter “)生物学背景(Biological Background)“考虑了一个以所需质量获得狗标本的例子.该例子非常简单.实际的生物过程非常复杂.但是,该例子的主要目的是解释遗传算法中使用的概念.这一章似乎没有必要对于经验丰富的专业人士来说很烦人,但对于新手来说,此介绍可能是必不可少的.(” considers an example of getting a dog specimen with required quality. The example is very simple. Real biological processes are significantly complex. But the main purpose of the example is explanation of conceptions that are used in the Genetic Algorithms. The chapter could seem unnecessary and annoying for the experienced professionals, but for newbies, this introduction may be essential.)
章节 “(Chapter “)算法的实现(Implementation of the Algorithm)“解释了遗传算法的编程和运行方式.本章介绍了使用三种编程语言(C#,Java和C ++)实现算法的方法.源代码可供下载(请参见本文顶部的链接).(” explains how Genetic Algorithm can be programmed and run. The chapter describes implementation of the algorithm using three programming languages: C#, Java, and C++. Source code is available for download (see links at the top of the article).)
生物学背景(Biological Background)
遗传算法的思想是从自然界窥见的.所有生命有机体都可以代代相传,使其适应环境的变化.人们一直在利用这一方面来育种具有理想品质的动植物新品种.让我们考虑一个简单的例子.该示例提供了有关流程如何工作以及某些术语含义的线索.(The idea of the Genetic Algorithms was peeped from the nature. All living organisms can be changed from generation to generation that allow them to adapt to the changes in the environment. People have been using this aspect for breeding new varieties of animals and plants with desirable qualities. Let us consider a simple example. This example gives a clue about how the process works and what some terms mean.)
假设有一群灰狗,需要把它变成白色.下图显示了现有的羊群.(Suppose there is a flock of gray dogs and it is required to get white ones. The picture below shows the existing flock.)
如果研究羊群,读者会发现一些标本不是完全灰色但有小的白斑.这是因为在复制时会发生突变(这是自然法则).遗传算法中也使用了术语"变异"和"繁殖”.因此,这些概念将在以后的描述中使用.由于相同的原因,也将使用术语"人口"代替"群”.(If studying the flock, the reader can find some specimens which are not totally gray but have small white spots. This is because there are mutations that have taken place at their reproduction (it is a law of nature). Terms “mutation” and “reproduction” are used in the Genetic Algorithms also. Thus, these conceptions will be used in future description. Term “population” will be also used instead of “flock” due to the same reason.)
下一步,让我们从总体中选择带有白色斑点的标本. “选择"也是遗传算法(以及生物学和农业)中使用的术语.所选标本如下图所示.(As the next step, let us select from the population the specimens with the white spots. “Selection” is also a term used in the Genetic Algorithms (as well as in biology and agriculture). Selected specimens are shown in the picture below.)
如果复制选定的标本,将会获得新的种群.虽然新标本(儿童)的质量是其父母的质量的组合,但在繁殖过程中会发生偶然的质量变化,称为"突变”(这是自然定律.科学家使用辐射来放大突变).由于突变是随机的,因此最终种群将具有三种样本:(If selected specimens are reproduced, new population will be got. While qualities of new specimens (children) are combinations of qualities of their parents, casual changes in the qualities, named “mutations” take the place during reproduction (It is a law of nature. Scientists use radiation to amplify mutation). Because mutations are random, final population will have three types of specimens:)
- 标本白斑少或没有(Specimens with less or no white spots)
- 具有相同大小白点的标本(大多数情况下是大多数标本.我们可以说这些标本没有突变.)(Specimens with the same size of white spots (Majority of specimens in most cases. We can speak these specimens were not mutated.))
- 带有较大白点的标本(Specimens with bigger white spots) 下图显示了新人口.读者可以将其与第一个总体进行比较,以查看差异.(The picture below shows new population. The reader can compare it with the first population to see the differences.)
下一步是选择具有较大白点的标本.下图显示了所选标本.读者也可以将此选择与前一个选择进行比较.(Next step is selection of specimens with the bigger white spots. The picture below shows the selected specimens. The reader can also compare this selection with the previous one.)
并复制它们以获取下一个种群,如下图所示.(And reproduce them to get the next population, that is shown in the picture below.)
选择"更好"的标本,再将其复制到新的种群中,并一次又一次地重复此过程,将导致获得"更好"和"更好"的标本,直到出现完全白色(“最佳”)的标本.下面的图片显示了进度.(Selection of “better” specimens, reproduction of them to new population and repeat this process again and again will lead to getting “better” and “better” specimens till fully white (“the best”) ones appear. Pictures below show the progress.)
选择3.(Selection 3.)
人口,烧到选择3.(Population, burn to the selection 3.)
选择4.(Selection 4.)
人口,烧到选择4.(Population, burn to the selection 4.)
选择5.(Selection 5.)
人口,烧到选择5.(Population, burn to the selection 5.)
对于这个种群,最后出现了一些完全白色的标本.问题已经解决了.但是,如果尝试继续该过程,则会出现"白人"人群.但是由于突变,某些物种会出现灰斑.尽管该过程的继续在生物学和农业中可能有用,但是一旦找到解决方案,许多实用的遗传算法就会停止.只有少量的特定情况需要遗传算法才能继续(例如,模拟连续过程的AI解决方案).(For this population, some fully white specimens appear at last. The problem is solved. But if try to continue the process, “white” population will appear. But some species will have gray spots because of the mutation. Although continuation of the process can be useful in biology and agriculture, many practical Genetic Algorithms stop as soon as the solution is found. Only small amount of specific cases require Genetic Algorithms to continue (for example, AI solutions simulating continues processes).)
“白色"选择.(“White” selection.)
“白人"人口.(“White” population.)
本章摘要(Summary for the Chapter)
本章的摘要如下:(The summary for the chapter can be as follows:)
- 术语"标本"是指一个实例/项目.(Term “specimen” means one instance/item.)
- 术语"种群"是指通常同代的标本包.(Term “population” means pack of specimens generally of the same generation.)
- 术语"选择"是指根据将来复制所需的标准从种群中选择的一组标本.(Term “selection” means set of specimens, selected from the population according to the desired criteria for future reproduction.)
- 术语"繁殖"是指从上次选择中获得新的种群(新生代),以增加其标本的数量,并从其父母那里获得新的标本.(Term “reproduction” means getting new population (new generation) from last selection to increase number of specimens with creating new specimens, combined from their parents.)
- 术语"基因"是指负责形成其所有者品质的标本的内部结构.(Term “genes” means internal structures of specimens which are responsible to form the qualities of their owners.)
- 术语"突变"是指样品质量的偶然变化.换句话说,突变是基因的偶然变化.(Term “mutation” means casual changes in qualities of the specimens. In other words, mutation is casual changes in genes.)
- 继续进行选择,通过偶然的变异进行繁殖,可以得到具有所需质量的标本.(Continues Selection, Reproduction with casual Mutations lead to getting specimens with the desired qualities.)
算法的实现(Implementation of the Algorithm)
在实施遗传算法之前,清晰的任务说明至关重要.完全解决问题后,必须构建模型.该模型必须反映用于计算的生物过程.该模型需要制定以下内容:(Clear task statement is essential before implementation of the Genetic Algorithm. After the problem is completely clear, the model must be build. The model must reflect the biological process adopted to computation. The model requires formulating the following:)
- 什么是标本(What specimen is)
- 什么是基因(What genes are)
- 如何复制标本来建立种群(How specimens are reproduced to build the population)
- 如何实现突变(How mutation can be implemented)
- 人口多大(What size the population is)
- 选择的尺寸是多少(What size the selection is)
- 如何定量评估样品对溶液的亲和力(How the specimen can be quantitative evaluated for affinity to the solution)
- 什么时候可以考虑将标本作为解决方案(When the specimen can be considered as the solution) 对于简单的问题,可以将模型直接编码到计算机程序中.复杂的问题可能需要数学家使用特殊的软件工具进行建模,分析和设计.考虑示例很简单,读者可以在文本文件和源文件中找到模型的元素.(For simple problems, the model can be coded directly into computer program. Complex problems might require mathematician modeling, analyses and design with special software tools. Considering example is simple and the reader can find elements of the model in the text and source files.)
任务说明(Task Statement)
让我们考虑以下等式:(Let’s consider the following equation:)
19.39281272 * X(19.39281272 * X)5(5)+ 7.82018991 * X(+ 7.82018991 * X)4(4)+ 35.12849546 * X(+ 35.12849546 * X)3(3)-28.09127103 * X(- 28.09127103 * X)2(2)+ 3.30129489 * X =20351.07006276(+ 3.30129489 * X = 20351.07006276)
这是一个五阶方程,很难通过简单的数学方法求解.这是一个开始研究遗传算法的好例子,因为它易于理解,建模和编程.(This is a fifth degree equation that is hard to solve by simple mathematical methods. It is a good example to start studying Genetic Algorithms because it is simple to understand, model, and program.)
实作(Implementation)
遗传算法是使用面向对象编程实现的.尽管使用了三种编程语言,但主要类,属性和方法却非常相似.如下所述,对源代码的描述使您可以详细了解模型(可以通过本文顶部的链接下载源代码).(Genetic Algorithm is implemented using Object Oriented Programming. Although three programming languages were used, main classes, properties and methods are quite similar. Description of the source code, that is stated below allows to understand the model in detail (source codes can be downloaded by the links at the top of the article).)
类标本(Class Specimen)
类标本表示方程的一个实例.所需的方程式可以在以下视图中表示:(Class Specimen represents an instance of the equation. The required equation can be represented in the following view:)
F
=19.39281272 (= 19.39281272 **) X
5(5)+ 7.82018991 (+ 7.82018991 **) X
4(4)+ 35.12849546 (+ 35.12849546 **) X
3(3)-28.09127103 (- 28.09127103 **) X
2(2)+ 3.30129489 (+ 3.30129489 **) X
-20351.07006276(- 20351.07006276)
在这种情况下,方程式被指定为距离为(In this case, the equation is designated to be a specimen where distance of) F
零是(to zero is the affinity of) X
解决方案.因为(to the solution. Because) X
是一个变量,它被选为基因.(is a variable, it is selected to be a gene.)
该基因的初始值设置为10(请参阅源代码),因为将10乘以5的值是100000,该范围接近20351.07006276.这个基因的值并不重要-它只影响迭代次数和计算时间(甚至可以从黑狗身上得到白狗).对于当前示例,可以将其设置为任何值,而不是(Initial value for the gene is set to 10 (see source codes), because the value 10 powered to 5 is 100000 that is close to 20351.07006276 by the range. This value for the gene is not important - it influences only number of iterations and computation time (white dogs can be got even from flock of black dogs). For the current example, it can be set to any value instead of) 0
(当前的变异函数很简单,不能变异零个基因).读者可以将基因设置为不同的值,运行示例,并观察算法的工作原理.((current Mutation function is simple and cannot mutate zero genes). The reader can set gene to different values, run the example, and observe how the algorithm works.)
类(Class) Specimen
包含方法(contains method) CalculateAffinity()
实现当前基因值的方程式的计算.(that implements calculation of the equation for current gene value.) CalculateAffinity()
将计算值设置为成员(sets calculated value to the member) Affinity
用于分类中的人口(that is used for sorting the population in Class) SpecimenWorkshop
供将来选择.计算(for future selection. Calculation of) Affinity
排序之前会大大减少计算时间.(before sorting significantly reduces calculation time.)
C ++版本的Class(C++ version of Class) Specimen
包含方法(contains method) Clone()
这使内存管理代码更易读. C#和Java具有垃圾回收器,因此在我们的简单情况下,无需关心内存管理(某些内存管理技术甚至可以为C#或Java改善多线程高负载解决方案中的性能).(that makes the memory management code better readable. C# and Java have the Garbage Collector that eliminates the need to care about the memory management in our simple case (some memory management techniques can improve performance in multithreading high-load solutions even for C# or Java).)
类标本车间(Class SpecimenWorkshop)
类(Class) SpecimenWorkshop
设计用于按标本,标本的数量和选择进行操作.标本的繁殖和变异是随机过程.因此,该类的C#和Java版本包含随机数生成器. C ++版本的类使用函数(is designed to manipulate by the specimens, their population, and selection. Reproduction and mutation of specimens are random processes. Thus, C# and Java versions of the class contain the random number generator. C++ version of the class uses function) rand()
代替.(instead.) PopulationSize
和(and) SelectionSize
代表人口规模和相应的选择.(represent sizes of population and selection accordingly.) MaxMutationPercent
是基因改变的程度.可以将其设置为任何值.(is degree of gene change. It can be set to any value.) MutationLikelyhoodPercent
分配的突变可能性,使仅一部分样本发生了突变,而其他部分则保持完整.(assigned likelihood of mutations that allows to have mutated only part of specimens while other part is kept intact.) Epsilon
当亲和力与目标值(表示找到解决方案的值)进行比较时,用于设置准确性.遗传算法具有巨大的计算量.通过减少Epsilon可以设置的准确性提高会显着增加计算时间.读者可以更改该值并观察示例的工作方式.(is used to set accuracy when affinity compares with the target value (value that meaning finding the solution). Genetic algorithm has huge volume of computations. Increasing of accuracy that can be set by reducing the Epsilon can significantly increase computational time. The reader can change the value and observe how the example works.)
该类实现两种方法(The Class implements two methods) GeneratePopulation
.一种方法建立初始种群.初始种群中所有标本的突变都会产生差异最大的标本,从而增加了获得接近溶液的标本的机会.否则,种群中将包含类似的标本,这些标本对将来的计算毫无用处(从所有标本都带有白点的种群中选择狗要好于大多数都没有白点的种群).(. One method builds initial population. Mutation for all specimens for initial population produces the most-different specimens that increase the chance to get specimens which are close to the solution. Otherwise, the population will contain similar specimens that are useless for future calculations (selection of dogs from the population where all the specimens have white spots is better than from the population where majority of them will have no white spots).)
第二种方法(The second method) GeneratePopulation
根据从选择中随机抽取的对的繁殖,产生新的种群.此示例中使用的复制算法很简单,但是效果很好.它随机选择两个父母,并为他们创建一个孩子.另一种再现策略可以改进算法.有许多不同的策略可以使用.第一个(最好的)标本的繁殖与选择中的其他标本成对繁殖,儿童的繁殖可以是也可以使用的其他策略的例子.从新种群中选择样本或将其删除也是两种不同的策略.熟练的读者可以测试不同的策略.(produces new population on the base of reproduction of pairs taken randomly from the selection. Reproduction algorithm used in this example is simple but works fine. It selects two parents randomly and creates a child for them. Another reproduction strategy could improve the algorithm. There are lots of different strategies that can be used. Reproduction of the first (the best) specimen in pairs with other ones in the selection, re-reproduction of the children can be examples of other strategies that can also be used. Keeping the specimens from the selection in new population or removing them are also two different strategies. Skilled reader can test different strategies.)
方法(Method) ReproduceNew
为两个父母创建了一个新的"孩子"标本.它将孩子的基因设置为父母双方基因的平均值.创建后,该基因根据的值突变(或不突变)(creates a new “child” specimen for two parents. It sets the child’s gene to average of genes of both its parents. After creating, the gene mutates (or not) according to the values of) MutationLikelyhoodPercent
和(and) MaxMutationPercent
.(.)
方法(Method) Select
通过执行两个主要操作来实现.首先,该方法按照数组包含开始时的最佳样本和末尾的最差样本的方式对总体进行排序.在第二步中,最好的样本将被复制以供将来计算.(is implemented by performing two main actions. First of all, the method sorts the population in way the array contains the best specimens at the beginning and the worst specimens at the end. At the second step, the best specimens are being copied to selection for future calculations.)
类求解器(Class Solver)
类(Class) Solver
代表最高抽象级别的遗传算法.方法(represents the Genetic Algorithm at the highest abstraction level. Method) Initialize()
通过设置选项并生成初始填充来初始化算法.方法(initializes the algorithm by setting up options and generating initial population. Method) Run()
运行计算循环,直到找到解决方案.计算循环包括两个主要步骤-从当前种群中选择最佳样本,并通过复制选定样本来更新当前种群.如果选择的最佳样本的亲和力足够接近零(对于给定的示例),则循环停止.该标本的基因包含方程的解. C ++版本的Class还包含用于内存管理(删除旧对象)的代码.(runs the calculation loop until the solution is found. Calculation loop consists of two main steps - selection of the best specimens from the current population and renew the current population by reproduction of the selected specimens. The loop stops if affinity of the best specimen from the selection is close enough to the zero (for the given example). Gene of this specimen contains the solution for the equation. C++ version of the Class contains also code for memory management (deletion of old objects).)
方法主要(Method Main)
方法(Method) Main
很简单它只包含类方法的调用(is quite simple. It just contains invocation of methods of class) Solver
和命令在按下后关闭控制台窗口(and commands to close the console window after pressing)输入(Enter)键.(key.)
输出量(Output)
遗传算法包含许多随机运算.因此,每次运行的输出将有所不同.运行之一的输出如下图所示:(Genetic Algorithm contains many random operations. Because of this fact, the output will be different for each run. Output of one of the runs looks like the picture below:)
可能的缺点(Possible Drawbacks)
遗传算法包含模糊和随机计算.尽管它可以解决非常困难的问题,但它可能会不稳定并陷入无限循环.输出一章中的图片显示了迭代[1\2\3],[7\8],[9\10],[13\14],[17\18],[19\20]和[25, 26]包含相同的最佳解决方案(看起来像副本).这一事实证明,在某些情况下,繁殖和突变并没有产生比现有样本更好的标本,而且该过程也没有接近解决方案.换句话说,在27个繁殖种群中,有8个没有用,并且浪费了处理这些种群的计算时间.(Genetic Algorithm contains fuzzy and random calculations. Although it can solve very difficult problems, it can be unstable and falling down into infinite loop. Picture presented in chapter Output shows that iterations [1, 2, 3], [7, 8], [9, 10], [13, 14], [17, 18], [19, 20], and [25, 26] contain the same best solution (look like copies). This fact is evidence that for some cases, the reproduction and mutation did not produce any specimen that was better than the existing and did not the process go closer to the solution. In other words, 8 of 27 of reproduced populations were not useful and the calculation time for processing of these populations was lost.)
通过更改方法中的算法选项(By change of the algorithm options that are located in method) Initialize()
阶级(of Class) Solver
,读者可以研究示例的不同工作方式.减少(, the reader can study different modes of working of the example. Reducing of) PopulationSize
和(and) SelectionSize
例如,以及减少(for example, as well as reducing of) MaxMutationPercent
和(and) MutationLikelyhoodPercent
可以将算法陷入无限循环.(can put the algorithm into an infinite loop.)
幸运的是,可以通过尝试运行示例并观察其工作方式来设置选项的值.其他实际问题(其他方程式等)可能更容易或更难解决,因此需要选择其他选项.还有一些无法解决的问题.遗传算法非常灵活,可以进行调整以更好地解决特定类型的问题(请参阅我的另一篇文章”(Fortunately, the values for the options can be set by trying running the example and observe how it works. Other real problems (other equations and so on) can be easier or harder to solve and require selection of other options accordingly. There are also problems impossible to solve. Genetic Algorithms are very flexible to be adapted for better solving specific kind of problems (see my other article “) 展望未来-Bots生成的源代码(A Look into the Future - Source Code Generation by the Bots) “).(").)
可以使用数学方法来评估特定问题的可解决性,并针对该问题调整算法.但是,这超出了本文的范围.(Mathematic methods can be used to evaluate solveability of the specific problem and adapt the algorithm for it. But this is outside the scope ot this article.)
家庭作业(Homework)
本章的名称可能会引起微笑.我刚刚使用了教育领域的术语.但是本章可以提醒您,读者不仅可以阅读本文并运行示例,还可以想到"兔子洞有多深”,并自己尝试做一些额外的研究.(The name of this chapter may evoke a smile. I have just used the term from the education sphere. But this chapter can be considered as a reminder that the reader can not only read the text and run the examples, but also think of “How deep the rabbit hole is” and try to do some extra studies by himself.)
首先,读者可以查看并找到源代码与生物学过程之间的平等关系.作者描述了主要概念,但是生物学过程和遗传算法在发现未提及的有趣事物方面千差万别.(First of all, the reader can review and find equalities between the source code and the biological processes. The author described the main conceptions, but Biology Processes and Genetic Algorithms are quite varied and deep for finding something interesting that was not mentioned.)
第二,读者可以使用不同的选项和不同的方程式运行源.这样的锻炼有助于他获得实践经验.(As the second, the reader can run the sources with different options and for different equations. Such exercise helps him to get the practical experience.)
那些编程熟练的人可以尝试其他繁殖和变异策略.他们还可以尝试用一个以上的变量来求解方程组,换句话说,用一个以上的基因求解(示例使用的基因阵列提供了一定的可扩展性).(Those who are skilled in programming can try other strategies of reproduction and mutations. They can also try to solve systems of equations with more than one variable, in other words, with more than one gene (the examples uses array of genes providing some scalability).)
我的文章”(My article “) 展望未来-Bots生成的源代码(A Look into the Future - Source Code Generation by the Bots) “(在新窗口中打开)描述了根据要求使用遗传算法自动生成新函数的方法.尽管文章看起来相当先进,但它显示了遗传算法的一些有趣功能.(” (opens in new window) describes the use of Genetic Algorithm for automatic generating of new function according to the requirements. Although the article seems quite advanced, it shows some interesting abilities of the Genetic Algorithms.)
历史(History)
- 15(15)日(th)2018年12月:初始版本(December, 2018: Initial release)
许可
本文以及所有相关的源代码和文件均已获得The Code Project Open License (CPOL)的许可。
C# XML Java C++ .NET Java SE VS2015 Dev genetic machine-learning 新闻 翻译