1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ ÁN Lịch sử phát triển của mạng nơron và Deeplearning

61 70 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 61
Dung lượng 1,73 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lịch sử phát triển của mạng nơron và Deeplearning 1.1.1 Giới thiệu: Ngày nay, Aritificial Intelligence AI trí tuệ nhân tạo và Machine Learning ML máy học hiện diện trong mọi lĩnh vực của

Trang 1

MỤC LỤC

Trang 2

Em xin chân thành cảm ơn thầy Ngô Thanh Tú đã tận tình hướng dẫn và giúp

đỡ em hoàn thành cuốn đồ án này.

Ngoài ra, cũng xin gởi lời cám ơn tới các thầy cô khác trong khoa Công Nghệ Thông Tin và tất cả bạn bè tôi đã tạo mọi điều kiện cho tôi hoàn thành đồ án.

Trang 3

Mặc dù đã rất cố gắng, nhưng trong một khoảng thời gian cho phép, cũng như hạn chế về mặt kiến thức của bản thân, cuốn đồ án này không thể tránh khỏi nhiều thiếu sót Chính vì vậy, tôi rất mong nhận được sự góp ý của các thầy giáo, cô giáo cũng như của bạn bè và những người có quan tâm đến lĩnh vực mà cuốn đồ án này

đã được trình bày.

TP Hồ Chí Minh, 24 tháng 12 năm 2018

BẢNG PHÂN CÔNG CÔNG VIỆC

Thiếtkếgiaodiện

Code

Tìmkiếmtàiliệu

LàmWord

Test

TổnghợpNguy

ễnTấnTài

Trang 5

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.1 Lịch sử phát triển của mạng nơron và Deeplearning

1.1.1 Giới thiệu:

Ngày nay, Aritificial Intelligence (AI trí tuệ nhân tạo) và Machine Learning (ML máy học) hiện diện trong mọi lĩnh vực của đời sống con người, từ kinh tế, giáo dục, ykhoa cho đến những công việc nhà, giải trí hoặc thậm chí là trong quân sự Những ứngdụng nổi bật trong việc phát triển AI đến từ nhiều lĩnh vực để giải quyết nhiều vấn đềkhác nhau Nhưng những đột phá phần nhiều đến từ Deep Learning (DL - học sâu) - mộtmảng nhỏ đang mở rộng dần đến từng loại công việc, từ đơn giản đến phức tạp

-Tuy nhiên, không phải ai cũng biết được những nhà nghiên cứu trong ngành đã phảitốn bao nhiêu công sức, trí lực để đưa những khái niệm trừu tượng ra khỏi trang giấy, môhình hóa nó thành những điều thú vị mà ai cũng sử dụng ngày nay Công việc của họ cũngkhông phải chỉ ngắn gọn đến thế, cái mà họ cần làm là giải thích cái trừu tượng đó mộtcách tường minh, dựa trên những phân tích có được để xây dựng các model mới tốt hơn

và quan trọng hơn hết là hiện thực hóa nó bằng ngôn ngữ lập trình Ngày nay, công việccode một model có thể được hỗ trợ bởi các kỹ sư phần mềm, nhưng các bạn có biết, thời

kỳ mà DL chỉ mới là một từ ngữ xa lạ, những nhà nghiên cứu đã phải tự làm hết, codefrom scratch từ những ngôn ngữ như C/C++ không?

1.1.2 Lịch sử phát triển của Deep Learning

Năm 1763, một bài luận về xác suất của Thomas Bayes được xuất bản 2 năm sau khiông qua đời, lúc đó í tai quan tâm đến nó Gần nửa thế kỷ sau, vào năm 1812 nó được nhà

Hình 1.1: Lịch sử phát triểnHình 1 1 Lịch sử phát triển

Trang 6

toán học Laplace hợp thức hóa thành lý thuyết xác suất mà ngày nay chúng ta gọi là Định

lý Bayes, cốt lõi của mạng Bayes hay Belief Network, là một trong những cấu trúc đónggóp lớn đến thành công của DL ngày nay (Deep Belief Network)

Năm 1770, máy mô phỏng AI đầu tiên được giới thiệu, người Thổ Nhĩ Kỳ đã lừaNapoleon rằng một chiếc máy của họ có thể chơi cờ vua Năm 1857, họ tiết lộ rằng chiếcmáy đó đơn giản chỉ là có một người ngồi bên trong Lúc đó, chả ai biết rằng 140 nămsau, một AI thực sự đánh bại đại kiện tướng Kasparov bằng những nước đi mà nó tạo ra.Năm 1805, lý thuyết về Least Squares ra đời, thời đó được sử dụng trong thiên văn vàtrắc địa, không ai biết được ngày nay nó là hàm loss cơ bản nhất của Artificial NeuralNetwork (ANN)

II Đến với ý tưởng khoa học cho một chiếc máy “giống người” (1936 - 1973)

Năm 1936, lấy cảm hứng từ việc con người thực hiện các công việc bình thường nhưthế nào, Alan Turing định hình nên ý niệm của ông về một Universal Machine (máy toànnăng) Sau nhiều năm nghiên cứu, ông công bố bài báo của mình dưới dạng một bàiluận cùng với một ý tưởng về bài kiểm tra cho một chiếc máy mô phỏng conngười: Turing Test Có lẽ, ông không biết rằng, 60 năm sau khi ông mất, những AI đã bắtđầu passed qua bài Test

