Tải bản đầy đủ (.docx) (67 trang)

Tổng quan deep learning

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.69 MB, 67 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
____________________________________________

TIỂU LUẬN: Khai phá dữ liệu
Nhóm:


LỜI CẢM ƠN
Nhóm 4 chúng em xin gửi tới thầy lời cảm ơn chân thành và thật tâm nhất tới
thầy Hà Quang Thụy. Chúng em cảm ơn vì trong thời gian vừa qua, thầy đã tận tình
chỉ bảo, hướng dẫn chúng em tiếp thu kiến thức cũng như hoàn thành tiểu luận này.
Chúng em xin chân thành cảm ơn thầy.


Mục Lục


I. Tổng quan deep learning.
1.1 Khái niệm Deep Learning
Học sâu (Deep Learning) là một lĩnh vực của học máy mở rộng, cho
phép huấn luyện một AI có thể dự đoán được các đầu ra dựa vào một tập các
đầu vào (tập huấn luyện). Cả hai phương pháp huấn luyện là học có giám sát
và học không giám sát đều có thể sử dụng trong mô hình học sâu. Học sâu
(Deep Learning) tập trung giải quyết các vấn đề liên quan đến mạng thần kinh
(neural) nhân tạo nhằm nâng cấp các công nghệ như nhận diện giọng nói,
tầm nhìn máy tính và xử lý ngôn ngữ tự nhiên. Phần lớn các thuật toán học
sâu được dựa trên khái niệm mạng Neural nhân tạo. Hiệu suất của các mô
hình học sâu (Deep Learning) càng ngày càng được cải thiện.
Phần lớn các thuật toán học sâu được dựa trên khái niệm mạng neural
nhân tạo và việc đào tạo các thuật toán như vậy trong thế giới ngày nay đã


dễ dàng hơn so với trước nhờ sự sẵn có của dữ liệu phong phú và đủ tài
nguyên tính toán. Với dữ liệu bổ sung, hiệu suất của các mô hình học sâu
tiếp tục được cải thiện. Một đại diện tốt hơn về điều này có thể được nhìn
thấy trong hình 1-2:


1.2 Thế nào là “sâu”
Thuật ngữ deep trong deep learning đề cập đến chiều sâu của kiến
trúc mạng neural nhân tạo, và việc học tập là viết tắt của việc học thông qua
mạng neural nhân tạo. Hình 1-3 là đại diện chính xác về sự khác biệt giữa
mạng sâu và nông và tại sao thuật ngữ deep learning thu được tiền tệ.

Mạng neural sâu có khả năng phát hiện cấu trúc tiềm ẩn (hoặc tính
năng học tập) từ dữ liệu không được gắn nhãn và không có cấu trúc, chẳng
hạn như hình ảnh (dữ liệu pixel), tài liệu (dữ liệu văn bản) hoặc tệp (âm
thanh, dữ liệu video).
Mặc dù mạng nơ-ron nhân tạo và mô hình trong deep learning về cơ
bản có cấu trúc tương tự, điều này không có nghĩa là kết hợp hai mạng nơron
nhân tạo sẽ thực hiện tương tự như mạng nơron sâu khi được huấn luyện để
sử dụng dữ liệu.
Điều khác biệt với bất kỳ mạng nơron sâu nào từ một mạng nơron
nhân tạo thông thường là cách chúng ta sử dụng backpropagation. Trong một
mạng lưới nơron nhân tạo bình thường, các tàu ngược dòng sau (hoặc kết
thúc) hiệu quả hơn so với các layer ban đầu (hoặc cũ). Vì vậy, khi chúng ta
quay trở lại mạng, các lỗi trở nên nhỏ hơn và khuếch tán hơn
Một mạng nơron sâu đơn giản là một mạng nơ-ron chuyển tiếp với
nhiều layer ẩn.
Nếu có nhiều layer trong mạng, thì chúng ta nói rằng mạng là sâu. Các
câu hỏi mà nên được nhấp nháy thông qua tâm trí của bạn ngay bây giờ là
bao nhiêu layer phải có một mạng phải đủ điều kiện là sâu?



Trước khi chúng ta bắt đầu hành trình thực tế của chúng ta về việc học
sâu trong không gian NLP, sẽ hữu ích khi xem lại những điều căn bản về
mạng nơron và các loại khác nhau của chúng. Chúng ta sẽ giới thiệu cấu trúc
cơ bản của một mạng nơron cơ bản và một vài trong số các loại mạng nơron
khác nhau được sử dụng trên các ứng dụng toàn ngành. Để cung cấp một sự
hiểu biết ngắn gọn nhưng thực tế về kỹ thuật này, phần này của chương
được chia thành sáu nhóm:
• Mạng nơron là gì?
• Cấu trúc cơ bản của mạng nơron
• Các loại mạng nơron
• Perceptron đa layer
• Gốc dốc ngẫu nhiên
• Backpropagation

