What is deep learning?

Deep learning is a type of machine learning & artificial intelligence (AI) that imitates the way humans gain certain types of knowledge. Deep learning is an important element of data science, which includes statistics & predictive modeling. It is extremely beneficial lớn data scientists who are tasked with collecting, analyzing và interpreting large amounts of data; deep learning makes this process faster & easier.Bạn đang xem: giải mã hình ảnh bằng quy mô học sâu (Image decoding using deep learning models)

At its simplest, deep learning can be thought of as a way lớn automate predictive analytics. While traditional machine learning algorithms are linear, deep learning algorithms are stacked in a hierarchy of increasing complexity và abstraction.

Bạn đang xem: Giải mã hình ảnh bằng mô hình mạng học sâu sử dụng học tăng cường (Image decoding using deep learning models with reinforcement learning)

To understand deep learning, imagine a toddler whose first word is dog. The toddler learns what a dog is -- & is not -- by pointing khổng lồ objects & saying the word dog. The parent says, "Yes, that is a dog," or, "No, that is not a dog." As the toddler continues lớn point to objects, he becomes more aware of the features that all dogs possess. What the toddler does, without knowing it, is clarify a complex abstraction -- the concept of dog -- by building a hierarchy in which each cấp độ of abstraction is created with knowledge that was gained from the preceding layer of the hierarchy.

How deep learning works

Computer programs that use deep learning go through much the same process as the toddler learning to identify the dog. Each algorithm in the hierarchy applies a nonlinear transformation lớn its input & uses what it learns to create a statistical model as output. Iterations continue until the output has reached an acceptable màn chơi of accuracy. The number of processing layers through which data must pass is what inspired the label deep.

In traditional machine learning, the learning process is supervised, and the programmer has khổng lồ be extremely specific when telling the computer what types of things it should be looking for to decide if an image contains a dog or does not contain a dog. This is a laborious process called feature extraction, & the computer"s success rate depends entirely upon the programmer"s ability to accurately define a feature mix for dog. The advantage of deep learning is the program builds the feature phối by itself without supervision. Unsupervised learning is not only faster, but it is usually more accurate.

Initially, the computer program might be provided with training data -- a set of images for which a human has labeled each image dog or not dog with metatags. The program uses the information it receives from the training data to lớn create a feature phối for dog and build a predictive model. In this case, the mã sản phẩm the computer first creates might predict that anything in an image that has four legs & a tail should be labeled dog. Of course, the program is not aware of the labels four legs or tail. It will simply look for patterns of pixels in the digital data. With each iteration, the predictive mã sản phẩm becomes more complex & more accurate.

Unlike the toddler, who will take weeks or even months lớn understand the concept of dog, a computer program that uses deep learning algorithms can be shown a training set and sort through millions of images, accurately identifying which images have dogs in them within a few minutes.

To achieve an acceptable level of accuracy, deep learning programs require access to lớn immense amounts of training data và processing power, neither of which were easily available to lớn programmers until the era of big data & cloud computing. Because deep learning programming can create complex statistical models directly from its own iterative output, it is able to create accurate predictive models from large quantities of unlabeled, unstructured data. This is important as the internet of things (Io
T) continues to become more pervasive because most of the data humans và machines create is unstructured và is not labeled.

Deep learning methods

Various methods can be used to lớn create strong deep learning models. These techniques include learning rate decay, transfer learning, training from scratch and dropout.

Learning rate decay. The learning rate is a hyperparameter -- a factor that defines the system or mix conditions for its operation prior lớn the learning process -- that controls how much change the model experiences in response khổng lồ the estimated error every time the mã sản phẩm weights are altered. Learning rates that are too high may result in unstable training processes or the learning of a suboptimal phối of weights. Learning rates that are too small may produce a lengthy training process that has the potential to get stuck.

The learning rate decay method -- also called learning rate annealing or adaptive learning rates -- is the process of adapting the learning rate khổng lồ increase performance và reduce training time. The easiest and most common adaptations of learning rate during training include techniques to reduce the learning rate over time.

Transfer learning. This process involves perfecting a previously trained model; it requires an interface to the internals of a preexisting network. First, users feed the existing network new data containing previously unknown classifications. Once adjustments are made to lớn the network, new tasks can be performed with more specific categorizing abilities. This method has the advantage of requiring much less data than others, thus reducing computation time lớn minutes or hours.