Năm 1957, ý tưởng về Perceptron, dựa trên cấu trúc tế bào thần kinh trong não bộ conngười, lần đầu tiên được công bố, khi đó nó bao trùm cả truyền thông về một tương laitươi sáng sắp tới gần của AI Cùng với đó, 13 năm sau, một khái niệm bổ sung được phátminh bởi Seppo Linnainmaa, gọi là Auto Differentation (đạo hàm tự động), là hình tháiđầu tiên của lý thuyết mà chúng ta gọi là Backpropagation ngày nay

Các thuật toán cơ bản khác được phát minh như Nearest Neighbor năm 1967 hay IDF năm 1972 chủ yếu liên quan đến xác suất thống kê, nhưng đây là 2 thuật toán quantrọng nhất, lần lượt tạo nên 2 nhánh lớn của DL hiện nay: Computer Vision (CV) &Pattern Recognition và Natural Language Processing (NLP) & Speech Recognition

TF-III Phản biện và hoài nghi (1974 - 1981)

Năm 1969, cuốn sách Perceptrons được xuất bản, giới thiệu cho độc giả về những giớihạn của Perceptron, trong đó nhất mạnh việc Perceptron không thể học cách biểu diễnhàm XOR (ngày nay chúng ta đều biết nó đã trở nên đơn giản) Hơn nữa, họ còn chứngminh rằng Perceptron là không thể học các hàm phi tuyến được vì giá trị của nó chỉ dựatrên bộ dữ liệu tuyến tính

Năm 1973, Perceptron/ANNs nhường chỗ cho các thuật toán tiến hóa (GeneticAlgorithm), cộng đồng phát triển AI rơi vào mùa đông đầu tiên

IV Trở nên thực tế hơn

1 Backpropagation tái sinh (1982 - 1988)

10 năm sau khi TF-IDF ra đời, một cấu trúc mới phát triển hơn nữa đã báo hiệu sự trởlại ANN sau một mùa đông dài lạnh giá, Recurrent Neural Network (RNN) là công cụ đanăng để xử lý những dãy/chuỗi mà chúng ta vẫn dùng rộng rãi cho đến tận ngày nay

Trang 7

Ngày nay chúng ta đều hiểu rằng, multilayer-perceptron (MLP – mạng Perceptron đalớp), thậm chí chỉ cần 1 hidden layer (lớp ẩn) cũng đủ để xấp xỉ mọi hàm số Lý thuyết đógọi là Universal approximation theorem (UAT).

Đó là vào năm 1986, một sinh viên postdoc trong ngành khoa học nhận thức của UCSan Diego, Geoff Hinton, cháu 4 đời của George Boole (người sáng tạo nên lý thuyếtlogic ngày nay, kiểu dữ liệu bool/boolean là để tưởng nhớ ông), Hinton bất chấp nhữngchỉ trích về Perceptron của các tác giả đương thời, cùng với những người bạn của mìnhcông bố một bài báo mà đã làm hồi sinh Perceptrons Bằng việc tổng quát hóa AutoDiffcủa Seppo thành một thuật toán ngày nay chúng ta đều biết đến: Backpropagation Việcchồng nhiều lớp Perceptrons đã giúp ANN vượt qua khuyết điểm của Perceptrons, điều

mà trước đó chưa ai thực hiện

Không chỉ vậy, cùng thời điểm đó, UAT ra đời, thúc đẩy cuộc bùng nổ về nghiên cứuANN Nổi trội nhất trong đó là việc phát minh ra Convolutional Neural Nets (CNN): mộthọc trò của Hinton, cũng là nhân vật quan trọng trong sự phát triển của DL, Yann LeCun

đã tạo ra LeNet5, được xem là CNN đầu tiên được hiện thực hóa Để làm được điều đó,LeCun đã tạo ra một datasets riêng mà chúng ta vẫn dùng đến ngày nay, bộ số viếttay MNIST, năm 2017 đã mở rộng thành EMNIST

2 Học với con người (1989 - 1994)

Con người chúng ta học không phải theo cách của ANN, mỗi người đều vừa học vừalàm, có khi còn tự học AI là mô phỏng lại khả năng của con người, vậy tại sao chúngcũng không làm như vậy?

Và thế là Reinforcement Learning (RL – học tăng cường) được phát minh ra năm 1989.Thực tế, đó là sự mô mình hóa bằng toán học quá trình học tập của con người, một điềukhông hề đơn giản Q-learning chính là kết quả của nhiều năm nghiên cứu để đưa RL trởnên thực tế hơn, đơn giản hơn của Christopher Watkins Đó còn là một dấu hiệu chotương lai của những AI chơi game đang đến gần

3 Giới hạn và đình trệ (1995 - 2001)

Tuy phát triển vũ bão là thế, nhưng cuối cùng, những sự đầu tư đã không nhận đượcnhững thành quả đáng tin cậy, đơn giản là những mô hình được tạo ra chỉ ở mức cục bộ,không thể áp dụng cho những bài toán lớn được Do đó cả cộng đồng phát triển AI quaytrở lại với những phương pháp nhanh chóng, chính xác hơn, chẳng hạn như SupportVector Machine (SVM) Và thế là ANN lại rời bỏ sàn đấu, một lần nữa DL rơi vào mùađông thứ hai

Trong suốt quãng thời gian đó, những công cụ AI khác dần phát triển, nổi bật nhấtchính là Monte Carlo Tree Search (MCTS), cốt lõi của DeepBlue, AI đầu tiên đánh bại đạikiện tướng Garray Kasparov năm 1997 Tuy gọi là DeepBlue như thế nhưng thực ra là đểthể hiện khả năng tìm kiếm nhanh chóng, độ sâu cao của MCTS trong đó chứ không liênquan đến DL