1.3 Khái niệm mạng neural nhân tạo
Mạng lưới nơron có một lịch sử lâu dài có thể được truy tìm trở lại các
tác phẩm của Marvin Minsky về trí thông minh nhân tạo (AI) và tham chiếu nổi
tiếng của ông về thách thức giải quyết hàm OR (XOR) độc quyền. Mạng lưới
nơron ngày càng trở nên phổ biến, khi những tiến bộ lớn đã được thực hiện,
với khả năng truy cập vào các tập dữ liệu lớn hơn và lớn hơn và sự ra đời
của điện toán đám mây và GPU cung cấp sức mạnh tính toán to lớn. Điều
này sẵn sàng truy cập vào dữ liệu và máy tính đã tạo ra độ chính xác cao hơn
trong mô hình hóa và phân tích.
Mạng nơron là một mô hình sinh học lấy cảm hứng (bắt chước chức
năng của não động vật có vú) cho phép một máy tính học các khoa của con
người từ dữ liệu quan sát. Họ hiện đang cung cấp giải pháp cho nhiều vấn
đề: nhận dạng hình ảnh, nhận dạng chữ viết tay, nhận dạng giọng nói, phân
tích giọng nói và NLP.

Để giúp chúng ta phát triển ý nghĩa trực quan, các tác vụ khác nhau
mà chúng ta thực hiện trong một ngày có thể được phân loại như sau: suy
luận đại số hoặc tuyến tính (ví dụ: A × B = C hoặc một loạt nhiệm vụ, chẳng
hạn như công thức cho bánh) nhận thức hoặc suy luận phi tuyến (ví dụ: kết
hợp tên với ảnh động vật hoặc giảm căng thẳng hoặc xác thực tuyên bố dựa
trên phân tích giọng nói) học một nhiệm vụ thông qua quan sát (ví dụ: điều
hướng trong xe hơi của Google).
Nhiệm vụ đầu tiên có thể được giải quyết theo thuật toán, tức là, được
mô tả theo chương trình để tạo ra kết quả từ các con số hoặc thành phần,
trong khi khó, nếu không phải là không thể, để xác định một cách tiếp cận
thuật toán cho các nhiệm vụ sau. Các nhiệm vụ sau yêu cầu một mô hình linh
hoạt có thể tự điều chỉnh hành vi của nó, dựa trên các ví dụ được gắn thẻ.


Giờ đây, các thuật toán thống kê hoặc tối ưu hóa cũng cố gắng cung
cấp đầu ra chính xác liên quan đến đầu vào có thể, mặc dù chúng yêu cầu
đặc tả của một hàm để mô hình dữ liệu mà chúng tạo ra tập hợp các hệ số tối
ưu. Ngược lại với kỹ thuật tối ưu hóa, một nơron mạng là một hàm linh hoạt
tự động điều chỉnh hành vi của nó thỏa mãn càng nhiều càng tốt mối quan hệ
giữa đầu vào và kết quả mong đợi và đã được gọi là một xấp xỉ phổ quát.
Với việc sử dụng phổ biến các thuật toán, có các thư viện (Hình 1-4)
có sẵn trên tất cả các nền tảng phổ biến, chẳng hạn như các gói R (knn,
nnet), Scala (phần mở rộng ML học máy) và Python (TensorFlow, MXNet,
Keras).

1.4 Cấu trúc cơ bản của mạng Neural nhân tạo
Nguyên tắc cơ bản đằng sau mạng nơron là tập hợp các yếu tố cơ
bản, nơron nhân tạo hoặc perceptron, được phát triển lần đầu tiên vào những
năm 1950 bởi Frank Rosenblatt. Chúng lấy một số đầu vào nhị phân, x1,
x2, ..., xN và tạo ra một đầu ra nhị phân đơn nếu tổng lớn hơn activation

potential. Các tế bào nơron được gọi là "fire" bất cứ khi nào tiềm năng
activation được vượt quá và hoạt động như một hàm bước (step function).
Các tế bào nơron “lửa” đi dọc theo tín hiệu đến các tế bào nơron khác kết nối
với các nhánh của chúng, do đó, nó sẽ cháy, nếu điện thế activation bị vượt
quá, do đó tạo ra hiệu ứng xếp tầng (Hình 1-5).


Vì không phải tất cả đầu vào đều có sự nhấn mạnh như nhau, trọng số
được gắn vào từng đầu vào, xi để cho phép mô hình gán tầm quan trọng hơn
cho một số yếu tố đầu vào. Do đó, đầu ra là 1, nếu tổng trọng số lớn hơn tiềm
năng hoặc sai lệch activation, tức là,

Trong thực tế, hình thức đơn giản này là khó khăn, do tính chất đột
ngột của hàm bước (step function) (Hình 1-6). Vì vậy, một hình thức sửa đổi
đã được tạo ra để hoạt động nhiều hơn có thể dự đoán được, tức là, những
thay đổi nhỏ về trọng lượng và độ lệch chỉ gây ra một thay đổi nhỏ về đầu ra.
Có hai sửa đổi chính.

1. Các đầu vào có thể nhận bất kỳ giá trị nào giữa 0 và 1, thay
vì là nhị phân.