Training from scratch. This method requires a developer to collect a large labeled data set và configure a network architecture that can learn the features & model. This technique is especially useful for new applications, as well as applications with a large number of đầu ra categories. However, overall, it is a less common approach, as it requires inordinate amounts of data, causing training khổng lồ take days or weeks.

Dropout. This method attempts to solve the problem of overfitting in networks with large amounts of parameters by randomly dropping units và their connections from the neural network during training. It has been proven that the dropout method can improve the performance of neural networks on supervised learning tasks in areas such as speech recognition, document classification và computational biology.

Deep learning neural networks?

A type of advanced machine learning algorithm, known as an artificial neural network, underpins most deep learning models. As a result, deep learning may sometimes be referred to as deep neural learning or deep neural networking.

Neural networks come in several different forms, including recurrent neural networks, convolutional neural networks, artificial neural networks and feedforward neural networks, and each has benefits for specific use cases. However, they all function in somewhat similar ways -- by feeding data in và letting the model figure out for itself whether it has made the right interpretation or decision about a given data element.

Neural networks involve a trial-and-error process, so they need massive amounts of data on which khổng lồ train. It"s no coincidence neural networks became popular only after most enterprises embraced big data analytics và accumulated large stores of data. Because the model"s first few iterations involve somewhat educated guesses on the contents of an image or parts of speech, the data used during the training stage must be labeled so the model can see if its guess was accurate. This means, though many enterprises that use big data have large amounts of data, unstructured data is less helpful. Unstructured data can only be analyzed by a deep learning model once it has been trained và reaches an acceptable cấp độ of accuracy, but deep learning models can"t train on unstructured data.

Deep learning examples

Because deep learning models process information in ways similar lớn the human brain, they can be applied khổng lồ many tasks people do. Deep learning is currently used in most common image recognition tools, natural language processing (NLP) và speech recognition software. These tools are starting to lớn appear in applications as diverse as self-driving cars và language translation services.

Use cases today for deep learning include all types of big data analytics applications, especially those focused on NLP, language translation, medical diagnosis, stock market trading signals, network security và image recognition.

Specific fields in which deep learning is currently being used include the following:

Customer experience (CX). Deep learning models are already being used for chatbots. And, as it continues to lớn mature, deep learning is expected khổng lồ be implemented in various businesses to improve CX & increase customer satisfaction. Text generation. Machines are being taught the grammar và style of a piece of text and are then using this mã sản phẩm to automatically create a completely new text matching the proper spelling, grammar and style of the original text. Aerospace & military. Deep learning is being used lớn detect objects from satellites that identify areas of interest, as well as safe or unsafe zones for troops. Industrial automation. Deep learning is improving worker safety in environments like factories và warehouses by providing services that automatically detect when a worker or object is getting too close lớn a machine. Adding color. màu sắc can be added to black-and-white photos and videos using deep learning models. In the past, this was an extremely time-consuming, manual process. Medical research. Cancer researchers have started implementing deep learning into their practice as a way to lớn automatically detect cancer cells. Computer vision. Deep learning has greatly enhanced computer vision, providing computers with extreme accuracy for object detection & image classification, restoration & segmentation.

Limitations và challenges

The biggest limitation of deep learning models is they learn through observations. This means they only know what was in the data on which they trained. If a user has a small amount of data or it comes from one specific source that is not necessarily representative of the broader functional area, the models will not learn in a way that is generalizable.

The issue of biases is also a major problem for deep learning models. If a mã sản phẩm trains on data that contains biases, the mã sản phẩm will reproduce those biases in its predictions. This has been a vexing problem for deep learning programmers because models learn to lớn differentiate based on subtle variations in data elements. Often, the factors it determines are important are not made explicitly clear khổng lồ the programmer. This means, for example, a facial recognition model might make determinations about people"s characteristics based on things lượt thích race or gender without the programmer being aware.

The learning rate can also become a major challenge to lớn deep learning models. If the rate is too high, then the model will converge too quickly, producing a less-than-optimal solution. If the rate is too low, then the process may get stuck, & it will be even harder khổng lồ reach a solution.

The hardware requirements for deep learning models can also create limitations. Multicore high-performing graphics processing units (GPUs) and other similar processing units are required khổng lồ ensure improved efficiency và decreased time consumption. However, these units are expensive and use large amounts of energy. Other hardware requirements include random access memory & a hard disk drive (HDD) or RAM-based solid-state drive (SSD).