Với sự ra đời của Long-Short Term Memory (LSTM) năm 1997, nền tảng lý thuyết đãgần đạt đến mức đầy đủ như chúng ta đang thấy ngày nay, để tạo nên những ứng dụng lớn

Trang 8

lao của ANN Tuy nhiên, chỉ còn một vài thứ vô cùng quan trọng khác còn thiếu khiếncho khả năng của ANN bị giới hạn Có thể nói đó là lý thuyết đi trước thời đại.

Trước hết, chúng ta cần một framework để những nhà nghiên cứu nhanh chóng thửnghiệm các ý tưởng của họ mà không phải quá tập trung vào các vấn đề liên quan đến kỹthuật phần mềm (software engineering) Vậy là framework ML đầu tiên ra đời: Torch.Đây là framework viết bằng Lua interface với back-end là C, những vấn đề mà nó gặpphải đã trở thành những bài học quý báu cho các framework về sau như Tensorflow hayPyTorch

Tuy nhiên, việc tạo ra các model tốt và việc model đó hoạt động tốt là hai thứ hoàntoàn khác nhau Những nhà nghiên cứu muốn nhanh chóng thử nghiệm model của họ trênthực tế, họ cần phải có một công cụ tính toán hiệu quả, nhanh chóng Đó là sự tăng tốcđến từ phần cứng, trong suốt quá trình phát triển thầm lặng của DL, ít ai hiểu rõ tầm quantrọng của phần cứng đối với hiệu quả thực tế của model Bước ngoặt được tạo rakhi NVidia thiết kế thành công kiến trúc CUDA năm 2006, lúc đó họ chưa biết rằng hiệuquả từ kiến trúc này to lớn như thế nào 10 năm sau, dòng GPU chuyên biệt hỗ trợ DL củaNVidia chính thức ra mắt – Volta

Cùng năm đó, giải thưởng Netflix được công bố cho những ai thiết kếRecommendation System (hệ thống đề xuất cho người dùng) với độ chính xác cao hơn họ10% Tuy cuộc thi đã kết thúc khi giải thưởng được trao năm 2009 nhưng nó đã làm tiền

đề cho các cuộc thi AI quan trọng sau này, trong đó có Kaggle, nơi mà các team phát triển

AI tranh đấu với nhau hiện nay

2 Âm thầm tái xuất (2006 - 2008)

Trong suốt những năm đó, Hinton vẫn dày công tìm cách đưa ANN đến với thế giớithực Với những thành quả mình, bao gồm sự xuất hiện lần đầu của khái niệmUnsupervised Pretraining (tiền huấn luyện không giám sát) và giới thiệu đến giới khoahọc Deep Belief Networks dựa trên mạng Bayes, ông tuyên bố mình hiểu cách mà não bộhoạt động Với những kết quả nghiên cứu của ông, người ta đã có thể train những ANNsâu hơn, rộng hơn

Vậy là kể từ năm đó, DL trở thành một nhánh riêng biệt, tách khỏi ANN trong ML:

Deep Learning… moving beyond shallow machine learning since 2006! (deeplearning.net)

3 Chìa khóa cuối cùng (2009 - 2011)

Trang 9

Tuy Hinton đã nghiên cứu một cách sâu sắc, chi tiết là thế nhưng cuối cùng, nhữngthành quả thực tế thu được vẫn chưa đáng kể là bao Lúc đó, không ai biết tại sao Đấy làlúc mà người ta luôn cho rằng chỉ cần có model tốt thì dù dataset có ít đến đâu cũng cóthể tạo ra được kết quả thực tế thật tốt.

Chỉ có vài người vượt qua những định kiến đó, trong số đó có Fei Fei Li và các học tròcủa cô Trải qua bao nhiêu khó khăn, chịu đựng chỉ trích trong suốt 2 năm rưỡi, họ đã tạonên một dataset to lớn với hàng triệu bức ảnh và hơn 1000 nhãn vào năm 2009, vượt xadataset nổi tiếng đương thời của PASCAL VOC Lúc đầu, ImageNet chỉ là dataset đượcdùng cho training, nhưng năm 2010, họ biến nó thành một cuộc thi: ILSVRC Điều màsau này nhiều người cho là tiên phong cho khởi đầu của một kỷ nguyên mới, không chỉtrong ngành AI mà là cả định nghĩa về xã hội hiện đại

Vậy là cuối cùng, mọi công cụ chuẩn bị đã hoàn tất Những dấu mốc sắp tới là bắt đầucủa thời đại mà ngày nay chúng ta gọi là Cách mạng 4.0

VI Cuộc cách mạng

1 Sửng sốt (2012 - 2013)

Trong suốt 2 năm cuộc thi ILSVRC được tổ chức, hàng trăm AI đã được submit, tất cảđều là những sự kết hợp của các công cụ trích lọc features được thực hiện bằng tay (e.g.SIFT, SURF, FAST, BRISK, AKAZE, …) và SVM để classify (phân loại) các bức ảnh.Năm 2011, AI tốt nhất vẫn có top-5 error là 25.77%, cho thấy khả năng của AI vẫn làchưa đáng tin cậy để ứng dụng trong thực tế