2. Để làm cho đầu ra hoạt động trơn tru hơn cho các đầu vào đã
cho, x1, x2,…, xN và trọng số. w1, w2,…, wN và bias, b, sử dụng hàm
sigmoid sau (Hình 1-7):

Độ mịn của hàm mũ, hoặc σ, có nghĩa là những thay đổi nhỏ về trọng
số và độ lệch sẽ tạo ra một thay đổi nhỏ trong đầu ra từ nơron (sự thay đổi có
thể là hàm tuyến tính của sự thay đổi về trọng số và độ lệch).


Ngoài function sigmoid thông thường, các phi tuyến khác thường được
sử dụng bao gồm các phần sau, và mỗi loại này có thể có các dải đầu ra
tương tự hoặc khác nhau và có thể được sử dụng tương ứng:
• ReLU: Đơn vị tuyến tính được chỉnh sửa. Điều này giúp
activation được bảo vệ ở mức 0. Nó được tính bằng cách sử dụng hàm sau:

trong đó, xj, giá trị đầu vào thứ j và zj là giá trị đầu ra tương ứng của
nó sau hàm ReLU f. Sau đây là đồ thị (Hình 1-8) của hàm ReLU, với giá trị ‘0’
cho tất cả x <= 0 và với độ dốc tuyến tính là 1 cho tất cả x> 0:


không cho phép activation cập nhật trọng số các nơron cụ thể, do đó
làm cho gradient của nơron đó không đổi. Rủi ro khác được cung cấp bởi
ReLU là sự bùng nổ của hàm activation, vì giá trị đầu vào, xj, chính là đầu ra
ở đây. Mặc dù ReLU cũng cung cấp các lợi ích khác, chẳng hạn như giới
thiệu sparsity trong trường hợp xj dưới 0, dẫn đến biểu diễn thưa thớt, và khi
gradient được trả về trong trường hợp ReLU không đổi, kết quả là học nhanh
hơn, kèm theo khả năng giảm của gradient biến mất.
• LReLUs (Leaky ReLUs): Giảm thiểu vấn đề chết ReLUs bằng
cách giới thiệu độ dốc giảm nhẹ (~ 0,01) cho các giá trị của x nhỏ hơn
0. LReLUs cung cấp các kịch bản thành công, mặc dù không phải lúc
nào.
• ELU (Đơn vị tuyến tính số mũ): Những giá trị này cung cấp các
giá trị âm đẩy các activation đơn vị trung bình gần bằng không, do đó
tăng tốc quá trình học, bằng cách di chuyển gradient gần đó đến
gradient tự nhiên đơn vị. Để có giải thích tốt hơn về ELU, hãy tham
khảo bài báo gốc của Djork-Arné Clevert, có tại https: // arxiv. org /
abs / 1511.07289.
• Softmax: Còn được gọi là hàm mũ chuẩn hóa, điều này biến
đổi một tập hợp các giá trị thực đã cho trong phạm vi (0,1), sao cho

tổng kết hợp là 1. Hàm softmax được biểu thị như sau:

Tất cả các function trước có thể dễ dàng phân biệt, cho phép
mạng được đào tạo dễ dàng với độ dốc (được trình bày trong phần
tiếp theo, “Các loại mạng nơron”). Như trong não động vật có vú, các
nơron riêng lẻ được tổ chức trong các layer, với các kết nối trong một
layer và ta layer tiếp theo, tạo ra một mạng ANN, hoặc mạng nơron


nhân tạo hoặc perceptron đa layer (MLP). Như bạn có thể đoán, độ
phức tạp dựa trên số lượng các yếu tố và số lượng hàng xóm được
kết nối. Các layer giữa đầu vào và đầu ra được gọi là layer ẩn, và mật
độ và loại kết nối giữa các layer là cấu hình. Ví dụ, một cấu hình được
kết nối hoàn toàn có tất cả các nơron của layer L kết nối với L + 1. Đối
với một bản địa hóa rõ rệt hơn, chúng ta chỉ có thể kết nối một vùng
lân cận, nói chín nơ-ron,sang layer tiếp theo. Hình 1-9 minh họa hai
layer ẩn với mật độ dày đặckết nối.

II.Lan truyền ngược và các vấn đề liên quan.
2.1 Các loại mạng neural
Chúng ta đã thảo luận về mạng nơron nhân tạo nói chung, tuy nhiên, có
nhiều loại mạng nơron khác nhau dựa trên kiến trúc và cách sử dụng. Đối với các
mạng nơron, để learning nhanh hơn và hiệu quả hơn, các tế bào nơron khác nhau
được đặt trong mạng sao cho để mà tối đa hóa việc học của mạng cho vấn đề đã
cho. Việc đặt các nơron này dựa theo một cách tiếp cận hợp lý và dẫn đến một thiết
kế mạng kiến trúc với các nơron khác nhau sử dụng đầu ra của các nơron khác,
hoặc các function khác nhau lấy đầu ra từ các function khác làm đầu vào của chúng.
Nếu các tế bào nơron được đặt với các kết nối giữa chúng theo dạng chu trình, thì
chúng tạo thành các mạng như các mạng nơron feedback,recursive hoặc recurrent .
Tuy nhiên, nếu các kết nối giữa các nơron là tuần hoàn, chúng tạo thành các mạng