Other limitations & challenges include the following:

Deep learning requires large amounts of data. Furthermore, the more powerful và accurate models will need more parameters, which, in turn, require more data. Once trained, deep learning models become inflexible và cannot handle multitasking. They can deliver efficient & accurate solutions but only khổng lồ one specific problem. Even solving a similar problem would require retraining the system. Any application that requires reasoning -- such as programming or applying the scientific method -- long-term planning & algorithmlike data manipulation is completely beyond what current deep learning techniques can do, even with large data.

Deep learning vs. Machine learning

Deep learning is a subset of machine learning that differentiates itself through the way it solves problems. Machine learning requires a tên miền expert to lớn identify most applied features. On the other hand, deep learning understands features incrementally, thus eliminating the need for domain expertise. This makes deep learning algorithms take much longer lớn train than machine learning algorithms, which only need a few seconds to a few hours. However, the reverse is true during testing. Deep learning algorithms take much less time to run tests than machine learning algorithms, whose test time increases along with the form size of the data.

Furthermore, machine learning does not require the same costly, high-end machines and high-performing GPUs that deep learning does.

In the end, many data scientists choose traditional machine learning over deep learning due khổng lồ its superior interpretability, or the ability to make sense of the solutions. Machine learning algorithms are also preferred when the data is small.

Instances where deep learning becomes preferable include situations where there is a large amount of data, a lack of tên miền understanding for feature introspection, or complex problems, such as speech recognition và NLP.

Lời mở đầu

Xin chào những bạn. Kiên cố hẳn chúng ta đã thân thuộc gì với mọi thuật toán Reinforcement Learning sử dụng Deep Learning rồi buộc phải không. Có khi nào bạn đặt ra câu hỏi rằng vắt vì bọn họ cố gắng đi tìm kiếm những kiến trúc mạng đẩy đà rồi cố gắng tối ưu nó thì họ sẽ thử 1 trong những cách thức khác không đề xuất dùng mang đến mạng nơ ron chưa? nếu như khách hàng cũng đang xuất hiện những băn khoăn như vậy thì bài viết này sẽ giành cho bạn.

Trong quá trình tiến hóa tự nhiên, các điểm sáng sinh học thay đổi và các điểm lưu ý mới được tạo thành chỉ dễ dàng là vì chưng một số điểm lưu ý mang lại lợi thế tồn tại và sinh sản. Kết quả là phần đa sinh đồ đó có thể tạo ra nhiều bản sao về di truyền học của bọn chúng hơn trong số những thế hệ tiếp theo. Năng lực tồn trên của một gen phụ thuộc vào hoàn toàn vào môi trường, môi trường này thường không thể đoán trước và thường xuyên thay đổi. Vào trường hợp vận dụng trong kỹ thuật máy tính, quy trình tiến hóa mô phỏng dễ dàng hơn nhiều, vì họ thường ý muốn tối đa hóa hoặc giảm thiểu một số duy nhất, chẳng hạn như giá trị của hàm mất đuối khi giảng dạy một mạng nơ-ron.


Đối với các thuật toán dựa trên những mạng nơ ron, các agent của chúng ta đã xúc tiến với môi trường, thu thập kinh nghiệm và tiếp nối học hỏi tự những kinh nghiệm đó. Họ lặp đi lặp lại các bước tương tự cho mỗi epoch cho tới khi kết thúc quá trình học.

Tùy ở trong vào môi trường xung quanh và độ phức tạp của mạng, việc tạo một agent với các siêu tham số phù hợp có thể rất là khó khăn. Rộng nữa, để rất có thể sử dụng được gradient descent cùng backpropagation, họ cần một mô hình khả vi. Chắc chắn rằng có những mô hình thú vị và có lợi mà bạn có thể xây dựng tuy thế lại ko thể đào tạo và huấn luyện được với gradient descent bởi nó ko khả vi.

Điều này dẫn đến một phía mới bạn có thể tiếp cận đó chính là thuật toán tiến hoá

Quá trình học dựa vào thuật toán tiến hoá