Năm 2012, Alex Krizhevsky, Ilya Sutskever, và người hướng dẫn của họ lại là Hinton,submit một model và làm bất ngờ không chỉ giới nghiên cứu ML mà cả những người làmviệc trong ngành AI, và sau này là cả thế giới khi đạt top-5 error là 16% Đây là lần đầutiên một model ANN đạt kết quả state-of-the-art

Họ tiết lộ rằng đây là một model CNN, là Deep CNN đầu tiên mà ngày nay chúng tabiết đến như là AlexNet Trong model này, họ giới thiệu đến công chúng những kỹ thuật

mà chưa ai từng nghĩ đến mà ngày nay chúng ta đã thấy rất quen thuộc: ReLU activation

và DropConnect/Dropout Hơn nữa, model được train trên dataset của chính ImageNetnăm 2011, với sự tăng tốc của GPU hỗ trợ bởi CUDA Đây là những sự kết hợp chưa aitừng trực tiếp thử nghiệm

Sau khi kết quả ILSVRC được công bố, các nhà nghiên cứu ANN bắt đầu cân nhắc DLnhư là một lựa chọn thay thế cho các phương thức truyền thống Sự lan tỏa bắt đầu trởnên phổ biến khi một DL model khác là Clarifai đạt 11.2% trong ILSVRC 2013 Điều nàythúc đẩy nhiều nhà nghiên cứu chuyển hẳn sang DL Từ đó, các model state-of-the-artmỗi năm trên ImageNet đều là các DL model, với độ sâu ngày một tăng

Trang 10

2012 là năm mà sự quan tâm được chuyển sang cho DL, cho thấy sự khởi đầu để DLbao trùm mọi mặt của cuộc sống con người Mặc dù năm 2017 là năm cuối cùng củaILSVRC nhưng những di sản mà cuộc thi này để lại là không thể bác bỏ được.