như các mạng nơron feedforward . Sau đây là giải thích chi tiết về các mạng được
nêu.

2.2 Feedforward Neural Networks
Các mạng nơron dẫn xuất cấu thành các đơn vị cơ bản của họ mạng lưới
nơron. Chuyền dữ liệu trong bất kỳ mạng feedforward là từ layer đầu vào đến layer
đầu ra, thông qua các hidden layer, không có bất kỳ loại vòng lặp nào (Hình 1-10).
Đầu ra từ một layer đóng vai trò là đầu vào cho layer tiếp theo, với các hạn chế về
bất kỳ loại vòng lặp nào trong cấu trúc mạng.

2.3 Convolutional Neural Networks
Convolutional Neural Networks được điều chỉnh tốt để nhận dạng hình ảnh và
nhận dạng chữ viết tay. Cấu trúc của chúng được dựa trên việc lấy mẫu một cửa sổ
hoặc một phần của một hình ảnh, phát hiện các đặc tính của nó, và sau đó sử dụng
đặc tính để xây dựng một biểu diễn của nó. điều này dẫn đến việc sử dụng một số
layer, do đó các mô hình này là những mô hình deep learning đầu tiên.

2.4 Recurrent Neural Networks
Recurrent neural networks (RNNs; Hình 1-11) được sử dụng khi mẫu dữ liệu
thay đổi theo thời gian. RNN có thể được giả định là không được kiểm soát theo thời
gian. RNN áp dụng cùng một layer cho đầu vào ở mỗi bước thời gian, sử dụng đầu
ra (tức là trạng thái của các bước thời gian trước đó làm đầu vào cho bước tiếp
theo).


RNNs có vòng phản hồi trong đó đầu ra firing từ lần trước đó hoặc chỉ số thời
gian T là một trong các đầu vào tại chỉ số thời gian T + 1. Có thể có trường hợp đầu
ra của nơron được nạp vào làm chính đầu vào của nó. Vì chúng rất phù hợp với các

ứng dụng liên quan đến chuỗi, chúng được sử dụng rộng rãi trong các bài toán liên
quan đến video, là chuỗi thời gian của hình ảnh hoặc cho mục đích dịch, trong đó
hiểu từ tiếp theo dựa trên ngữ cảnh của văn bản trước đó. Sau đây là các loại RNN
khác nhau:
+ Encoding recurrent neural networks: Tập hợp các RNN này cho phép
mạng lấy đầu vào của dạng chuỗi:

+

Generating recurrent neural networks: Các mạng như vậy về cơ bản tạo ra
một chuỗi các số hoặc giá trị, giống như các từ trong một câu.

+

General recurrent neural networks: Các mạng này là sự kết hợp của hai
loại RNN trước đó. General RNN (Hình 1-14) được sử dụng để tạo các trình
tự, do đó được sử dụng rộng rãi trong các nhiệm vụ NLG (tạo ngôn ngữ tự
nhiên).


2.5 Encoder-Decoder Networks
Các mạng bộ giải mã bộ mã hóa sử dụng một mạng để tạo ra một biểu diễn
bên trong của đầu vào, hoặc để "mã hóa" nó, và biểu diễn đó được sử dụng làm đầu
vào cho một mạng khác để tạo đầu ra. Điều này rất hữu ích để vượt ra ngoài phân
loại đầu vào. Kết quả cuối cùng có thể ở cùng một phương thức, tức là, bản dịch
ngôn ngữ hoặc một phương thức khác, ví dụ: gắn thẻ văn bản của hình ảnh, dựa
trên các khái niệm. Để tham khảo, người ta có thể tham khảo bài báo “Trình tự học
tập chuỗi với mạng nơron” do nhóm nghiên cứu xuất bản tại Google xuất bản:
( to-sequence-learning-with -neuralnetworks.pdf).


2.6 Recursive Neural Networks
Trong một mạng nơron đệ qui (Hình 1-15), một tập hợp trọng lượng cố định
được đệ quy áp dụng vào cấu trúc mạng và chủ yếu được sử dụng để khám phá
cấu trúc phân cấp hoặc cấu trúc của dữ liệu. Trong khi RNN là một chuỗi, một mạng
nơron đệ quy có dạng cấu trúc treelike. Các mạng như vậy có sử dụng rất lớn trong
lĩnh vực NLP, chẳng hạn như để giải mã tình cảm của một câu. Tình cảm chung
không phụ thuộc vào từng tác phẩm, mà còn theo thứ tự các từ được nhóm theo cú
pháp trong câu.


Như người ta có thể thấy, có nhiều loại mạng khác nhau và một số loại có thể
được áp dụng trong nhiều ngữ cảnh khác nhau, những mạng cụ thể phù hợp hơn
với các ứng dụng nhất định, về mặt tốc độ và chất lượng.