Vậy cố gắng vì tạo thành một agent và nâng cấp nó, cầm vào đó bạn cũng có thể học hỏi từ bỏ Charles Darwin và sử dụng quy trình tiến hóa bằng chọn lọc tự nhiên. Chúng ta cũng có thể sinh ra các agent khác biệt với những bộ tham số (weights) khác nhau, quan gần kề tác nhân như thế nào làm rất tốt và “lai tạo” tác nhân rất tốt để nhỏ cháu có thể thừa tận hưởng những điểm sáng mong ý muốn của bố mẹ chúng — giống như trong chọn lọc tự nhiên. Bạn có thể mô phỏng sự tiến hóa sinh học tập bằng các thuật toán. Bọn họ sẽ không cần phải vật lộn để điều chỉnh những siêu tham số với đợi quy mô được đào tạo qua rất nhiều epoch để xem liệu agent tất cả đang học tập “chính xác” tuyệt không. Cố gắng vào đó, bọn họ chỉ nên chọn các agent đã vận động tốt hơn. Họ có thẻ tế bào tả hoạt động vui chơi của quá trình này vào hình sau


Loại thuật toán này không yêu cầu chúng ta huấn luyện một agent riêng lẻ. Nó không nhờ vào gradient với được hotline một bí quyết khác là gradient-free algorithm.

Học tăng cường với thuật toán tiến hoá

Trong phần này chúng ta sẽ nói về phong thái làm núm nào để tận dụng chiến lược tiến hoá, và chúng ta sẽ trình bày ngắn gọn phương pháp để định nghĩa agent xuất sắc nhất. Tiếp theo chúng ta sẽ nói đến cách thức tổ hợp để có mặt một agent mới từ một agent sẵn có. Sự phát triển này là một quy trình nhiều cụ hệ, bởi vậy bọn họ sẽ thảo luận về điều ấy và cầm tắt lại tổng thể các quá trình huấn luyện.

Lý thuyết tiến hoá vào sinh học

Nếu bạn còn nhớ các kiến thức trong môn sinh học từ hồi học phổ thông, thì chọn lọc tự nhiên sẽ lựa chọn ra những cá thể “phù phù hợp nhất” từ bỏ mỗi cố gắng hệ. Trong sinh học, điều này thay mặt cho những thành viên có tỉ lệ sinh tồn thành công lớn nhất và cho nên vì vậy đã truyền thông media tin di truyền của họ cho những thế hệ tiếp theo. Những con chim có làm ra mỏ thích hợp hơn trong việc lấy hạt từ cây sẽ có rất nhiều thức ăn uống hơn và bởi vì đó có rất nhiều khả năng sinh tồn hơn để truyền ren chứa làm ra mỏ đó cho con cháu của chúng. Tuy nhiên hãy ghi nhớ rằng, có mang "phù hợp nhất" ở chỗ này phải liên quan đến môi trường. Một con gấu Bắc rất thích nghi giỏi với những chỏm băng nghỉ ngơi vùng cực nhưng sẽ tương đối không thích hợp trong những khu rừng nhiệt đới Amazon xuất xắc sa mạc Sahara.

Trong sinh học, mỗi đột nhiên biến biến đổi rất bé dại các điểm sáng của sinh vật, vì vậy khó hoàn toàn có thể phân biệt thay hệ này với rứa hệ khác. Mặc dù nhiên, việc chất nhận được những bất chợt biến và trở thành thể này tích lũy qua không ít thế hệ sẽ có thể chấp nhận được những đổi khác có thể phân biệt được. Trong quá trình tiến hóa của mỏ chim, ví dụ, một quần thể thuở đầu các loài chim sẽ sở hữu hình dạng mỏ tương tự nhau. Tuy nhiên theo thời gian, những đột biến tự dưng đã được đưa vào quần thể. Số đông các bất chợt biến này có thể không ảnh hưởng đến chim hoặc thậm chí có ảnh hưởng tác động có hại, nhưng với một quần thể đủ phệ và đủ vậy hệ, những đột biến tự dưng xảy ra ảnh hưởng có lợi đến mẫu thiết kế mỏ. Những bé chim tất cả chiếc mỏ tương xứng hơn sẽ có ích thế kiếm thức ăn hơn những con chim khác và vì vậy chúng có công dụng di truyền gen cao hơn. Vì đó, cố gắng hệ tiếp theo sẽ có được tần số tăng lên của gen mỏ có hình dáng thuận lợi.

Lý thuyết tiến hoá trong công nghệ máy tính