2 Thành tựu (2014 - Nay

Kể từ năm 2013, không chỉ các nhà nghiên cứu mà cả các công ty công nghệ cũng bắtđầu chú ý đến DL Trước năm 2009, Google phát triển một nền tảng DL (mặc dù lúc đóchưa được chú ý nhiều) gọi là DistBelief, dẫn đầu bởi chính Hinton, đóng vai trò quantrọng trong việc giảm thiểu lỗi của các hệ thống ML Kể từ sau sự kiện 2012, Google đẩymạnh đầu tư vào mảng này, chỉ định thêm các nhà khoa học máy tính để cải tiến nền tảng,

cả về lý thuyết lẫn cấu trúc của source code Cuối cùng, nó trở nên mạnh mẽ, nhanhchóng và gọn gàng hơn trước khi được đổi tên thành Tensorflow vào ngày 9/11/2015 dướidạng open-source

Tiếp theo sau đó, những DL framework khác lần lượt ra đời, phát triển, thậm chí chấmdứt vì sự cạnh tranh khốc liệt

Năm 2014, Facebook công bố DeepFace của họ, công cụ mà cho đến tận bây giờ chúng

ta vẫn dùng để tag lên hình ảnh của mình Với 97.35% độ chính xác, DeepFace vượt mặtnhững đối thủ của nó Thực tế thì nó đã gần đạt được độ chính xác của con người dù con

số 2.65% error không phải là nhỏ Tuy vậy, đây vẫn là một dấu hiệu báo trước ngày mànhững hệ thống DL vượt qua khả năng của con người đã không còn xa: AlphaGo(Lee ver.) đánh bại đại kiện tướng cờ vây Lee Sedol 4-1 vào năm 2016, cho thấy mộtbước tiến to lớn trong gần 20 năm từ khi DeepBlue đánh bại Kasparov (không gian tìmkiếm và luật chơi cờ vây khó hơn cờ vua rất nhiều)

Hình 1 2 Độ sâu các state-of-the-art ANN qua từng năm

Trang 11

Tuy nhiên, trong năm 2017 DL liên tục gửi những bất ngờ đến với cả thếgiới: OpenAI bot đánh bại Dendi, người chơi Dota 2 chuyên nghiệp tại The International

2017 Đáng chú ý hơn nữa AlphaGo (Zerover.) đánh bại phiên bản trước đó (Lee ver.) màkhông cần sự hướng dẫn của con người, chỉ tự chơi với chính nó (Lee ver phải học từ cáclượt chơi của con người, sau đó mới tự học) Và AlphaZero, được tổng quát hóa hơnAlphaGo, tự tìm ra cách chơi cờ vua và cờ shogi, tự tạo ra những nước đi của chính nó vàkhông cần đến con người can thiệp vào quá trình học, nó đánh bại phiên bản cao nhất củabot chơi cờ vua mà hầu như các bạn chơi đều biết – StockFish 8 với tỉ số 28 – 0 (72 trậnkhác hòa)

Tại sao những AI chơi game như vậy lại được liệt kê trong lược sử của DL, chẳng phải

nó chỉ đơn giản dùng MCTS thôi ư? Đối với Dota 2, đây là trò chơi online, muốn một conbot đánh được thì nó cần phải nhìn vào screen với map, do đó CV đóng một vai trò rấtquan trọng Đối với AlphaGo/Zero cũng tương tự, không chỉ mã hóa bàn cờ bằng CV, sựkết hợp với Guided MCTS giúp nó khai phá dữ liệu trò chơi sâu hơn, các kỹ thuật và khảnăng lượng giá của nó được mã hóa bởi CNN, nước đi được tạo ra bởi GenerativeAdversarial Network (GAN) để định hướng cho MCTS

VII Kết bài

1 Tương lai

Trước sự phát triển vượt bậc đó, DL hứa hẹn sẽ mang lại những thành quả bất ngờ vànhững bước tiến của nó sẽ ảnh hưởng sâu rộng hơn đến cuộc sống của mỗi người trong xãhội hiện đại DL mang đến một thời đại mới với cuộc cách mạng cũng nó cũng như đặt racác thách thức cho mỗi người để không bị thay thế

Nhiều người sẽ cho rằng, trong tương lai gần, các AI sẽ có thể mô phỏng thật giống conngười Thực tếcho thấy đó không phải là điều không thể Nhưng có lẽ ngày đó sẽ còn xalắm, nếu như chúng ta phát triển DL theo cách như hiện nay?

Người đứng đầu cơ quan phát triển AI của Facebook, LeCun cho rằng DL đang dần trởthành một thứ như Giả kim thuật, với việc các model là một blackbox, chúng ta không thểbiết chúng đã học được những gì từ dataset, những thứ chúng học có đúng không, haythậm chí những điều chúng ta biết về chúng có chính xác không?

Nguyên nhân cho việc này là những nghiên cứu phát triển theo cấp số mũ, không cóđịnh hình được cụ thể những nguyên lý khác ngoài việc tạo ra model hay dataset (e.g.việc tại sao một số model converge được trong khi một số thì không vẫn chưa có lời giải,việc giải nghĩa các weight của ANN vẫn còn là một bí ẩn, …)

2 Những người mới

Những nhà nghiên cứu đã rất cố gắng trong việc tạo ra model bằng những nghiên cứutrước đó, các phân tích cụ thể cho vài trò của từng thành phần trong ANN và sử dụng cácdataset phù hợp để đưa model đạt accuracy tốt nhất Đó là cả một quá trình để có thể tạo

ra được một model chấp nhận được, không phải dễ dàng để có được Ph.D hay Postdoctrong ngành DL

Trang 12

Số lượng người tham gia Neural Information Processing Systems (NIPS) – hội thảo khoa học chuyên về ML và computational neuroscience tăng nhanh chóng.

Việc học cũng vậy, những người mới tham gia vào có thể theo học các course được cácProfessors đầu ngành hoặc các kỹ sư chuyên ngành tại các tập đoàn lớn Để nắm rõ được

DL, bạn cần phải có một nền tảng toán học tương đối và tư duy lập trình căn bản, nhất làniềm đam mê với ngành, nếu không, những sự khó khăn sẽ khiến cho bạn từ bỏ sớm

Dĩ nhiên, học hay nghiên cứu đều cần rất nhiều sức lực, không chỉ đơn giản là clonecode trên github về rồi download pretrained model hay train.py một chút và sau đó kếthợp với mấy model khác thành một ensemble, đem đi evaluate có accuracy cao là được.Bản thân model state-of-the-art, ví dụ như ShakeDrop+AutoAugment trên MNIST đã làmột ensemble và còn được train bởi mạng AutoAugment khiến cho dữ liệu của nó tăng rấtnhiều lần, tăng độ chính xác của ShakeDrop (hiệu quả của Data Augmentation)

1.1.3 Lịch sử phát triển Mạng Neuron

Hình 1 3 Hội thảo về ML tăng lên nhanh chóng

Trang 13

Dưới đây là các mốc đáng chú ý trong lịch sử phát triển của mạng nơron :

Cuối thế kỷ 19 đầu thế kỷ 20 sự phát triển chủ yếu chỉ là những công việc có sự thamgia của cả ba ngành Vật lý học, Tâm lý học, và thần kinh học, bởi các nhà khoa học nhưHermann von Hemholtz, Ernst Mach, Ivan Pavlov Các công trình nghiên cứu của họ chủyếu đi sâu vào các lý thuyết tổng quát về HỌC, NHÌN, và lập luận, và không đưa ra các

mô hình toán học cụ thể mô tả hoạt động của các nơron

Mọi chuyện thực sự bắt đầu vào những năm 1940 với công trình của WarrenMcCulloch và Walter Pitts Họ chỉ ra rằng về nguyên tắc, mạng của các nơron nhân tạo cóthể tính toán bất kỳ một hàm số học hay logic nào

Tiếp theo là Donald Hebb, ông đã phát biểu rằng việc thuyết lập luận cổ điển (nhưPavlov) đưa ra là hiện thực bởi do các thuộc tính của từng nơron riêng biệt, ông cũng nêu

ra một phương pháp học của các nơron nhân tạo

Ứng dụng thực nghiệm đầu tiên của các nơron nhân tạo có được vào cuối những năm

50 cùng với phát minh của mạng nhận thức và luật học tương ứng bởi Frank Rosenblatt.Mạng này có khả năng nhận dạng các mẫu Điều này đã mở ra rất nhiều hy vọng cho việcnghiên cứu mạng nơron Tuy nhiên nó có hạn chế là chỉ có thể giải quyết một số lớp hữuhạn các bài toán

Cùng thời gian đó, Bernard Widrow và Marcian Hoff đã đưa ra một thuật toán học mới

và sử dụng nó để huấn luyện cho các mạng nơron tuyến tính thích nghi, mạng có cấu trúc

và chức năng tương tự như mạng của Rosenblatt Luật học Widrow – Hoff vẫn còn được

sử dụng cho đến ngày nay

Tuy nhiên cả Rosenblatt và Widrow – Hoff đều cùng vấp phải một vấn đề do MarvinMinsky và Seymour Papert phát hiện ra, đó là các mạng nhận thức chỉ có khả năng giảiquyết được các bài toán tách được tuyến tính Họ cố gắng cải tiến luật học và mạng để cóthể vượt qua được hạn chế này nhưng họ đã không thành công trong việc cải tiến luậtt học

để có thể huấn luyện được các mạng có cấu trúc phức tạp hơn

Do những kết quả của Minsky Papert nên việc nghiên cứu về mạng nơron gần như bịchững lại trong suốt một thập kỷ 70 do nguyên nhân là không có được các máy tính đủmạnh để có thể thực nghiệm

Mặc dù vậy, vẫn có một vài phát kiến quan trọng vào những năm 70 Năm 1972, TeuvoKohonen và James anderson độc lập nhau phát triển một loại mạng mới có thể hoạt đôngnhư một bộ nhớ Stephen Grossberg cũng rất tích cực trong việc khảo sát các mạng tự tổchức

Vào những năm 80, việc nghiên cứu mạng nơron phát triển rất mạnh mẽ cùng với sự rađời của PC Có hai khái niệm mới liên quan đến sự hồi sinh này, đó là:

• Việc sử dụng các phương pháp thống kê để giải thích hoạt động của một lớp cácmạng hồi qui có thể được dùng như bộ nhớ liên hợp trong công trình của nhà vật

lý học John Hopfield

Trang 14

• Sự ra đời của thuật toán lan truyền ngược để luyện các mạng nhiều lớp được mộtvài nhà nghiên cứu độc lập tìm ra như: David Rumelhart, James Mc Celland, đócũng là câu trả lời cho Minsky-Papert.

1.2 Một số kiến thức cơ bản về mạng Nơron và Deeplearning

Mạng Neuron nhân tạo (Artificial Neural Network- ANN) là mô hình xử lý thông tinđược mô phỏng dựa trên hoạt động của hệ thống thần kinh của sinh vật, bao gồm số lượnglớn các Neuron được gắn kết để xử lý thông tin ANN giống như bộ não con người, đượchọc bởi kinh nghiệm (thông qua huấn luyện), có khả năng lưu giữ những kinh nghiệmhiểu biết (tri thức) và sử dụng những tri thức đó trong việc dự đoán các dữ liệu chưa biết(unseen data)

Các ứng dụng của mạng Neuron được sử dụng trong rất nhiều lĩnh vực như điện, điện

tử, kinh tế, quân sự,… để giải quyết các bài toán có độ phức tạp và đòi hỏi có độ chínhxác cao như điều khiển tự động, khai phá dữ liệu, nhận dạng,…

1 Kiến trúc tổng quát của một ANN như sau

Processing Elements (PE): Các PE của ANN gọi là Neuron, mỗi Nueron nhận các dữliệu vào (Inputs) xử lý chúng và cho ra một kết quả (output) duy nhất Kết quả xử lý củamột Neuron có thể làm Input cho các Neuron khác

Hình 1 4 Kiến trúc tổng quát của một ANN

Trang 15

Kiến trúc chung của một ANN gồm 3 thành phần đó là Input Layer, Hidden Layer vàOutput Layer (Xem hình trên)

Trong đó, lớp ẩn (Hidden Layer) gồm các Neuron, nhận dữ liệu input từ các Nueron ởlớp (Layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp theo Trong mộtANN có thể có nhiều Hidden Layer

Quá trình xử lý thông tin của một ANN

Inputs: Mỗi Input tương ứng với 1 thuộc tính (attribute) của dữ liệu (patterns) Ví dụnhư trong ứng dụng của ngân hàng xem xét có chấp nhận cho khách hàng vay tiền haykhông thì mỗi Input là một thuộc tính của khách hàng như thu nhập, nghề nghiệp, tuổi, sốcon,…

Output: Kết quả của một ANN là một giải pháp cho một vấn đề, ví dụ như với bài toánxem xét chấp nhận cho khách hàng vay tiền hay không thì output là yes (cho vay) hoặc no(không cho vay)

Connection Weights (Trọng số liên kết) : Đây là thành phần rất quan trọng của mộtANN, nó thể hiện mức độ quan trọng (độ mạnh) của dữ liệu đầu vào đối với quá trình xử

lý thông tin (quá trình chuyển đổi dữ liệu từ Layer này sang layer khác) Quá trình học(Learning Processing) của ANN thực ra là quá trình điều chỉnh các trọng số (Weight) củacác input data để có được kết quả mong muốn

Hình 1 5 Quá trình xử lý thông tin của một ANN

Trang 16

Summation Function (Hàm tổng): Tính tổng trọng số của tất cả các input được đưa vàomỗi Neuron (phần tử xử lý PE) Hàm tổng của một Neuron đối với n input được tính theocông thức sau:

Hàm tổng đối với nhiều Neurons trong cùng một Layer (Xem hình b):

Hình 1 6 Hàm tổng đối với nhiều Neurons

Transformation (Transfer) Function (Hàm chuyển đổi)

Hàm tổng (Summation Function) của một Neuron cho biết khả năng kích hoạt(Activation) của neuron đó còn gọi là kích hoạt bên trong (internal activation) CácNueron này có thể sinh ra một output hoặc không trong ANN (nói cách khác rằng có thểoutput của 1 Neuron có thể được chuyển đến layer tiếp trong mạng Neuron theo hoặckhông) Mối quan hệ giữa Internal Activation và kết quả (output) được thể hiện bằng hàmchuyển đổi (Transfer Function)

Trang 17

Việc lựa chọn Transfer Function có tác động lớn đến kết quả của ANN Hàm chuyểnđổi phi tuyến được sử dụng phổ biến trong ANN là sigmoid (logical activation) function.Trong đó :

YT: Hàm chuyển đổi

Một số kiến trúc của ANN

Hình 1 7 Transfer Function

Trang 18

2 Quá trình học (Learning Processing) của ANN

ANN được huấn luyện (Training) hay được học (Learning) theo 2 kỹ thuật cơ bản đó làhọc có giám sát (Supervised Learning) và học không giám sát (Unsupervised Learning)

Supervised learning: Quá trình Training được lặp lại cho đến kết quả (output) của ANNđạt được giá trị mong muốn (Desired value) đã biết Điển hình cho kỹ thuật này là mạngNeuron lan truyền ngược (Backpropagation)

Unsupervised learning: Không sử dụng tri thức bên ngoài trong quá trình học(Learning), nên còn gọi là tự tổ chức (Self – Organizing) Mạng Neuron điển hình đượchuấn luyện theo kiểu Unsupervised là Sefl – Organizing Map (SOM)

Hình 1 8 Một số kiến trúc của ANN

Trang 19

Sau đây là phân loại các thuật toán Learning và kiến trúc của ANN

Nguyên tắc huấn luyện (Training protocols)

Mạng Neuron có 3 cách huấn luyện chính đó là batch training, stochastic training vàon-line training Đối với on-line training thì các trọng số của mạng (weights) được cậpnhật ngay lập tức sau khi một input pattern được đưa vào mạng Stohastic training cũnggiống như on-line training nhưng việc chọn các input patterns để đưa vào mạng từtraining set được thực hiện ngẫu nhiên (random) Batch training thì tất cả các inputpatterns được đưa vào mạng cùng lúc và sau đó cập nhật các trọng số mạng đồng thời Ưuđiểm của on-line training là tiết kiệm bộ nhớ vì không cần lưu lại số lượng lớn các inputpatterns trong bộ nhớ

Trong quá trình huấn luyện mạng, thuật ngữ “epoch” được dùng để mô tả quá trình khitất cả các input patterns của training set được đưa để huấn luyện mạng Nói cách khách 1epoch được hoàn thành khi tất cả các dữ liệu trong training set được đưa vào huấn luyệnmạng Vì vậy số lượng “epoch” xác định số lần mạng được huấn luyện (hay số lần đưa tất

cả các dữ liệu trong training set vào mạng)

1.3 Ngôn ngữ lập trình

Hình 1 9 Phân loại các thuật toán Learning và kiến trúc của ANN

Trang 20

Python là ngôn ngữ được dùng nhiều nhất để làm Machine Learning vì tính đơngiản gọn nhẹ của nó Nhưng để đưa vào Production thì mình nghĩ Javascript cũng là mộtlựa chọn không tồi

a Cài đặt Python và các thư viện cần thiết:

o Quy trình phát triển phần mềm nhanh vì dòng lệnh được thông dịch thành

mã máy và thực thi ngay lập tức

o Có nhiều thư viện mạnh để tính toán cũng như làm Machine Learning nhưNumpy, Sympy, Scipy, Matplotlib, Pandas, TensorFlow, Keras, vv

• Điểm yếu:

o Mang đầy đủ điểm yếu của các ngôn ngữ thông dịch như tốc độ chậm, tiềmtàng lỗi trong quá trình thông dịch, source code dễ dàng bị dịch ngược

o Ngôn ngữ có tính linh hoạt cao nên thiếu tính chặt chẽ

c Các hàm dựng sẵn và kiểu dữ liệu trên Python

Các hàm dựng sẵn trong Python

Các kiểu dữ liệu trong Python

Phần này được thiết kế dựa trên khóa Data Structures & Algorithms in Python Udacity nhưng tôi sẽ đi sâu hơn vào các ví dụ thực tế hơn là chỉ dừng lại ở lýthuyết Bên cạnh đó tôi sẽ giúp các bạn nắm rõ một số Data Structure quan trọng

-trong Machine Learning như Graph và Tree.

Trang 21

• Integer, Float và Boolean

Cài đặt PIL

Hình 1 10 Pil Framework

Trang 22

Vào trang web sau để download / cài đặt package PIL cho pythonhttp://pillow.readthedocs.org/en/latest/installation.html

Sau khi cài đặt thì có thể sử dụng các module trong package IPL

1.3.2 Torchvision

Gói Torchvision bao gồm các bộ dữ liệu phổ biến, kiến trúc mô hình và các biến đổi hình ảnh phổ biến cho thị giác của máy tính Có thể download và cài đặt thư viện tại trang web: https://github.com/pytorch/vision

Sau khi cài đặt thì có thể sử dụng các module trong package Torchvion

1.3.3 Tkinter

Tkinter là một gói trong Python có chứa module Tk hỗ trợ cho việc lập trình GUI.

Tk ban đầu được viết cho ngôn ngữ Tcl Sau đó Tkinter được viết ra để sử dụng Tk bằng

trình thông dịch Tcl trên nền Python Ngoài Tkinter ra còn có một số công cụ khác giúptạo một ứng dụng GUI viết bằng Python như wxPython, PyQt, và PyGTK

Sau khi cài đặt thì có thể sử dụng các module trong package IPL

from PIL import Image

import Torchvion

import tkinter

Trang 23

vẽ trực tiếp trên trục tọa độ (axes ở đây mang nghĩa về đồ thị của hình được vẽ chứ khôngphải dịnh nghĩa nhiều trục trong toán học)

Điều kiện tiên quyết

Để có thể sử dụng hướng dẫn này, hãy đảm bảo bạn có các điều kiện tiên quyết sau đây:

• Bạn nên có Python 3 và môi trường lập trình đã được cài đặt trên máy tính cục

bộ hoặc là máy chủ

• Để tận dụng tối đa hướng dẫn này, bạn nên làm quen với Python 3 và về loại dữliệu từ điểnđặc biệt

Cuối cùng, hãy đảm bảo bạn theo dõi Bước 1 - nhập matplotlib của chúng tôi Làm thế nào

để Vẽ dữ liệu trong Python 3 Sử dụng matplotlib vì nó là điều cần thiết để

có matplotlib được cài đặt cho dự án này

Bước 1 - Thiết lập tệp chương trình

Bây giờ chúng ta có matplotlib được cài đặt trên máy tính của chúng tôi, chúng tôi có thểbắt đầu tạo dự án của mình

Sử dụng trình soạn thảo văn bản mà bạn chọn, tạo một tệp Python mới và gọi nó Đây sẽ

là tập tin chính của chúng tôi

Trong chương trình này, chúng tôi sẽ nhập khẩu matplotlib và lớp học mà chúng ta cần(đó là pyplot), vượt qua nó plt bí danh Điều này chủ yếu tuyên bố plt dưới dạng biến toàncục sẽ được sử dụng xuyên suốt tập lệnh của chúng tôi

import matplotlib.pyplot as plt

Tiếp theo, chúng ta sẽ nhập một số gói mặc định trong Python Chúng sẽ được sử dụng đểthiết lập và nhận các đầu vào dòng lệnh Gói quan trọng cần lưu ý là argparse Đây lànhững gì chúng ta sẽ sử dụng để lấy thông tin từ dòng lệnh và bao gồm văn bản trợ giúpcho người dùng

Trang 24

Hãy nhập các gói mặc định sau trong Python:

Bây giờ chúng tôi đã nhập mọi thứ và thiết lập bộ xương cho dự án của mình, chúng tôi

có thể chuyển sang sử dụng các gói mà chúng tôi đã nhập

Bước 2 - Thiết lập trình phân tích cú pháp đối số

Trong phần này, chúng ta sẽ tạo các đối số dòng lệnh và lưu trữ chúng trong một biến đểtruy cập nhanh

Trong phương thức chính của chúng ta, hãy tạo biến phân tích cú pháp của chúng ta vàgán nó cho hàm tạo mặc định argparse cung cấp Sau đó, chúng tôi sẽ chỉ định đối số dựkiến cho từ mà chúng tôi sẽ tìm kiếm trong tệp Cuối cùng, chúng tôi sẽ gán đối số dựkiến cho tệp trong đó từ được chứa Đây sẽ là một txt tập tin

Trang 25

số thông tin về đối số dòng lệnh.

Tiếp theo, chúng ta sẽ lưu các đối số đã cho vào một biến khác mà chúng ta sẽ gọi args

Trang 26

help="the path to the text file to be searched through"

)

args = parser.parse_args()

if name == " main ":

main()

Để đo lường tốt, chúng ta nên luôn luôn kiểm tra đầu vào của chúng tôi trong trường hợp

có lỗi đánh máy trong các đối số dòng lệnh Điều này cũng ngăn chặn kịch bản của chúngtôi đột ngột gặp sự cố Vì vậy, hãy xử lý lỗi thông qua việc sử dụng try tuyên bố

Dự án của chúng tôi bây giờ sẽ có thể tham gia vào các đối số dòng lệnh Bước tiếp theo

là phân tích cú pháp tệp đầu vào của chúng tôi

Trang 28

Đầu tiên for vòng lặp được thiết kế để mở tệp và lấy dòng đầu tiên từ tệp đó Sau đó, nólấy những gì có trong mỗi dòng và chia nó dựa trên một chuỗi ký tự khoảng trống giữacác từ trong khi lưu trữ các từ vào một mảng.

Thư hai for vòng lặp lấy mảng này, và lặp qua nó kiểm tra xem nó có trong từ điển haykhông Nếu có, chúng tôi thêm một số vào nó Nếu không, thì chúng ta tạo một mục mới

và khởi tạo nó như 1

Bây giờ chúng tôi đang nửa chừng với dự án

Tóm lại, our main() phương pháp nên thiết lập đầu vào dòng lệnh của chúng tôi vàchuyển chúng vào word_freq() chức năng word_freq() nên lấy từ và tên tệp từ dòng lệnh

và lưu từng từ duy nhất được tìm thấy trong tệp văn bản

Tiếp theo, chúng tôi sẽ lấy dữ liệu này và sắp xếp nó để sử dụng trong biểu đồ của chúngtôi

Bước 4 - Lưu trữ và sắp xếp dữ liệu

Trước khi chúng tôi tạo biểu đồ, chúng tôi phải đảm bảo rằng từ đó thực sự nằm trong tệpchúng tôi đã mở Chúng ta có thể làm điều này với một if câu lệnh điều kiện

Trang 29

if (not word in doc):

sys.stderr.write("Error: " + word + " does not appear in " + filename)

def word_freq(word, filename):

if (not word in doc):

sys.stderr.write("Error: " + word + " does not appear in " + filename)

sys.exit(1)

sorted_doc = (sorted(doc.items(), key = operator.itemgetter(1)))[::-1]

just_the_occur = []

just_the_rank = []

Ngày đăng: 15/01/2022, 08:33

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w