2.7 Stochastic Gradient Descent




Là một biến thể của Gradient Descent
Có tốc độ hội tụ nhanh hơn GD
Phù hợp với những bài toán có lượng cơ sở dữ liệu lớn, các bài
toán yêu cầu mô hình thay đổi liên tục, tức online learning.

2.7.1Gradient Descent là gì
Workhorse của hầu như tất cả các giải pháp cho các vấn đề ta ưu hóa là
thuật toán gốc gradient. Nó là một thuật toán lặp đi lặp lại để giảm thiểu một hàm
mất bằng cách cập nhật các tham số của hàm. ở đây ta có hai thuật ngữ
● Local minimum: các điểm có đạo hàm bằng 0
● Global minimum: điểm cực tiểu của hàm số

->> Global minimum là trường hợp đặc biệt của local minimum
Trong Machine Learning nói riêng và Toán Tối Ưu nói chung, chúng ta thường xuyên
phải tìm giá trị nhỏ nhất (hoặc đôi khi là lớn nhất) của một hàm số nào đó. Ví dụ như
các hàm mất mát trong hai bài Linear Regression và K-means Clustering. Nhìn
chung, việc tìm global minimum của các hàm mất mát trong Machine Learning là rất
phức tạp, thậm chí là bất khả thi. Thay vào đó, người ta thường cố gắng tìm các
điểm local minimum, và ở một mức độ nào đó, coi đó là nghiệm cần tìm của bài
toán.
Các điểm local minimum là nghiệm của phương trình đạo hàm bằng 0. Nếu bằng
một cách nào đó có thể tìm được toàn bộ (hữu hạn) các điểm cực tiểu, ta chỉ cần
thay từng điểm local minimum đó vào hàm số rồi tìm điểm làm cho hàm có giá trị
nhỏ nhất. Tuy nhiên, trong hầu hết các trường hợp, việc giải phương trình đạo hàm
bằng 0 là bất khả thi. Nguyên nhân có thể đến từ sự phức tạp của dạng của đạo
hàm, từ việc các điểm dữ liệu có số chiều lớn, hoặc từ việc có quá nhiều điểm dữ
liệu.
Hướng tiếp cận phổ biến nhất là xuất phát từ một điểm mà chúng ta coi là gần với
nghiệm của bài toán, sau đó dùng một phép toán lặp để tiến dần đến điểm cần tìm,
tức đến khi đạo hàm gần với 0. Gradient Descent (viết gọn là GD) và các biến thể
của nó là một trong những phương pháp được dùng nhiều nhất.
Như chúng ta có thể thấy trong Hình 1-17, chúng ta bắt đầu bằng cách suy
nghĩ về function của chúng ta như một loại thung lũng. Chúng ta tưởng tượng một
quả bóng lăn xuống dốc của một thung lũng. Kinh nghiệm hàng ngày của chúng ta


cho chúng ta biết rằng quả bóng cuối cùng sẽ lăn xuống đáy thung lũng. Có lẽ chúng
ta có thể sử dụng ý tưởng này để tìm ra mức ta thiểu cho hàm chi phí

Ở đây hàm chúng ta đang sử dụng phụ thuộc vào hai biến: v1 và v2. Điều
này có thể hiển nhiên, với thực tế là function mất mát của chúng ta trông giống như
function trước đó. Để đạt được một function mất mát trơn tru như vậy, chúng ta lấy

tổn thất bậc hai, như sau:

Một lần nữa, người đọc nên lưu ý rằng hàm chi phí bậc hai chỉ là một phương
pháp và có nhiều cách khác để xác định sự mất mát. Cuối cùng, mục đích lựa chọn
các function mất mát khác nhau là để có được
1. Một dẫn xuất một phần làm mịn đối với trọng lượng
2. Một đường cong lồi tốt, để đạt được ta thiểu toàn cầu. Tuy nhiên, rất
nhiều yếu tố khác được đưa vào hoạt động khi tìm kiếm mức ta thiểu
toàn cầu (tỷ lệ học tập, hình dạng function, v.v.).
Chúng ta chọn ngẫu nhiên một điểm bắt đầu cho một quả bóng (tưởng
tượng) và sau đó mô phỏng chuyển động của quả bóng khi nó cuộn xuống đáy
thung lũng. Tương tự như vậy, hãy tưởng tượng rằng chúng ta khởi tạo trọng số của
mạng hoặc các tham số của một hàm, tại một số điểm tùy ý trên một đường cong
(giống như thả một quả bóng trên bất kỳ điểm nào của độ dốc), và sau đó chúng ta
kiểm tra độ dốc (phái sinh) gần đó.


dưới đây là GD cho việc chọn điểm khới taopj khác nhau

Chúng ta biết rằng quả bóng sẽ đi xuống theo hướng của độ dốc ta đa, do trọng lực.
Tương tự, chúng ta di chuyển trọng số theo hướng đạo hàm tại thời điểm đó và cập
nhật trọng số theo quy tắc sau:
Cho J (w) = Chi phí như một hàm trọng số
w = Tham số của mạng (v1 và v2)
wi = Initial set trọng số (khởi tạo ngẫu nhiên)