Trong học bức tốc sử dụng thuật toán tiến hóa, bọn họ đang chọn các đặc điểm mang lại mang lại agent của họ phần thưởng tối đa trong một môi trường xung quanh nhất định cùng theo đặc điểm. Các điểm sáng ở đây có nghĩa là các thông số mô hình (ví dụ: trọng số của mạng nơ-ron) hoặc toàn bộ cấu tạo mô hình. Thể trạng của một agent vào RL rất có thể được khẳng định bằng món quà dự kiến cơ mà agent sẽ nhận thấy nếu vận động trong môi trường.

Mục tiêu vào học tăng tốc tiến hóa hoàn toàn hệt như trong huấn luyện dựa bên trên backpropagation và đào tạo và huấn luyện dựa trên gradient. Sự biệt lập duy độc nhất vô nhị là bọn họ sử dụng quá trình tiến hóa này, thường xuyên được gọi là thuật toán di truyền, để buổi tối ưu hóa những tham số của một mô hình chẳng hạn như mạng nơ-ron.


Trong giải pháp tiếp cận thuật toán tiến hóa để học tăng cường, những agent tuyên chiến đối đầu trong một môi trường và các agent phù hợp hơn (tạo ra đa phần thưởng hơn) được ưu tiên sao chép để tạo ra thế hệ tương lai. Sau rất nhiều lần lặp lại các bước này, chỉ với lại hầu hết agent tương xứng nhất.

Các bước triển khai của lời giải di truyền trong RF

Chúng ta hãy xem xét quá trình của thuật toán dt một cách cụ thể hơn. đưa sử bọn họ có một mạng nơ-ron mà họ muốn áp dụng làm tác nhân để đùa Gridworld và họ muốn đào tạo và giảng dạy nó bằng phương pháp sử dụng một thuật toán di truyền. Hãy ghi nhớ rằng, huấn luyện và đào tạo mạng nơ-ron chỉ có nghĩa là update lặp đi lặp lại các tham số của chính nó để hiệu suất của nó được cải thiện. Cũng nhớ lại rằng cùng với một kiến trúc mạng nơ-ron nắm định, những tham số trọn vẹn xác định hành động của nó, vày vậy để sao chép một mạng nơ-ron, bọn họ chỉ cần sao chép các thông số của nó.

Sau đó là các có mang để hoàn toàn có thể huấn luyện được một mạng nơ ron như vậy:

Khởi tạo nên quần thể: tạo nên một tập hợp ban đầu của các vectơ trọng số ngẫu nhiên. Mỗi voector này được đại diện thay mặt cho một cá thể (agent), tập hợp ban sơ này được gọi là quần thể (population). Giả sử quần thể ban sơ này bao gồm 100 cá thể.Đưa quần thể vào môi trường: chuyển quần thể này vào cùng chơi game Gridworld của họ sau đó tiến hành lưu lại reward của từng cá thể. Mỗi thành viên được hướng đẫn một điểm chất lượng - fitness score dựa trên phần thưởng mà bọn chúng kiếm được. Vì quần thể ban sơ là ngẫu nhiên, toàn bộ chúng có khả năng sẽ hoạt động rất kém, nhưng lại sẽ có một trong những ít, chỉ vày ngẫu nhiên, sẽ vận động tốt rộng những thành viên khác.Lựa chọn cá thể để lai tạo: tiến hành lấy mẫu đột nhiên một cặp cá thể (“bố mẹ”) tự quần thể, được xem trọng số theo điểm quality tương đối của chúng (những thành viên có chất lượng cao hơn có xác suất được lựa chọn cao hơn) để tạo ra “quần thể kiểu như lai tạo”.Lai chế tác sinh ra quần thể mới: những cá thể trong quần thể sinh sản tiếp đến sẽ “lai tạo” để tạo thành “thế hệ kế cận” sẽ tạo thành một quần thể mới, khá đầy đủ gồm 100 cá thể. Nếu những cá thể chỉ dễ dàng là vectơ thông số của số thực, câu hỏi lai ghép vectơ 1 với vectơ 2 bao gồm việc lấy một tập nhỏ từ vectơ 1 và kết hợp nó với cùng 1 tập phù hợp con bổ sung của vectơ 2 để tạo ra một vectơ nhỏ mới tất cả cùng kích thước. Ví dụ, trả sử bạn có vectơ 1: <1 2 3> với vectơ 2: <4 5 6>. Vectơ 1 lai ghép với vectơ 2 để tạo ra <1 5 6> và <4 2 3>. Công ty chúng tôi chỉ đơn giản là bắt cặp ngẫu nhiên những cá thể từ các quần thể tạo nên và tái tổng hợp chúng để tạo thành hai con mới cho tới khi bọn họ tạo thành một quần thể mới. Điều này tạo ra sự phong phú "di truyền" bắt đầu với phần đông cá thể vận động tốt nhất.Đột biến: tiếng đây, chúng ta có một quần thể bắt đầu với những cá thể bậc nhất từ nuốm hệ trước, thuộc với những các thành viên trong cố hệ mới. Tại thời khắc này, chúng ta sẽ lặp lại các phương án của mình và chợt biến ngẫu nhiên một số trong những trong số bọn chúng để đảm bảo rằng bọn họ đưa sự nhiều mẫu mã di truyền new vào rất nhiều thế hệ để ngăn chặn sự quy tụ sớm về mức tối ưu viên bộ. Sự đột biến chỉ đơn giản có nghĩa là thêm một chút nhiễu đột nhiên vào những vectơ tham số. Nếu đấy là các vectơ nhị phân, bỗng nhiên biến tức là lật hốt nhiên một vài ba bit; ví như không, bạn có thể thêm một số trong những nhiễu Gaussian. Xác suất đột biến rất cần được khá thấp, nếu như không họ sẽ có nguy hại phá hư các chiến thuật tốt hiện tại có.Lặp lại quy trình tiến hoá: bây chừ chúng ta bao gồm một quần thể new gồm các cá thể bị thốt nhiên biến từ nuốm hệ trước. Chúng ta lặp lại quy trình này với quần thể bắt đầu trong N số cụ hệ hoặc cho tới khi chúng ta đạt đến sự hội tụ (đó là lúc điểm chất lượng của quần thể trung bình vẫn không còn tồn tại sự nâng cấp đáng kể).


** LƯU Ý**: gồm nhiều phương pháp khác nhau để chọn “bố mẹ” cho núm hệ tiếp theo. Một cách dễ dàng là đính thêm một xác suất lựa chọn vào từng cá thể dựa trên điểm unique tương đối của bọn chúng và kế tiếp lấy mẫu từ triển lẵm này. Bằng phương pháp này, đều cá thể tương xứng nhất sẽ tiến hành chọn thường xuyên nhất, nhưng vẫn đang còn một cơ hội nhỏ tuổi là cho đầy đủ cá thể hoạt động kém được chọn. Điều này hoàn toàn có thể giúp bảo trì sự phong phú trong quần thể. Một giải pháp khác là chỉ việc xếp hạng tất cả các cá thể và lấy N thành viên hàng đầu, và áp dụng chúng nhằm lai tạo nên để tạo ra thế hệ tiếp theo. Đối với bất kỳ phương pháp làm sao thì việc ưu tiên chọn những cá thể rất tốt để thực hiện việc lai chế tác sẽ có tác dụng tốt hơn. Bao gồm một sự tấn công đổi giữa các việc lựa chọn phần nhiều ứng cử viên tốt nhất có thể và bớt sự đa dạng mẫu mã trong quần thể — vấn đề đó rất giống với sự đánh đổi giữa exploration với exploitation trong học tăng cường.

Bài toán sinh chuối tương đồng

Mô tả bài toán

Chúng ta sẽ tạo một tập hợp những chuỗi bỗng dưng và cố gắng phát triển bọn chúng thành một chuỗi phương châm do bọn họ lựa chọn, chẳng hạn như “Hello World!”. Tập hợp những chuỗi ngẫu nhiên ban đầu của họ sẽ y hệt như “g
. Chúng ta sẽ sử dụng một hàm có thể cho họ biết những chuỗi này tương tự ra làm sao với chuỗi phương châm để cung ứng cho bọn họ điểm chất lượng. Sau đó, họ sẽ lấy mẫu các cặp phụ huynh từ quần thể được tính theo fitness score kha khá của chúng, làm thế nào cho những cá thể có fitness score cao hơn có khá nhiều khả năng được lựa chọn để trở thành bố mẹ hơn (tức thành viên có fitness score cao sẽ có tỉ lệ được chọn làm parents lớn hơn các thành viên có fitness score thấp).