Ở đây, dJ (w) / dw = dạo hàm một phần của trọng số, w, đối với J (w)
η = tỷ lệ học tập.
Với learning rate nhỏ tốc độ hội tụ có thể rất chậm, cần nhiều bước để tìm . Trong
thực tế, khi việc tính toán trở nên phức tạp, learning rate quá thấp sẽ ảnh hưởng tới

tốc độ của thuật toán rất nhiều, thậm chí không bao giờ tới được đích.
Với learning rate lớn thuật toán tiến rất nhanh tới điểm local minimum sau vài vòng
lặp. Tuy nhiên, thuật toán không hội tụ được vì bước nhảy quá lớn, khiến nó cứ


quẩn quanh ở đích.
dưới đây là ví dụ minh họa cho việc η khác nhau:

Tỷ lệ học tập là nhiều hơn một siêu tham số, và không có cách nào cố định
để tìm ra tỷ lệ học tập phù hợp nhất. Tuy nhiên, người ta luôn có thể xem xét việc
mất hàng loạt để tìm nó.
Một cách là xem sự mất mát và phân tích mô hình mất mát. Nói chung, một tỷ
lệ học tập xấu dẫn đến mất mát thất thường trên các lô nhỏ. Nó (mất) có thể đi lên
và xuống đệ quy, mà không ổn định.

Trong sơ đồ trước, có hai trường hợp:
1. Tỷ lệ học tập nhỏ
2. Tỷ lệ học tập lớn
Mục đích là để đạt được ta thiểu của đồ thị trước, và chúng ta phải đạt đến
đáy của thung lũng (như trong tương tự bóng). Bây giờ tốc độ học tập có liên quan
đến việc nhảy bóng làm trong khi lăn xuống đồi.
Xem xét trường hợp 1 đầu tiên (phần bên trái của sơ đồ), trong đó chúng ta
thực hiện các bước nhảy nhỏ, dần dần tiếp tục lăn xuống, từ từ và cuối cùng đạt đến
mức ta thiểu, có khả năng bóng có thể bị kẹt trong một số khe hở nhỏ trên đường đi.
và không thể thoát khỏi nó, vì không có khả năng nhảy lớn.


Trong trường hợp 2 (phần bên phải của sơ đồ), có một tỷ lệ học tập lớn hơn,
so với độ dốc của độ cong. Đây là một chiến lược ta ưu mà thực sự có thể đẩy
chúng ta ra khỏi thung lũng, trong một số trường hợp,đó có thể là một khởi đầu tốt

để ra khỏi tầm với của minima địa phương nhưng không hoàn toàn thỏa đáng trong
trường hợp chúng ta bỏ qua minima toàn cầu.
Trong sơ đồ, chúng ta đang đạt được một minima địa phương, nhưng đây chỉ
là một trường hợp. Điều này có nghĩa là trọng lượng bị kẹt ở minima địa phương, và
chúng ta bỏ lỡ minima toàn cầu. Gradient descent, hoặc stochastic gradient descent,
không đảm bảo sự hội tụ với minima toàn cầu cho các mạng nơron (giả sử các đơn
vị ẩn không tuyến tính), bởi vì các hàm chi phí không lồi.
Một tình huống lý tưởng là một trong những tình huống mà kích thước bước
tiếp tục thay đổi và thích nghi hơn trong tự nhiên, với một chút cao hơn lúc bắt đầu,
sau đó giảm dần trong một khoảng thời gian, cho đến khi hội tụ.

2.7.2 Stochastic Gradient Descent
Trong thuật toán này, tại 1 thời điểm, ta chỉ tính đạo hàm của hàm mất mát
dựa trên chỉ một điểm dữ liệu xi rồi cập nhật θ dựa trên đạo hàm này. Việc này
được thực hiện với từng điểm trên toàn bộ dữ liệu, sau đó lặp lại quá trình trên.
Thuật toán rất đơn giản này trên thực tế lại làm việc rất hiệu quả.
Mỗi lần duyệt một lượt qua tất cả các điểm trên toàn bộ dữ liệu được gọi là một
epoch. Với GD thông thường thì mỗi epoch ứng với 1 lần cập nhật θ, với SGD thì
mỗi epoch ứng với N lần cập nhật θ với N là số điểm dữ liệu. Nhìn vào một mặt,
việc cập nhật từng điểm một như thế này có thể làm giảm đi tốc độ thực hiện 1
epoch. Nhưng nhìn vào một mặt khác, SGD chỉ yêu cầu một lượng epoch rất nhỏ
(thường là 10 cho lần đầu tiên, sau đó khi có dữ liệu mới thì chỉ cần chạy dưới một
epoch là đã có nghiệm tốt). Vì vậy SGD phù hợp với các bài toán có lượng cơ sở dữ
liệu lớn (chủ yếu là Deep Learning) và các bài toán yêu cầu mô hình thay đổi liên
tục, tức online learning.
Thứ tự lựa chọn điểm dữ liệu
Một điểm cần lưu ý đó là: sau mỗi epoch, chúng ta cần shuffle (xáo trộn) thứ tự của
các dữ liệu để đảm bảo tính ngẫu nhiên. Việc này cũng ảnh hưởng tới hiệu năng
của
SGD.