Tiếp theo, chúng ta sẽ lai ghép hồ hết cặp cha mẹ này (còn được gọi là lai hoặc tái tổ hợp) để tạo ra hai chuỗi con và thêm nó vào thế hệ tiếp theo. Không tính ra bạn có thể thực hiện tại đốt biến bằng cách biến đổi các cá thể bé cái bằng cách lật bỗng nhiên một vài cam kết tự vào chuỗi. Chúng ta sẽ lặp lại quy trình này và hi vọng rằng quần thể mới sẽ trở nên nhiều mẫu mã hơn với các chuỗi khôn cùng gần với mục tiêu của chúng ta; có thể ít độc nhất vô nhị một phương châm sẽ đạt được đúng mực mục tiêu của bọn họ (tại thời gian đó, họ sẽ ngừng thuật toán).

Quá trình tiến hóa này của chuỗi được trình bày trong hình dưới đây


Đây chắc rằng là một lấy ví dụ như ngớ ngẩn, nhưng đó là một trong những minh chứng đơn giản và dễ dàng nhất về thuật toán dt và các khái niệm sẽ đưa trực tiếp sang những nhiệm vụ học tăng cường của chúng ta. Hiện giờ chúng ta sẽ tiến hành đi sâu vào code ngay thôi

Code thôi nào

Định nghĩa target string

Đầu tiên bọn họ tiến hành import các thư viên cần thiết và tư tưởng target string. Ở đây chúng ta đang muốn muốn các agent sẽ sinh ra các chuối như là với "Hello World" nhất

import randomfrom matplotlib import pyplot as pltalphabet = "abcdefghijklmnopqrstuvwxyz

Định nghĩa agent

Agent của họ rất 1-1 giản. Nó sẽ bao hàm hai trực thuộc tính là string để chứa giá trị của chuỗi mà nó đang màn trình diễn và fitness nhằm biểu diễn điểm chất lượng. Điểm nầy hoàn toàn có thể đo bằng khoảng cách edit-distance tự string mà agent đang màn biểu diễn đến chuỗi target. Bọn họ sẽ tư tưởng sau

class Individual: def __init__(self, string, fitness=0): self.string = string self.fitness = fitness

Định nghĩa fitness_score

Như đang trình bày tại đoạn trên thì chúng ta cũng có thể thực hiện tại một hàm similar đơn giản dễ dàng giữa hai string để màn trình diễn fitness score của agent

from difflib import Sequence
Matcherdef similar(a, b): return Sequence
Matcher(None, a, b).ratio()

Khởi chế tạo ra quần thể

Chúng ta có thể khởi tạo nên quần thể bằng phương pháp sinh ra các agent chứa những string ngẫu nhiên. Giả sử quần thể của chúng ta có 100 agents

def spawn_population(length=26,size=100): pop = <> for i in range(size): string = "".join(random.choices(alphabet,k=length)) individual = Individual(string) pop.append(individual) return pop

Đột biến

Đây là một bước đã trình bày trong phần lý thuyết. Về cơ bản chúng ta sẽ biến đổi ngẫu nhiên một vài ba kí tự trong string nhưng mà agent đang màn biểu diễn bởi một phần trăm nào đó. Giá sử là 0.01. Tỉ lệ hốt nhiên biến này đề nghị đủ nhỏ dại để không biến thành phá vỡ tính chất tiến hoá của quần thể.

def mutate(x, mut_rate=0.01): new_x_ = <> for char in x.string: if random.random() mut_rate: new_x_.extend(random.choices(alphabet,k=1)) else: new_x_.append(char) new_x = Individual("".join(new_x_)) return new_x

Tái tổ hợp

Tái tổng hợp là trong số những phép toán quan trọng trong lời giải di truyền. Nó hỗ trợ cho qúa trình tiến hoá tạo thành được các cá thể mới. Ở đây chúng ta thực hiện vấn đề tái tổ hợp dễ dàng bằng cánh chọn 1 điểm chia thốt nhiên cross_pt sau đó hoán vị yếu tố của nhị vector nguồn vào tại địa chỉ điểm chia để tạo thành thành nhị vector mới. Tái tổ hợp là yếu ớt tố cơ bản trong quy trình lai tạo.