Một cách toán học, quy tắc cập nhật của SGD là:

chúng ta hoàn toàn có thể áp dụng các thuật toán tăng tốc GD như Momentum,
AdaGrad,… vào SGD.


2.8

Multilayer

Perceptrons

2.8.1 Các khái niệm:
Ở đây ta có single layer (hay perceptron)

ở đây nta có Multilayer perceptrons (MLPs)

Multilayer perceptrons (MLPs) thuộc về category của feedforward neural
networksvà được cấu thành từ 3 loại layers: 1 input layer, 1 hoặc nhiều hidden
layers, và 1 output layer. một MLP thông thường có những thuộc tính sau:
+ Hidden layers với số lượng neurons bất kì
+ một input layer sử dụng hàm tuyến tính
+ Hidden layers sử dụng hàm Activation, ví dụ như hàm sigmoid
+ Một hàm activation đưa ra số outputs bất kì
+ Các kết nối được thiết lập đúng giữa input layer, hidden layer và output
layer.

một MLP với các biểu diễn đầy dủ



MLP còn được gọi là các xấp xỉ phổ quát, vì chúng có thể tìm thấy mối quan
hệ giữa giá trị đầu vào và mục tiêu, bằng cách sử dụng đủ số nơron trong layer ẩn,
thay đổi trọng số hoặc bằng cách sử dụng dữ liệu đào tạo bổ sung để ước tính hàm
đã cho bất kỳ mức độ chính xác nào. Điều này thậm chí không đòi hỏi một lượng
thông tin trước đáng kể về ánh xạ giữa các giá trị đầu vào và đầu ra. Thông thường,
với mức độ tự do cho một MLP, nó có thể hoạt động tốt hơn mạng MLP cơ bản,
bằng cách giới thiệu nhiều layer ẩn hơn, với ít nơ ron hơn trong mỗi layer ẩn và
trọng lượng ta ưu. Điều này giúp trong quá trình tổng quát hóa tổng thể của mô
hình.
Sau đây là một vài tính năng của kiến trúc mạng có tác động trực tiếp đến
hiệu suất của nó:
+ Hidden layers: Các layer này đóng góp vào yếu tố khái quát hóa của
mạng. Trong hầu hết các trường hợp, một layer đơn là đủ để bao gồm
xấp xỉ của bất kỳ hàm mong muốn nào, được hỗ trợ với một số lượng
đầy đủ các nơron.
+ Hidden neurons: Số lượng các nơron hiện diện trên các layer ẩn có
thể được chọn bằng cách sử dụng bất kỳ loại công thức nào. Một
nguyên tắc cơ bản của ngón tay cái là chọn đếm giữa một và một vài
đơn vị đầu vào. Một phương tiện khác là sử dụng cross-validation và
sau đó kiểm tra cốt truyện giữa số nơron trong (các) layer ẩn và sai số
bình phương trung bình (MSE) đối với từng tổ hợp, cuối cùng chọn kết
hợp với MSE ít nhất giá trị. Nó cũng phụ thuộc vào mức độ phi tuyến
tính hoặc chiều kích vấn đề ban đầu. Đó là, do đó, nhiều hơn một quá
trình thích ứng để thêm / xóa các tế bào nơron.
+ Output nodes: Số lượng các nodes đầu ra thường bằng số layer mà
chúng ta muốn phân loại giá trị đích.
+ Activation functions: Các function này được áp dụng trên các đầu
vào của các nodes riêng lẻ. Một tập hợp các hàm phi tuyến, được mô
tả chi tiết trong phần Cấu trúc cơ bản của mạng nơron của chương
này, được sử dụng để làm cho đầu ra nằm trong phạm vi mong muốn,

do đó ngăn chặn sự tê liệt của mạng. Ngoài phi tuyến, sự khác biệt liên
tục của các function này giúp ngăn ngừa sự ức chế đào tạo mạng
nơron.


Vì đầu ra được đưa ra bởi một MLP chỉ phụ thuộc vào đầu vào hiện tại và
không dựa trên các đầu vào trong quá khứ hoặc tương lai, nên MLP được coi là
thích hợp để giải quyết các vấn đề phân loại.
Hình 1-16 cho thấy có tổng cộng (L + 2) layer trong MLP, với layer đầu vào ở
vị trí đầu tiên, tiếp theo là các layer ẩn L và cuối cùng là layer đầu ra tại (L + 2) - vị trí
thứ. Các phương trình sau đây xác định các đơn vị khác nhau của MLP, với các hàm
activation được áp dụng ở các giai đoạn khác nhau của mạng.
W(k) biểu thị kết nối trọng lượng giữa layer ẩn thứ k và layer trước đó, layer
đầu vào hoặc layer ẩn khác. Mỗi W(k) được tạo thành từ trọng số, Wij(k), giữa các
đơn vị i và j của hai layer kết nối. b(k) là bias cho layer thứ k.
Phương trình sau đại diện cho việc activation layer ẩn cho k> 0:

Đối với bất kỳ nơron thứ i nào có mặt trong layer ẩn thứ k, phương trình sau
đây đúng:

Hàm activation cho layer đầu ra (k = L + 1) theo sau:

2.8.2 Các Activation function thường dùng:


2.8 3 Nhược điểm của Tanh và sigmoid
Sigmoid saturate and kill gradients:




Khi đầu vào có trị tuyệt đối lớn (rất âm hoặc rất dương), gradient của hàm số
này sẽ rất gần với 0 => hệ số tương ứng với unit đang xét sẽ gần như không
được cập nhật.

2.8.4 Activation function (ReLU):




Vì ReLU được tính toán gần như tức thời và gradient của nó cũng được tính
cực nhanh với gradient bằng 1 nếu đầu vào lớn hơn 0, bằng 0 nếu đầu vào
nhỏ hơn 0,
=> Tăng tốc training các Deep Networks
Hàm ReLU có nhiều biến thể khác như Noisy ReLU, Leaky ReLu, ELUs.

2.9 Backpropagation
2.9.1 Giới thiệu
Gradient descent là một thuật toán mạnh mẽ, nhưng nó là một phương pháp
chậm khi số lượng trọng số tăng lên. Trong trường hợp các mạng nơron có các
tham số trong hàng nghìn, tập trung mỗi khối lượng đối với hàm mất hoặc thay vào
đó, hình thành sự mất mát như một hàm của tất cả các trọng số trở nên chậm chạp
và cực kỳ phức tạp để sử dụng cho mục đích thực tế.
Nhờ vào bài báo của Geoffrey Hinton và các cộng sự của ông vào năm 1986,
chúng ta có một thuật toán cực kỳ nhanh và đẹp giúp chúng ta tìm ra đạo hàm một
phần của sự mất mát đối với từng trọng lượng. Thuật toán này là phương thức của
quy trình đào tạo cho mọi thuật toán học sâu. Bạn có thể tìm thêm thông tin chi tiết
tại đây: www.cs.toronto.edu/~hinton/backprop.html.
Đây là quy trình hiệu quả nhất có thể để tính toán độ dốc chính xác, và chi phí
tính toán của nó luôn luôn có cùng độ phức tạp O () như tính toán sự mất mát chính
nó. Để backpropagation hoạt động, hai giả định cơ bản được thực hiện liên quan

đến hàm Error.
1. Tổng số lỗi có thể được viết như là một tổng kết của các lỗi riêng lẻ
của các mẫu đào tạo / minibatch, EE x


2. Lỗi có thể được viết như là một function của kết quả đầu ra của mạng.

Backpropagation bao gồm hai phần:
1. Forward pass, trong đó chúng ta khởi tạo các trọng số và tạo một
mạng feedforward để lưu trữ tất cả các giá trị
2. Backward pass, được thực hiện để có các giá trị được lưu trữ cập
nhật các trọng số
Các quy tắc chuỗi và đại số tuyến tính là các công cụ chính cần thiết để tính
toáni backpropagation.

2.9.2 Tư tửởng thuật toán




Tính gradient ngược từ layer cuối cùng đến layer đầu tiên.
Layer cuối cùng được tính toán trước vì nó gần gũi hơn với predicted outputs
và hàm mất mát.
Việc tính toán gradient của các layer trước được thực hiện dựa trên quy tắc
tên là chain rule, (đạo hàm của hàm hợp).

Ban đầu, tất cả các trọng số cạnh được gán ngẫu nhiên.Đối với mọi đầu vào
trong tập dữ liệu huấn luyện, ANN được activation và đầu ra của nó được quan sát.
Đầu ra này được so sánh với đầu ra mong muốn mà chúng ta đã biết và lỗi được
"truyền" trở lại layer trước đó. Lỗi này được ghi nhận, và trọng số được "điều chỉnh"

cho phù hợp. Quá trình này được lặp lại cho đến khi lỗi đầu ra nằm dưới ngưỡng
xác định trước..
Trước hết, chúng ta cần tính predicted output
gọi là bước feedforward

với một input x:


Stochastic Gradient Descent có thể được sử dụng để tính gradient cho các ma trận
trọng số và biases dựa trên một cặp điểm training x,y. Để cho đơn giản, ta coi J là
hàm mất mát nếu chỉ xét cặp điểm này, ở đây J là hàm mất mát bất kỳ.
Đạo hàm của hàm mất mát theo chỉ một thành phần của ma trận trọng số của lớp
cuối cùng:

Trong đó

thường là đại lượng dễ tính toán và

Tương tự như thế, đạo hàm của hàm mất mát theo bias của layer cuối cùng là:

Với đạo hàm theo hệ số ở các lớp l thấp hơn, chúng ta hay xem hình dưới đây:




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×