def recombine(p1_, p2_): #produces two children from two parents p1 = p1_.string p2 = p2_.string child1 = <> child2 = <> cross_pt = random.randint(0,len(p1)) child1.extend(p1<0:cross_pt>) child1.extend(p2) child2.extend(p2<0:cross_pt>) child2.extend(p1) c1 = Individual("".join(child1)) c2 = Individual("".join(child2)) return c1, c2

Đánh giá bán quần thể

Việc đánh giá quần thể góp cho bọn họ biết được lời giải của chúng ta đang hội tụ như vậy nào. Việc này dễ dàng là mang fitness_score trung bình của những cá thể vào quần thể

def evaluate_population(pop, target): avg_fit = 0 for i in range(len(pop)): fit = similar(pop.string, target) pop.fitness = fit avg_fit += fit avg_fit /= len(pop) return pop, avg_fit

Tạo nạm hệ tiếp theo

def next_generation(pop, size=100, length=26, mut_rate=0.01): new_pop = <> while len(new_pop) size: parents = random.choices(pop,k=2, weights=) offspring_ = recombine(parents<0>,parents<1>) offspring = , mut_rate=mut_rate), mutate(offspring_<1>, mut_rate=mut_rate)> new_pop.extend(offspring) #add offspring to next generation return new_pop
Đây là bước tạo ra thế hệ tiếp theo từ nỗ lực hệ bao gồm sẵn của chúng ta. Chúng ta có một điểm cần để ý trong việc lựa chọn parents.

parents = random.choices(pop,k=2, weights=)Chúng ta xem xét rằng sống đây bọn họ lựa chọn ngẫu nhiên gồm trọng số 2 agent để làm parents cho tiếp tục hệ tiếp theo. Nguyên nhân mình lại in đậm phần ngẫu nhiên tất cả trọng số bởi vì lẽ chúng ta sẽ lựa chọn ưu tiên những cá thể nào tất cả fitness_score cao hơn để làm bố mẹ. Dẫu vậy vẫn dành riêng một xác suất nhỏ hơn để những cá thể có finesss nhỏ hơn ở vắt hệ lúc này vẫn có tác dụng được lai ghép. Điều này giúp cho quần thể giữ lại được tính nhiều chủng loại trong hầu hết thế hệ tiếp theo.

Tiến hành đào tạo thôi

pop = spawn_population(length=len(target))num_generations = 400population_size = 5000str_len = len(target)mutation_rate = 0.001 # 0.1% mutation rate per characterpop_fit = <>pop = spawn_population(size=population_size, length=str_len) #initial populationfor gen in range(num_generations): # trainning pop, avg_fit = evaluate_population(pop, target) pop_fit.append(avg_fit) #record population average fitness new_pop = next_generation(pop, size=population_size, length=str_len, mut_rate=mutation_rate) pop = new_pop

Tiến hành vẽ biểu thứ fitness

Chúng ta hoàn toàn có thể vẽ lại biểu đồ bộc lộ sự đổi khác của fitness qua từng cụ hệ



Chúng ta hoàn toàn có thể thấy càng về phần lớn generations cuối thì điểm fitness trung bình các ít thay đổi và ở tầm mức cao. Điều này bọn chúng tỏ quần thể họ đã đựng những thành viên có fitness tốt nhất với target string

Kiểm tra kết quả

chúng ta tiến hành kiếm tra những thành viên có fitness score cao nhất

World!!"Chúng ta thấy rằng từ rất nhiều chuỗi ngâu nhiên ban sơ nhưng qua quy trình tiến hoá bằng giải mã di truyền, bạn dạng thân quần thể của bạn có thể sinh ra được các chuỗi giống hệt như chuỗi target thuở đầu mà không nhất thiết phải tối ưu đầy đủ mạng nơ ron phức tạp.

Xem thêm: Sách Cách Chinh Phục Toán Và Khoa Học ", Cách Chinh Phục Toán Và Khoa Học

Kết luận

Giải thuật di truyền là giữa những thuật toán có tư tưởng thân cận với qua trình tiến hoá nhất. Bạn có thể áp dụng linh hoạt nó trong không ít bài toán không giống nhau. Việc áp dụng nó mang lại Reinforcement Learning giúp chúng ta có thể thay thế những mạng nơ ron phức tạp. Xin chào các bạn và hẹn gặp gỡ lại trong những bài tiếp theo .