1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khai phá dữ liệu chương 12 ứng dụng

52 11 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 52
Dung lượng 362,67 KB

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

Nội dung

Vì các mạng neuron có thể được chia thành nhiều nhómneuron riêng lẻ có thể xử lý độc lập với các nhóm neuron khác trên cùng mộttầng layer, nên mạng neuron tận dụng được lợi thế tính toán

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

TIỂU LUẬN

Môn học: Khai phá dữ liệu

Chương 12: Ứng dụng Giáo viên hướng dẫn: PGS TS Hà Quang Thụy

Trang 2

MỤC LỤC

Trong chương này, chúng tôi mô tả cách áp dụng học sâu cho các ứng dụngtrong thị giác máy tính (computer vision), nhận dạng giọng nói (speechrecognition), xử lý ngôn ngữ tự nhiên (natural language processing) và các lĩnhvực khác liên quan đến lợi ích thương mại Chúng tôi bắt đầu bằng cách thảoluận về việc triển khai mạng neuron quy mô lớn, phần không thể thiếu trong hầuhết các ứng dụng AI Tiếp theo, chúng tôi cùng xem xét một số lĩnh vực ứngdụng cụ thể mà người ta đã ứng dụng học sâu để giải quyết vấn đề Mặc dù, mộttrong những mục tiêu của học sâu là thiết kế các thuật toán có khả năng giảiquyết đa dạng các nhiệm vụ khác nhau, thì cho đến nay một vài mức độ chuyênbiệt là cần thiết Ví dụ, các tác vụ thị giác máy tính đòi hỏi phải xử lý một lượnglớn đặc trưng đầu vào (điểm ảnh - pixels) trên mỗi mẫu huấn luyện Các tác vụ

xử lý ngôn ngữ đòi hỏi một mô hình có một lượng giá trị khả dĩ lớn trên mỗiđặc trưng đầu vào

Học sâu quy mô lớn

Học sâu dựa trên triết lý của thuyết kết nối (connectionism): trong khi mộtneuron sinh học hoặc đặc trưng đơn lẻ trong mô hình học máy là không thôngminh, một lượng lớn các neuron sinh học hoặc các đặc trưng này hoạt độngcùng nhau lại có thể thể hiện ra hành vi thông minh Điều này nhấn mạnh sựthật rằng số lượng neuron phải lớn Một trong những nhân tố chính giúp nângcao độ chính xác của mạng neuron và tăng độ phức tạp của các tác vụ chúng ta

có thể giải quyết được từ tập kỉ 80 đến nay chính là việc tăng kích thước mạngneuron một cách mạnh mẽ Như ta đã thấy ở mục 1.2.3, dẫu cho kích cỡ mạngneuron tăng theo hàm mũ trong suốt 3 thấp kỷ, chúng vẫn chưa đạt đớn độ lớn

Trang 3

và phức tạp cỡ hệ thần kinh của côn trùng.Bởi vì kích cỡ mạng neuron đóng vai trò quan trọng, nên học sâu yêu cầu cơ sở

hạ tầng phần cứng lẫn phần mềm có hiệu năng cao

Triển khai tính toán trên CPU tốc độ cao

Trước kia, người ta huấn luyện mạng neuron bằng CPU trên một máy (tính) đơn

lẻ Ngày nay, cách làm này nhìn chung là không hiệu quả Giờ đây, ta thực hiệntính toán trên GPU hoặc trên CPUs của nhiều máy tính được kết nối mạng vớinhau Trước khi chuyển sang sử dụng các thiết bị tốn kém này, nhiều nhà nghiêncứu đã từng cố gắng chứng minh rằng hệ nhiều CPU không thể quản lý lượngtính toán lớn theo yêu cầu của mạng neuron.Tuy việc mô tả cách thực thi mã CPU tính toán hiệu quả nằm ngoài phạm vi củacuốn sách này, nhưng chúng tôi nhấn mạnh rằng, việc cài đặt một cách cẩn thậncho từng dòng CPU riêng biệt có thể mang lại những cải thiện đáng kể Ví dụ,năm 2011, CPU nhanh nhất sẵn có có thể xử lý khối lượng tính toán của mạngneuron nhanh hơn khi sử dụng kỹ thuật tính toán số học với dấu phẩy tĩnh(fixed-point arithmetic) thay vì dùng dấu phẩy động (floating-point arithmetic).Bằng cách thực thi với sự tinh chỉnh kỹ lưỡng dấu phẩy tĩnh, Vanhoucke vàđồng nghiệp (2011) đã đạt được tốc độ nhanh gấp ba lần so với hệ thống sửdụng dấu phẩy động Mỗi mô hình CPU mới có những đặc tính hiệu năng khácnhau, nên thỉnh thoảng, việc thực thi dấu phẩy động cũng có thể lại nhanh hơn(so với dấu phẩy tĩnh) Nguyên tắc quan trọng ở đây là việc tinh chỉnh cẩn thậncác phép tính số học theo từng dòng CPU có thể cho tác dụng lớn Bên cạnh thủthuật chọn dấu phẩy động hay tĩnh, người ta còn dùng nhiều thủ thuật khác baogồm tối ưu cấu trúc dữ liệu để tránh cache misses (ND: trường hợp dữ liệu đượcyêu cầu không tồn tại trong bộ nhớ đệm cache) và sử dụng các câu lệnh vector(vector intructions) Nhiều nhà nghiên cứu học máy không để ý đến những thựcthi chi tiết này, nhưng khi hiệu năng thực thi hạn chế kích thước của mô hình thì

sẽ gây hậu quả lên độ chính xác của mô hình đó

Trang 4

Triển khai (ND: tính toán) trên GPU

Hầu hết các tính toán của mạng neuron hiện đại đều thực hiên trên các bộ xử lý

đồ họa (graphics processing unit) Các bộ xử lý đồ họa (GPU) là các linh kiệnphần cứng vốn được phát triển cho các ứng dụng đồ họa Các hệ thống gametrên thị trường tiêu dùng đã thúc đẩy phát triển phần cứng xử lý đồ họa Các đặctính hiệu năng cần thiết cho các hệ thống game hóa ra cũng có lợi cho các mạngneuron

Việc hiển thị hình ảnh game đòi hỏi phải thực hiện hàng loạt tính toán songsong một cách mau lẹ Mô hình của các nhân vật (ND: trong game) và môitrường (ND: cảnh vật trong game) được xác định thông qua một danh sách cáctọa độ 3 chiều của các đỉnh (ND: của các khối đa diện hợp nên các hình thùtrong game) Card đồ họa phải thực hiện các phép nhân và chia ma trận củanhiều đỉnh đồng thời để chuyển đổi những tọa độ 3 chiều này thành tọa độ 2chiều trên màn hình Các card đồ họa này phải thực hiện nhiều tính toán trênmỗi điểm ảnh (pixel) đồng thời để xác định màu sắc của mỗi điểm ảnh đó.Trong cả 2 trờng hợp, các tính toán đều tương đối đơn giản và không bao gồmcác thao tác so sánh rẽ nhánh như là các thao tác tính toán thường thấy trênCPU Ví dụ, mỗi đỉnh của một vật thể rắn đều sẽ được nhân với cùng 1 ma trận;không cần thiết phải thực thi lệnh if trên mỗi đỉnh để xác định xem nó sẽ nhânvới ma trận nào Các tính toán cũng hoàn toàn độc lập với nhau, và vì thế có thểthực hiện song song một cách dễ dàng Các tính toán cũng bào gồm việc xử lýcác bộ nhớ đệm (buffer) lớn, bao gồm các bitmap mô tả bề mặt (mảng màu sắc)của mỗi vật thể cần hiển thị Tóm lại, điều này dẫn đến việc các card đồ họađược thiết kế để có mức độ tính toán song song và băng thông bộ nhớ cao, vớichi phí tốc độ xung nhịp thấp hơn và ít khả năng phân nhánh hơn so với cácCPU truyền thống

Thuật toán mạng neuron yêu cầu các đặc tính hiệu năng tương tự như các thuậttoán đồ họa thời gian thực kể trên Các mạng neuron thường bao gồm đến mộtlượng lớn các bộ đệm thông số lớn, giá trị kích hoạt, giá trị gradient, mỗi một

Trang 5

trong số chúng đều phải cập nhật sau mỗi bước huấn luyện Các bộ thông sốđệm này đủ lớn để dẫn đến tràn bộ nhớ cache của các máy tính để bàn truyềnthống, vì thế nên băng thông bộ nhớ òa hệ thống trở thành các yếu tố hạn chếtốc độ Các GPU cho ta một lợi thế hấp dẫn so với các CPU là bởi chính băngthông bố nhớ cao đó Các thuật toán huấn luyện mạng neuron thường không baogồm nhiều nhánh hay các thao tác điều khiển phức tạo, vì thế chúng phù hợpvới phần cứng GPU Vì các mạng neuron có thể được chia thành nhiều nhómneuron riêng lẻ có thể xử lý độc lập với các nhóm neuron khác trên cùng mộttầng (layer), nên mạng neuron tận dụng được lợi thế tính toán song song củaGPU.

Phần cứng GPU bạn đầu được thiết kế chuyên dụng đến nỗi chỉ có thể sử dụngcho các tác vụ đồ họa Theo thời gian, chúng trở nên linh hoạt hơn, cho phépcác chương trình con tùy biến có thể được sử dụng để chuyển dạng tọa độ cácđỉnh hoặc gắn màu cho các điểm ảnh Về nguyên tắc, không có yêu cầu nàobuộc các giá trị điểm ảnh trên tác vụ dựng hình Các GPU có thể dùng cho cáctính toán cụ thể bằng cách ghi lại kết quả tính toán xuống bộ nhớ đệm của cácgiá trị điểm ảnh Steinkrau và đồng nghiệp (2005) đã thực thi mạng neuron haitầng kết nối đầy đủ trên GPU và cho biết tốc độ nhanh gấp ba lần so với CPU.Ngay sau đó, Chellapilla và đồng nghiệp (2006) đã chứng minh rằng có thể tăngtốc tính toán các mạng tích chập có giám sát với cùng một kỹ thuật như trên

Sự phổ biến của card đồ họa trong việc huấn luyện mạng neuron bùng nổ sau sự

ra đời của các GPU đa mục đích (general purpose) Các GP-GPU có thể thực thicác mã tùy ý, không chỉ riêng cho các chương trình con dựng hình (như trướcnữa) Ngôn ngữ lập trình NVIDIA CUDA cung cấp viết các mã tùy ý này bằngngôn ngữ tương tự như C Với mô hình lập trình tương đối thuận lợi, tính toánsong song mạnh mẽ, bằng thông bộ nhớ cao, GP-GPU giờ đây cho ta một nềntảng (platform) lý tưởng cho việc lập trình mạng neuron Các nhà nghiên cứuhọc sâu đã nhanh chóng chấp nhận nền tảng này ngay sau khi nó trở nên sẵn có[Raina et al., 2009; Ciresan et al., 2010]

Trang 6

Viết code hiệu quả cho GP-GPUs vẫn còn là một nhiệm vụ khó nhất cho cácchuyên gia Các kĩ thuật cần thiết để đạt được hiệu năng tốt trên GPU rất khácvới các kĩ thuật được sử dụng trên CPU Ví dụ, code hiệu quả trên nền tảngCPU thường được thiết kế để đọc thông tin từ bộ nhớ cache càng nhiều càng tốt.Trên GPU, hầu hết các vị trí bộ nhớ có thể ghi được không được ghi vào bộ nhớcache, do đó thực tế nó có thể nhanh hơn khi tính một giá trị hai lần thay vì tínhtoán một lần và đọc lại nó từ bộ nhớ Code cho GPU cũng là đa luồng(multithreaded) và các luồng khác nhau phải được phối hợp với nhau một cáchcẩn thận Ví dụ, các thao tác bộ nhớ sẽ nhanh hơn nếu chúng được kết hợp lại(coalesced) Đọc hoặc ghi bộ nhớ liên hợp (coalesced reads or writes) xảy ra khimột số luồng có thể đọc hoặc ghi một giá trị mà chúng cần cùng lúc, như là mộtphần của giao dịch bộ nhớ duy nhất Các mô hình khác nhau của GPU có thểkết hợp các kiểu đọc khác nhau và các kiểu ghi khác nhau Thông thường, cácthao tác bộ nhớ thường dễ kết hợp hơn nếu giữa n luồng thứ i truy cập byte thứi+j của bộ nhớ, trong đó j là một bội số của số lũy thừa của 2 Các mô tả chínhxác là khác nhau giữa các mô hình của GPU Một xem xét phổ biến khác choGPU là đảm bảo rằng mỗi luồng trong một nhóm thực thi cùng một câu lệnh(instruction) đồng thời Điều này có nghĩa là kĩ thuật phân nhánh có thể khóthực hiện trên GPU Luồng được chia thành các nhóm nhỏ gọi là warp Mỗiluồng trong một warp thực thi cùng một câu lệnh trong mỗi chu kì, vì vậy nếucác luồng khác nhau trong cùng một warp cần thực thi những đoạn code khácnhau, các đường dẫn code khác nhau này cần được thực thi tuần tự thay vì songsong.

Do sự khó khăn của viết code hiệu năng cao trên GPU, các nhà nghiên cứu nêncấu trúc công việc của họ để tránh việc phải viết code mới để kiểm nghiệm môhình hoặc giải thuật mới Thông thường, người ta có thể làm điều này bằng cáchxây dựng một thư viện phần mềm của các thao tác hiệu năng cao như là phépnhân và nhân ma trận, sau đó đặc tả mô hình bằng cách gọi các thao tác của thưviện này Ví dụ, thư viện học máy Pylearn2 [Goodfellow et al., 2013c] đặc tả tất

Trang 7

cả giải thuật học máy của mình bằng các lời gọi đến Theano [Bergstra et al.,2010; Bastien et al., 2012] và cuda-convnet [Krizhevsky, 2010], những thư việncung cấp các thao tác hiệu năng cao Cách tiếp cận này có thể dễ dàng hỗ trợnhiều nền tảng phần cứng khác nhau Ví dụ, cùng một chương trình Theano cóthể chạy trên hoặc CPU hoặc GPU, mà không cần bất kì thay đổi nào đến lờigọi hàm của chính Theano Các thư viện khác như TensorFlow [Abadi et al.,2015] và Torch [Collobert et al., 2011b] cũng cung cấp các tính năng tương tự.

Triển khai tính toán phân tán quy mô lớn

Trong nhiều trường hợp, tài nguyên tính toán trên một máy tính đơn lẻ là không

đủ Do đó, chúng ta muốn phân phối khối lượng công việc của quá trình học vàsuy luận trên nhiều máy tính

Phân chia quá trình suy luận là đơn giản, bởi vì mỗi ví dụ đầu vào chúng tamuốn xử lý có thể được chạy bởi một máy riêng biệt Điều này được gọi là songsong dữ liệu (data parallelism)

Cũng có thể có được song song mô hình (model parallelism), trong đó nhiềumáy làm việc với nhau trên một điểm dữ liệu, mỗi máy thực thi một phần khácnhau của mô hình Điều này là khả thi cho cả quá trình suy luận và quá trìnhhọc

Song song dữ liệu trong quá trình học một phần nào đó là khó hơn Chúng ta cóthể tăng kích thước của lô nhỏ (minibatch) được sử dụng trong một bước củamột SGD, nhưng thông thường chúng ta nhận được hiệu suất tối ưu hóa dướimức tuyến tính Nó sẽ tốt hơn nếu cho phép các máy tính toán các bước củagradient descent một cách song song Thật không may, định nghĩa tiêu chuẩncủa trượt gradient (gradient descent) là một giải thuật tuần tự hoàn toàn:gradient của bước t là một hàm của các tham số được tạo bởi bước t−1

Điều này có thể được giải quyết bằng cách sử dụng trượt dốc ngẫu nhiên khôngđồng bộ (asynchronous stochastic gradient descent) [Ben- gio et al., 2001;Recht et al., 2011] Trong phương pháp này, một vài core của bộ xử lý chia sẻ

Trang 8

bộ nhớ đại diện cho các tham số Mỗi core đọc tham số mà không cần khóa(lock) lại Điều này làm giảm lượng cải thiện trung bình mà mỗi bước gradientdescent tạo ra, bởi vì một số core sẽ ghi đè tiến độ của nhau, nhưng tăng tốc độcủa các bước làm cho tổng thể quá trình học nhanh hơn Dean và các đồngnghiệp (2012) đi tiên phong trong triển khai nhiều máy với phương pháp khôngkhóa này cho trượt gradient, ở đó các tham số được quản lý bởi một máy chủtham số (parameter server) thay vì được lưu trong bộ nhớ dùng chung (sharedmemory) Trượt dốc không đồng bộ phân tán (distributed asynchronous gradientdescent) vẫn là một chiến lược chính để huấn luyện mạng học sâu lớn và được

sử dụng bởi hầu hết các nhóm làm về học sâu trong doanh nghiệp [Chilimbi etal., 2014; Wu et al., 2015] Các nhà nghiên cứu học sâu thông thường không cókhả năng chi trả hệ thống học sau có cùng quy mô, nhưng một số nhà nghiêncứu đã tập trung vào cách xây dựng mạng phân tán với phần cứng có chi phítương đối thấp thiết lập trong môi trường đại học [Coates et al., 2013]

Nén mô hình

Trong nhiều ứng dụng thương mại của các mô hình học máy, việc giảm thờigian và chi phí bộ nhớ của quá trình suy luận quan trọng hơn nhiều so với việcgiảm thời gian chi phí bộ nhớ trong quá trình huấn luyện Đối với các ứng dụngkhông đòi hỏi tính riêng tư của người dùng, ta có thể huấn luyện mô hình mộtlần, sau đó triển khai để sử dụng cho hàng tỉ người dùng khác nhau Trong nhiềutrường hợp, người dùng cuối bị hạn chế về tài nguyên nhiều hơn so với các nhàphát triển Chẳng hạn, ta có thể huấn luyện một mô hình nhận dạng tiếng nóitrên một cụm máy tính mạnh mẽ, sau đó triển khai nó thành ứng dụng có thể càiđặt lên điện thoại di động

Chiến lược chính để giảm chi phí của quá trình suy luận là nén mô hình (modelcompression) [Bucilua et al., 2006] Ý tưởng cơ sở của nén mô hình là thay thế

mô hình gốc có chi phí cao bởi một mô hình nhỏ hơn, yêu cầu ít bộ nhớ và thờigian chạy hơn cho việc lưu trữ và đánh giá

Trang 9

Nén mô hình có thể ứng dụng khi kích thước của mô hình gốc được thiết kếnhằm mục đích tránh sự quá khớp Trong hầu hết các trường hợp, mô hình vớisai số tổng quát hóa thấp nhất là tập hợp của một vài mô hình được huấn luyệnđộc lập Việc đánh giá toàn bộ n thành viên của tập hợp này là tốn kém Đôi khi,một mô hình đơn lẻ thậm chí có thể tổng quát hóa tốt hơn nếu đó là một môhình lớn (chẳng hạn nếu nó được kiểm soát với cơ chế tắt ngẫu nhiên).

Những mô hình lớn này học một số hàm f(x), nhưng bằng cách sử dụng nhiềutham số hơn cần thiết cho tác vụ Kích thước của những mô hình này chỉ cầnthiết khi số lượng điểm dữ liệu huấn luyện bị giới hạn Sau khi khớp với hàmf(x) này, ta có thể sinh ra một tập huấn luyện bao gồm rất nhiều điểm dữ liệu,đơn giản bằng cách áp dụng hàm f cho các điểm x được lấy mẫu ngẫu nhiên.Sau đó chúng ta học một mô hình mới, một mô hình nhỏ hơn để khớp với f(x)trên những điểm dữ liệu này Để tận dụng hiệu quả sự giảm dung lượng của môhình mới, tốt hơn hết ta nên lấy mẫu các điểm x từ một phân phối tương tự vớicác điểm dữ liệu kiểm thử đầu vào thực tế sẽ được cung cấp cho mô hình saunày Điều này có thể thực hiện bằng cách lấy các điểm từ một mô hình sinhđược đào tạo trên tập huấn luyện ban đầu

Ngoài ra, người ta có thể huấn luyện mô hình nhỏ hơn chỉ trên các điểm dữ liệuhuấn luyện ban đầu để sao chép các đặc trưng khác của mô hình (gốc), chẳnghạn như phân phối hậu nghiệm trên các lớp không chính xác [Hinton et al.,

2014, 2015]

Cấu trúc động (Dynamic Structure)

Một chiến lược để tăng tốc hệ thống xử lý dữ liệu nói chung là xây dựng các hệthống có cấu trúc động (dynamic structure) trong biểu đồ mô tả sự tính toán cầnthiết để xử lý một điểm dữ liệu đầu vào Hệ thống xử lý dữ liệu có thể xác địnhmột cách linh động những tập con nào trong các mạng neuron nhân tạo nênđược thực thi đối với một điểm dữ liệu đầu vào cho trước Cấu trúc động cũng

có thể được sử dụng bên trong các mạng neuron riêng lẻ bằng cách xác định tập

Trang 10

con của các đặc trưng (các thành phần ẩn (hidden unit)) để tính toán khi đã biếttrước thông tin từ dữ liệu đầu vào Dạng cấu trúc động bên trong mạng neuronnhân tạo này đôi khi được gọi là tính toán có điều kiện (conditionalcomputation) [Bengio, 2013; Bengio et al., 2013b] Bởi vì rất nhiều các thànhphần của kiến trúc có thể có liên quan với một lượng nhỏ các điểm dữ liệu đầuvào, hệ thống có thể chạy nhanh hơn bằng cách chỉ tính toán các đặc trưng khicần thiết.

Cấu trúc động trong tính toán là một nguyên tắc cơ bản của khoa học máy tínhđược áp dụng rất nhiều trong các quy tắc của công nghệ phần mềm Nhữngphiên bản đơn giản nhất của cấu trúc động được áp dụng cho mạng neuron nhântạo được dựa trên việc xác định tập con nào trong nhóm các mạng neuron nhântạo (hoặc các mô hình học máy khác) nên được áp dụng cho một điểm dữ liệuđầu vào cụ thể

Một chiến lược đáng cân nhắc để tăng tốc quá trình suy luận trong một bộ phânlớp là sử dụng một chuỗi phân tầng (cascade) của các bộ phân lớp Chiến lượcphân tầng có thể được sử dụng với mục đích phát hiện sự hiện diện của một đốitượng (hoặc sự kiện) hiếm Để biết chắc rằng đối tượng có xuất hiện, chúng taphải sử dụng một bộ phân lớp tinh vi với dung lượng lớn và rất tốn kém trongthực thi Tuy nhiên, bởi vì đối tượng này là hiếm nên chúng ta có thể sử dụng ítphép tính hơn để loại bỏ các dữ liệu đầu vào không chứa đối tượng Trongtrường hợp này, chúng ta có thể huấn luyện trên một chuỗi các bộ phân lớp.Những bộ phân lớp đầu tiên trong chuỗi có dung lượng thấp và được huấn luyện

để sử dụng lại nhiều lần Nói cách khác, chúng được huấn luyện để đảm bảorằng chúng ta không loại bỏ sai một dữ liệu đầu vào nào có sự xuất hiện của đốitượng trong đó Bộ phân lớp cuối cùng được huấn luyện để có độ chính xác cao.Khi kiểm thử, chúng ta thực hiện suy luận bằng cách thực thi các bộ phân lớptheo chuỗi, loại bỏ bất cứ ví dụ huấn luyện nào bị từ chối bởi một thành phầntrong chuỗi phân tầng Nói chung, điều này cho phép chúng ta xác định sự xuấthiện của các đối tượng với độ chắc chắn cao, mặc dù ta sử dụng một mô hình

Trang 11

dung lượng cao, nhưng không bắt buộc phải bỏ ra chi phí suy luận trên mọi ví

dụ huấn luyện Có hai cách khác nhau để chuỗi phân tầng có thể đạt được hiệuquả cao Một cách là làm cho các thành phần sau của chuỗi phân tầng có hiệuquả cao Trong trường hợp này, toàn hệ thống rõ ràng là có hiệu quả cao, nhờmột vài thành phần riêng lẻ của nó Cũng có thể tạo ra một chuỗi phân tầng mà

ở đó tất cả các mô hình đơn lẻ có hiệu quả thấp nhưng toàn hệ thống lại có hiệuquả cao nhờ sự kết hợp của nhiều mô hình nhỏ Viola và Jones (2001) sử dụngmột chuỗi phân tầng của các cây quyết định tăng cường (boosted decision tree)

để cài đặt một bộ phát hiện khuôn mặt nhanh và mạnh mẽ phù hợp để sử dụngtrong các máy ảnh kĩ thuật số cầm tay Bộ phân lớp của họ địa phương hóa mộtkhuôn mặt bằng cách sử dụng phương pháp tiếp cửa sổ trượt (sliding window)

mà ở đó rất nhiều các cửa sổ được kiểm tra và từ chối nếu chúng không chứakhuôn mặt Một phiên bản khác của chuỗi phân tầng sử dụng các mô hình trước

đó để cài đặt một loại cơ chế chú ý cứng (hard attention mechanism): các thànhphần ban đầu của chuỗi phân tầng địa phương hóa một đối tượng, và các thànhphần sau của chuỗi phân tầng thực hiện các xử lý tiếp theo cho vị trí của đốitượng Ví dụ, Google phiên dịch số địa chỉ từ hình ảnh Street View bằng cách sửdụng một chuỗi phân tầng hai bước, đầu tiên xác định số địa chỉ với một môhình học máy và sau đó nhận dạng số địa chỉ bằng một mô hình khác[Goodfellow et al., 2014d]

Bản thân cây quyết định là một ví dụ của cấu trúc động, bởi vì mỗi nút của câyxác định cây con nào của nó nên được đánh giá cho mỗi đàu vào Một cách đơngiản để hoàn thiện sự liên hợp của học sâu và cấu trúc động là huấn luyện mộtcây quyết định ở đó mỗi nút sử dụng một mạng neuron để tạo ra các quyết địnhchia tách (Guo and Gelfand, 1992), mặc dù điều này thường không được đượcthực hiện với mục tiêu chính là tăng tính toán suy luận

Với cùng tinh thần như vậy, người ta sử dụng một mạng neuron nhân tạo đượcgọi là gater để chọn một trong số các mạng chuyên gia (expert networks) sẽđược sử dụng để tính toán đầu ra cho một đầu vào xác định Phiên bản đầu tiên

Trang 12

của ý tưởng này được gọi là hỗn hợp của các chuyên gia (mixture of experts)[Nowlan, 1990; Jacobs et al., 1991], trong đó gater đưa ra một tập hợp các xácsuất hoặc trọng số (thu được thông qua một softmap phi tuyến), mỗi chuyên giaứng với một xác suất và trọng số, và kết quả cuối cùng thu được bởi kết hợp cótrọng số đầu ra của các chuyên gia này Trong trường hợp này, việc sử dụnggater không làm giảm chi phí tính toán nhưng nếu một chuyên gia đơn lẻ đượcchọn bởi gater cho mỗi ví dụ đầu vào, chúng ta đạt được hỗn hợp cứng của cácchuyên gia (the hard mixture of experts) [Collobert et al., 2001, 2002], điều mà

có thể tăng tốc đáng kể thời gian của quá trình học và suy luận Chiến lước nàyhoạt động tốt khi số lượng lựa chọn của gater là nhỏ bởi vì nó không là tổ hợp.Nhưng khi chúng ta muốn lựa chọn các tập con khác nhau của các thành phần(units) hoặc tham số, không thể sửa dụng một “chuyển đổi mềm” bởi vì nó yêucầu liệt kê (và tính toán giá trị đầu ra cho) tất cả các lựa chọn của gater Để đốiphó với vấn đề này, một vài phương pháp đã tìm cách huấn luyện tổ hợp củagater Bengio và đồng nghiệp (2013b) thử nghiệm với một vài ước lượng củagradient trên xác suất của gater, trong khi Bacon và đồng nghiệp (2015) vàBengio và đồng nghiệp (2015a) sử dụng kĩ thuật học tăng cường (reinforcementlearning) để học một dạng của tắt ngẫu nhiên có điều kiện (conditional dropout)trên các khối của thành phần ẩn và thực tế làm giảm chi phí tính toán mà khôngảnh hưởng xấu đến chất lượng của quá trình xấp xỉ

Một trở ngại lớn trong việc sử dụng các hệ thống có cấu trúc động là mức độsong song giảm do hệ thống sử dụng các nhánh code khác nhau cho các đầu vàokhác nhau Điều này có nghĩa là một số thao tác trong mạng có thể được mô tảnhư phép nhân hoặc phép nhân theo lô trên một số ví dụ nhỏ Chúng ta có thểviết các chương trình con chuyên biệt để biến đổi mỗi ví dụ với các kernel khácnhau hoặc nhân mỗi hàng của một ma trận với một tập các cột trọng số khác.Thật không may, khó có thể thiết lập những chương trình con chuyên biệt nàymột cách hiệu quả Thiết lập trên CPU sẽ chậm do thiếu sự kết hợp với bộ đệm,

và thiết lập trên GPU sẽ chậm bởi vì thiếu giao dịch bộ nhớ liên hợp và bởi vì

Trang 13

nhu cầu của tuần tự hóa các warp khi các các thành phần của warp nằm trên cácnhánh code khác nhau Trong một số trường hợp, những vấn đề này có thể đượcgiảm thiểu bằng cách phân vùng các ví dụ thành các nhóm mà tất cả các ví dụcủa nhóm đều nằm trên cùng một nhánh, sau đó xử lý các nhóm này cùng mộtlúc Đây có thể là một chiến lược chấp nhận được để tôi thiểu hóa thời gian cầnthiết để xử lý một lượng ví dụ cố định trong một thiết lập offline Trong mộtthiết lập thời gian thực khi mà các ví dụ cần được xử lý liên tục, phân vùng khốilượng công việc có thể gây ra vấn đề về cân bằng tải Ví dụ, nếu chúng ta chỉđịnh một máy để xử lý bước đầu tiên trong chuỗi phân tầng và một máy khác để

xử lý bước cuối của chuỗi phân tầng, thì máy đầu tiên có xu hướng bị quá tải vàmáy cuối sẽ bị dư tải Các vấn đề tương tự nảy sinh nếu mỗi máy được chỉ định

để thiết lập các nút khác nhau của cây quyết định

Thiết lập phần cứng chuyên dụng cho mạng học sâu

Từ những ngày đầu nghiên cứu mạng neuron nhân tạo, các nhà nghiên cứu, thiết

kế phần cứng đã xây dựng các phần cứng chuyên dụng nhằm tăng tốc quá trìnhhuấn luyện và/hoặc quá trình suy luận của các thuật toán mạng neuron nhân tạo.Bạn đọc có thể xem thêm các tổng kết về phần cứng chuyên dụng dành chomạng học sâu ở [Lindsey and Lindblad, 1994; Beiu et al., 2003; Misra andSaha, 2010]

Các dạng khác nhau của phần cứng chuyên dụng [Graf and Jackel, 1989; Meadand Ismail, 2012; Kim et al., 2009; Pham et al., 2012; Chen et al., 2014a,b] đãđược phát triển trong những thập kỉ gần đây với ASICs (mạch tích hợp chuyêndụng - application-specific intergated circuits), hoặc với kỹ thuật số (dựa trênbiểu diễn số nhị phân), công nghệ analog (Graf and Jackel, 1989; Mead andIsmail, 2012)(dựa trên những cài đặt vật lý của các giá trị liên tục như điện áphoặc cường độ dòng điện), hoặc với công nghệ hỗn hợp (kết hợp các thành phần

số digital và analog) Những năm gần đây cài đặt linh động hơn bằng FPGA

Trang 14

(field progammable gated array) (ở đó các chi tiết mạch có thể được ghi lên chipsau khi nó được xây dựng) đã được phát triển.

Mặc dù các cài đặt phần mềm trên các bộ xử lý đa chức năng (general-purposeprocessing units) (CPUs và GPUs) thường sử dụng độ chính xác 32-bit hoặc 64-bit để biểu diễn số thực dấu phẩy động (floating point number) nhưng từ lâungười ta đã biết có thể sử dụng độ chính xác thấp hơn, ít nhất là trong quá trìnhsuy luận [Holt and Baker, 1991; Holi and Hwang, 1993; Presley and Haggard,1994; Simard and Graf, 1994; Wawrzynek et al., 1996; Savich et al., 2007].Điều này trở thành một vấn đề cấp thiết hơn trong những năm gần đây bởi họcsâu đã trở nên phổ biến trong các sản phẩm công nghiệp thực tế, và bởi sự tácđộng lớn mang tính tích cực của các phần cứng tốc độ cao hơn đã được chứngminh với các GPU Một yếu tố khác thúc đẩy những nghiên cứu hiện tại vềphần cứng chuyên dụng cho mạng học sâu đó là tốc độ phát triển của một CPUhay GPU đơn lẻ đã chậm lại, và hầu hết những tiến bộ của tốc độ tính toán đến

từ việc song song hóa giữa các bộ xử lý (trong các CPU hoặc GPU) Điều nàyrất khác với tình hình trong thập niên 1990 (kỷ nguyên gần nhất của mạngneuron nhân tạo), khi mà các thiết lập phần cứng của các mạng neuron nhân tạo(có thể mất hai năm từ khi bắt đầu đến khi xuất hiện trên một con chip) khôngthể theo kịp tốc độ phát triển và giá thành rẻ của bộ xử lý đa chức năng CPU

Do đó, xây dựng một phần cứng chuyên dụng là một cách để vượt qua giới hạn,

ở giai đoạn thiết kế phần cứng mới được phát triển cho các thiết bị có công suấtthấp như điện thoại, nhằm ứng dụng chung cho học sâu (chẳng hạn: nhận dạnggiọng nói, thị giác máy tính hoặc ngôn ngữ tự nhiên)

Nghiên cứu gần đây về các thiết lập độ chính xác thấp của mạng neuron dựatrên lan truyền ngược [Vanhoucke et al., 2011; Courbariaux et al., 2015; Gupta

et al., 2015] cho thấy rằng độ chính xác từ 8 đến 16 bit là đủ dùng cho quá trìnhhuấn luyện các mạng neuron nhân tạo đa tầng dựa trên lan truyền ngược Rõràng, quá trình huấn luyện yêu cầu độ chính xác cao hơn quá trình suy luận, và

do đó một vài cấu trúc biểu diễn số với dấu phẩy tĩnh linh hoạt (dynamic

Trang 15

fixed-point) có thể được sử dụng để giảm số bit cần thiết khi biểu diễn một số Các sốdấu phẩy tĩnh truyền thống bị giới hạn trong một khoảng cố định (phụ thuộc vàothành phần số mũ (exponent) trong biểu diễn dấu phẩy động) Trong khi cácbiểu diễn dấu phẩy tĩnh linh hoạt chia sẻ phạm vi này giữa một tập các số(chẳng hạn như tất cả các trọng số trong một lớp của mạng neuron) Sử dụngdấu phẩy tĩnh thay cho các biểu diễn dấu phẩy động và việc sử dụng một lượngbit nhỏ hơn cho mỗi số giúp giảm kích thước phần cứng, năng lượng tiêu thụ vàthời gian tính toán cần thiết để thực hiện phép nhân, và phép nhân chính là phéptính được sử dụng nhiều nhất trong quá trình suy luận và huấn luyện của mộtmạng học sâu hiện tại dựa trên lan truyền ngược.

Thị giác máy tính (Computer Vision)

Thị giác máy tính là một trong những lĩnh vực nghiên cứu tích cực nhất cho cácứng dụng của học sâu, bởi vì thị giác là một nhiệm vụ quan trọng của con người

và rất nhiều loài động vật nhưng lại là thách thức đối với máy tính [Ballard et

al., 1983] Rất nhiều các nhiệm vụ chuẩn(benchmark) cho các giải thuật học sâu

ở dưới dạng nhận diện vật thể (object recognition) hoặc nhận diện kí tự.

Thị giác máy tính là một lĩnh vực rất rộng bao gồm nhiều cách để xử lý hìnhảnh với rất nhiều những ứng dụng đa dạng Những ứng dụng của thị giác máytính trải từ tái tạo khả năng của con người, như là nhận diện khuôn mặt, đến tạo

ra các thể loại mới về khả năng thị giác Ví dụ về thể loại thứ hai, một ứng dụngthị giác máy tính gần đây là nhận dạng sóng âm từ từ những rung động màchúng tạo ra trên vật thể xuất hiện trong video [Davis et al., 2014] Hầu hết cácnghiên cứu học sâu trong thị giác máy tính không chỉ tập trung vào những ứng

dụng kì lạ như vậy (ND: ứng dụng mở rộng các lĩnh vực có thể với hình ảnh)

mà hơn nữa còn tập trung vào một mục tiêu nhỏ, cốt lõi của học máy nhằm táihiện khả năng của con người Hầu hết học sâu trong thị giác máy tính được sửdụng để nhận dạng đối tượng hoặc phát hiện một số khuôn dạng, với nghĩa làbáo cáo đối tượng nào đó có mặt trong một bức ảnh, chú thích một bức ảnhbằng những hình hộp xung quanh mỗi đối tượng, phiên dịch ra một chuỗi các kí

tự từ một bức ảnh, hoặc dán nhãn mỗi điểm ảnh trong một bức ảnh với đối

Trang 16

tượng thuộc mà nó thuộc về Bởi vì mô hình sinh mẫu (generative models) đã là

một nguyên tắc dẫn dắt các nghiên cứu về học sâu, tổng hợp hình ảnh bằng các

mô hình học sâu vẫn là một công việc nặng nhọc Trong khi tổng hợp hình ảnh

ex nihilo thường không được coi là vấn đề thị giác máy tính cần bỏ công sức,

những mô hình có khả năng tổng hợp hình ảnh thường hữu ích cho việc khôiphục hình ảnh, một nhiệm vụ trong thị giác máy tính liên quan tới sửa lỗi trongảnh hoặc xóa đối tượng khỏi ảnh

Tiền xử lý

Trong nhiều lĩnh vực ứng dụng của học sâu, ta cần thực hiện quá trình tiền xử lý

dữ liệu phức tạp bởi các kiến trúc học sâu khó có khả năng xử lý dữ liệu này ởdạng nguyên gốc Thị giác máy tính thường yêu cầu ít khâu tiền xử lý hơn sovới các lĩnh vực khác Các bức ảnh thường được chuẩn hoá để toàn bộ điểm ảnhcủa chúng nằm trong một dải xác định, chẳng hạn như [0,1][0,1] hoặc [−1,1][−1,1] Việc trộn các hình ảnh nằm trong dải [0,1][0,1] với hình ảnh trong dải[0,255][0,255] thường không thành công Định dạng các hình ảnh về cùng mộtthang đo là bước tiền xử lý bắt buộc duy nhất Nhiều kiến trúc thị giác máy tínhyêu cầu các hình ảnh phải có cùng một kích thước chuẩn, do đó các hình ảnhphải được cắt bỏ hoặc thay đổi tỉ lệ để phù hợp với kích thước đó Tuy nhiên,việc chuẩn hóa kích thước trên là không bắt buộc với một số kiến trúc mạngnhất định Một số mô hình tích chập cho phép dữ liệu đầu vào có kích thướckhác nhau, và mô hình sẽ tự điều chỉnh một cách linh hoạt kích thước các vùng

“pooling” để cho đầu ra có kích thước xác định Một số mô hình tích chập khác

có thể tự điều chỉnh kích cỡ của đầu ra để giống với kích cỡ của ảnh đầu vào,chẳng hạn như các mô hình giảm nhiễu, hoặc các mô hình gán nhãn từng điểmảnh [Hadsell et al., 2007]

Có một hình thức tiền xử lý chỉ dành cho tập huấn luyện là tăng cường dữ liệu.Đây là một phương pháp rất hiệu quả để giảm các sai số tổng quát hoá của hầuhết các mô hình thị giác máy tính Một ý tưởng tương tự cho quá trình kiểm thử

là ta có thể thử kiểm tra mô hình với các biến thể khác nhau của cùng một đầuvào Ví dụ, ta có thể dùng một bức ảnh để kiểm thử, nhưng mỗi lần ta cắt lệch đimột chút Một cách khác là ta có thể có khởi tạo việc bình chọn mô hình theonhiều cách khác nhau để xác định kết quả Ý tưởng có thể được hiểu như là mộtcách tiếp cận đồng bộ, và nó có thể giúp làm giảm sai số tổng quát hoá

Trang 17

Một số quá trình tiền xử lý khác có thể áp dụng cho cả tập huấn luyện lẫn tậpkiểm thử đó là điều chỉnh các ví dụ học về gần dạng chính tắc hơn, để có thểgiảm mức độ biến động mà mô hình phải chịu Giảm mức độ biến động trong

dữ liệu có thể đồng thời giảm được cả sai số tổng quát hoá lẫn kích thước môhình cần thiết để khớp với tập huấn luyện Có thể sử dụng các mô hình đơn giảnhơn để giải quyết các nhiệm vụ đơn giản, và thường thì các giải pháp đơn giản

có khả năng khái quát khá tốt Quá trình tiền xử lý này thường được thực hiện

để loại bỏ một vài loại biến động của dữ liệu nếu người thiết kế mô hình có thể

mô tả và hiểu rằng nó không ảnh hưởng tới vấn đề cần giải quyết Khi sử dụngmột mô hình lớn để huấn luyện tập dữ liệu lớn, ta thường không cần đến khâutiền xử lý kiểu này, mà chỉ cần để mô hình tự học xem loại biến động nào sẽ tựđộng được đánh giá là không ảnh hưởng tới chất lượng mô hình Ví dụ, kiếntrúc mạng AlexNet dùng để phân loại tập ImageNet chỉ có một quá trình tiền xử

lý : trừ đi giá trị trung bình trong toàn tập huấn luyện với từng điểm ảnh

Chuẩn hóa độ tương phản.

Một trong những nguồn biến động rõ ràng nhất mà ta có thể yên tâm loại bỏtrong nhiều bài toán đó là mức độ tương phản của ảnh Độ tương phản của ảnhchỉ đơn giản là mức độ khác biệt sáng tối trong ảnh Có nhiều cách để địnhlượng độ tương phản này Trong bối cảnh của học sâu, độ tương phản của ảnhthường được dùng để chỉ độ lệch chuẩn của các điểm ảnh trong một vùng haytoàn bộ bức ảnh Giả sử, ta có một bức ảnh được biểu diễn bởi một tensor X ∈R^(r×c×3), với Xi,j,1 là cường độ màu đỏ tại hàng i, cột j, Xi,j,2 tương ứng vớicường độ màu xanh lá cây và Xi,j,3 ứng với cường độ màu xanh dương Từ đây

ta có độ tương phản của cả bức ảnh là :

trong đó X¯ là cường độ trung bình của cả bức ảnh:

Trang 18

Chuẩn hóa độ tương phản toàn cục (Global contrast normalization)

(GCN) có mục đích giảm mức độ tương phản của ảnh bằng cách trừ đi giá trịtrung bình trong từng bức ảnh, sau đó co dãn chúng để độ lệch chuẩn trên toàn

bộ các điểm ảnh bằng một hằng số ss nào đó Cách tiếp cận này khá phức tạp vìtrong thực tế ta không có hệ số co dãn nào có thể thay đổi độ tương phản củaảnh không-tương-phản (ảnh có tất cả các điểm ảnh có giá trị bằng nhau) Nhữngbức ảnh có độ tương phản thấp thường có rất ít thông tin về mặt nội dung Trongtrường hợp này, nếu ta chia ảnh cho độ lệch chuẩn thực thì chẳng những khôngthu được gì mà còn làm tăng nhiễu của cảm biến và nén các chi tiết của ảnh

Hình 12.1: GCN ánh xạ các ví dụ lên trên một hình cầu (Trái) Đầu vào

dữ liệu thô có thể có bất kỳ chuẩn nào (Giữa) GCN với λ=0λ=0 ánh xạ tất cả

các ví dụ khác 0 lên mặt cầu một cách hoàn hảo Ở đây ta sử dụng s=1s=1 vàϵ=10^−8 Bởi vì ta sử dụng GCN dựa trên chuẩn hoá độ lệch chuẩn chứ khôngdựa trên chuẩn L^2, vậy nên mặt cầu kết quả không phải là mặt cầu đơn vị

(Phải) GCN đã có kiểm soát, với λ>0, ta đã vẽ các ví dụ lên mặt cầu nhưng

không hoàn toàn loại bỏ độ phương sai trong chuẩn của chúng Ta giữ nguyên s

và ϵ như trước

Điều này hướng ta tới việc tạo ra một tham số kiểm soát λ để làm thiên lệch ướctính của độ lệch chuẩn Một cách khác là ta có thể giới hạn mẫu số có giá trị nhỏnhất bằng ϵ Cho trước ảnh đầu vào X, GCN sinh ảnh đầu ra X′, được định

Tập huấn luyện chứa nhiều ảnh được cắt ra các đối tương quan tâm thường ítkhi chứa ảnh có cường độ gần như bằng hằng số Trong trường hợp này, về mặt

Trang 19

thực hành, ta có thể yên bỏ qua việc vấn đề tử số khá nhỏ trong bằng cách đặtλ=0 và tránh việc chia cho 0 (trường hợp này cực hiếm gặp) bằng cách đặt ϵϵ tới

một giá trị cực thấp, ví dụ như 10^−8 Goodfellow và đồng nghiệp đã sử dụng

cách tiếp cận này trên tập dữ liệu CIFAR-10 Những tấm ảnh nhỏ được cắt ngẫunhiên thường có mật độ gần như hằng số, điều này làm cho các cơ chế kiểm

soát chặt chẽ hữu ích hơn Coates và đồng nghiệp (2011) đã sử dụng ϵ=0 và

λ=10 trong các gói nhỏ được chọn ngẫu nhiên từ tập CIFAR-10

Tham số tỉ lệ s thì có thể cài đặt bằng 1, như trong [Coates et al., (2011)], hoặc

ta chọn để làm cho từng điểm ảnh có độ lệch chuẩn trong suốt các dữ liệu gầnvới 1, như trong [Goodfellow et al., (2013)]

Độ lệch chuẩn trong phương trình 12.3 chỉ là tái tỉ lệ của chuẩn L^2 của ảnh

(giả sử giá trị trung bình của ảnh đã bị loại bỏ) Ta thường ưu tiên dùng hệ sốnày để định nghĩa GCN trong bối cảnh về mặt độ lệch chuẩn thay vì chuẩn L^2

vì độ lệch chuẩn đã có chia cho số điểm ảnh Vậy nên GCN dựa trên độ lệch

chuẩn cho phép sử dụng hệ số s cho mọi kích cỡ ảnh Tuy nhiên, việc quan sát

thấy chuẩn L^2 tỉ lệ với độ lệch chuẩn giúp ta hình thành một số trực giác hữu

ích Ta có thể hiểu GCN ánh xạ các ví dụ tới một bề mặt cầu Hình 12.1 minh

họa điều này Đây là một tính chất hữu ích vì mạng neuron thường phản ứng vớihướng trong không gian tốt hơn là phản ứng với vị trí cụ thể Phản ứng vớinhiều khoảng cách khác trong cùng một hướng cần có các đơn vị ẩn có có cácvector trọng số cộng tuyến với nhau nhưng có hệ số tự do khác nhau (collinearweight vectors but different biases) Các thuật toán học gặp khó khăn trong việcphát hiện sự phối hợp như vậy Hơn nữa, nhiều mô hình đồ thị nông gặp nhiềuvấn đề khi biểu diễn nhiều mô hình đồ thị tách biệt trong trên cùng một đườngthẳng (line) GCN tránh các vấn đề này giảm từng ví dụ về một hướng thay vìgiảm về một hướng và một khoảng cách

Một cách phản trực giác, có một quá trình tiền xử lý được gọi là cầu hóa

(sphering) nhưng không giống với GCN Cầu hoá không có nghĩa là đặt dữ liệu

trên một mặt phẳng hình cầu, thay vào đó nó chỉ tới quá trình co dãn các thànhphần chính để chúng có phương sai bằng nhau Nhờ đó, các phân bố thường đabiến được dùng bởi PCA có đường bao hình cầu Cầu hoá thường được nhắc tới

như làm bạc hoá (whitening).

Chuẩn hoá độ tương phản toàn cục thường không thể làm rõ các đặc trưng củaảnh mà ta muốn làm nổi bật, ví dụ như các cạnh và các góc Nếu chúng ta cómột cảnh mà trong đó có một vùng tối có diện tích lớn và một vùng sáng có

Trang 20

diện tích lớn( ví dụ như một quảng trường thành phố có một nửa ảnh nằm trongbóng của một toà nhà), thì chuẩn hoá độ tương phản toàn cục sẽ đảm bảo rằng

sẽ có sự khác biệt đáng kể về độ sáng giữa vùng sáng và vùng tối Tuy nhiên, nókhông đảm bảo rằng các cạnh trong vùng tối sẽ được làm nổi bật

Điều này khiến chúng ta nghĩ tới chuẩn hoá độ tương phản cục bộ (local

contrast normalization) Độ tương phản cục bộ đảm bảo rằng độ tương phản

sẽ được chuẩn hoá trong từng ô cửa sổ nhỏ, thay vì trên toàn bức ảnh Hình 12.2

so sánh chuẩn hoá độ tương phản toàn cục và sự tương phản cục bộ

Hình 12.2 So sánh giữa chuẩn hoá cục bộ và chuẩn hoá toàn cục Về mặtthị giác, chuẩn hoá toàn cục cho kết quả rõ ràng hơn Nó đưa toàn bộ ảnh về gầnnhư cùng một dải, điều này làm giảm gánh nặng đặt lên các thuật toán học khiphải xử lý nhiều dải khác nhau Chuẩn hoá cục bộ điều chỉnh ảnh nhiều hơn,loại bỏ tất cả các vùng có cường độ bằng hằng Điều này giúp mô hình chỉ tậptrung vào các cạnh Các vùng có kết cấu đều (fine texture) như căn nhà ở hàng

2, có thể mất đi một số chi tiết do băng thông của nhân chuẩn hoá quá cao

Ta có thể định nghĩa độ tương phản cục bộ theo nhiều cách khác nhau Trong tất

cả các trường hợp ta đều điều chỉnh từng điểm ảnh bằng cách trừ chúng cho giátrị trung bình và chia cho độ lệch chuẩn của các điểm ảnh lân cận Trong vàitrường hợp, điều này thực sự là ta sẽ thay đổi theo giá trị trung tâm của cửa sổchữ nhật theo giá trị trung bình và độ lệch chuẩn của tất cả các điểm ảnh trongcửa số đó *(Pinto và đồng nghiệp, 2008) (ND) Trong các trường hợp khác, đó

là giá trị trung bình có trọng số hoặc độ lệch chuẩn có trọng số sử dụng trọng sốtheo phân phối Gauss lấy trung tâm là điểm ảnh cần điều chỉnh

Trang 21

Với trường hợp ảnh màu, ta có một số chiến lược xử lý từng kênh màu tách biệt,trong khi đó, một số chiến lược khác kết hợp thông tin từ các kênh màu khácnhau để chuẩn hoá từng điểm ảnh

Chuẩn hoá độ tương phản cục bộ thường có thể được lập trình hiệu quả bằng

cách sử dụng các phép tích chập tách biệt (xem mục 9.8) để tính toán các bản

đồ(maps) đặc trưng của các giá trị trung bình cục bộ và độ lệch chuẩn cục bộ.Sau đó, ta sẽ dùng phép trừ và phép chia theo từng phần trên từng bản đồ đặctrưng Chuẩn hóa độ tương phản cục bộ là một phép toán khả vi và cũng có thểđược dùng như một phần tử phi tuyến áp dụng cho các tầng ẩn của mạng, cũngnhư một phép toán tiền xử lý áp dụng cho đầu vào

Cũng như độ tương phản toàn cục, ta cần kiểm soát độ tương phản cục bộ đểtránh lỗi chia cho 0 Thực tế, vì độ tương phản cục bộ thường chỉ áp dụng trênmột ô cửa sổ nhỏ, ta còn cẩn kiểm soát nó hơn nữa (ND) Cửa sổ nhỏ hơn dễ cócác giá trị gần nhau hơn, từ đó dễ có độ lệch chuẩn bằng 0 hơn

Tăng cường tập dữ liệu

Như đã nói ở mục 7.4, ta có thể dễ dàng cải thiện tính tổng quát hóa của bộ

phân loại bằng cách tăng cường kích cỡ của tập huấn luyện bằng cách chènthêm các phiên bản tăng thêm (ND) Các phiên bản này là các phiên bản đượcsinh ra từ ví dụ gốc thông qua một số phép biến đổi nhưng không làm thay đổinhãn lớp của ví dụ gốc (ND) Nhận diện vật thể là một công việc phân loại đặcbiệt thích hợp với kiểu tăng cường dữ liệu này vì các lớp bất biến với nhiềuphép biến đổi và đầu vào có thể biến đổi với nhiều phép biến đổi hình học(ND) Như đã nói tới trước đó, ta có thể nâng cao chất lượng bộ phân loại vớicác phép tịnh tiến ngẫu nhiên, quay và trong một số trường hợp là lật ngược ví

dụ đầu vào để tăng cường tập dữ liệu (ND) Trong các ứng dụng thị giác máytính đặc biệt hóa, ta có thể dùng nhiều phép biến đổi nâng cao để tăng cường dữliệu Các phép này bao gồm nhiễu màu sắc một cách ngẫu nhiên trong ảnh[Krizhevsky et al., 2012] và làm méo hình học phi tuyến của đầu vào [LeCun etal., 1998b]

Trang 22

Nhận dạng giọng nói

Nhiệm vụ của bài toán nhận dạng giọng nói đó là ánh xạ tín hiệu âm thanh baogồm tiếng nói giao tiếp thường ngày thành một chuỗi tương ứng các từ ngữ màcon người thường hay sử dụng

Cho X=(x(1),x(1),…,x(T))X=(x(1),x(1),…,x(T)) biểu thị một chuỗi các vectordạng tín hiệu âm thanh đầu vào (thông thường nó được tạo ra bằng cách chiatách âm thanh thành các khung có độ dài 20ms) Hầu hết các hệ thống nhậndạng giọng nói sẽ tiền xử lý các tín hiệu đầu vào bằng cách sử dụng các đặctrưng chuyên biệt của tiếng nói, tuy nhiên thì một số mô hình học sâu (Jaitly andHinton, 2011) cũng có khả năng học các đặc trưng về giọng nói từ dữ liệu đầuvào Gọi y=(y1,y2,…,yN) biểu diễn chuỗi các giá trị mục tiêu đầu ra (thôngthường là một chuỗi các ký tự hoặc từ) Nhiệm vụ của mô hình tự động nhậndạng giọng nói (automatic speech recognition) (ASR-Automatic SpeechRecognition) sẽ bao gồm việc tạo một hàm số f ASR để tính toán tần suất các∗ ∗

từ ngữ y được cho bởi tập dữ liệu tín hiệu âm thanh đầu vào X

sẽ mô hình hóa chuỗi các âm vị Các mô hình HMM-GMM sẽ xử lý sóng âmhọc theo các bước sau: đầu tiên HMM sẽ tạo ra chuỗi các âm vị và các trạngthái rời rạc của âm vị (như ở đầu, giữa hoặc cuối của mỗi âm vị), sau đó một môhình GMM sẽ biến đổi mỗi ký tự rời rạc thành từng đoạn ngắn gọn dưới dạngsóng âm Mặc dù các mô hình GMM-HMM thống trị trong ngành ASR cho đếnhiện nay, tuy nhiên thì hiện nay người ta đã bắt đầu áp dụng mô hình mạng

Trang 23

neural vào nhận dạng giọng nói, và đó cũng là một trong số những ứng dụngcủa mạng neural vào thực tế Từ cuối những năm 1980 đến đầu những năm

1990 thì đã có số lượng lớn các hệ thống nhận dạng giọng nói được áp dụngmạng neural [Bourlard and Wellekens, 1989; Waibel et al., 1989; Robinson andFallside, 1991; Bengio et al., 1991, 1992; Konig et al., 1996] Tại thời điểm nàythì hiệu suất khi sử dụng mô hình mạng neural vào hệ thống nhận dạng tiếng nói

đã xấp xỉ bằng với hiệu suất khi sử dụng mô hình HMM-GMM Ví dụ Robinson

và Fallside (1991) đã đạt được tỉ lệ lỗi âm vị 26% trên bộ dữ liệu TIMIT[Garofolo et al., 1993] (bao gồm 39 âm vị riêng biệt), hiệu suất này đã tốt hơn

so với việc sử dụng hệ thống dựa trên mô hình HMM Kể từ đó, bộ dữ liệuTIMIT là một bộ dữ liệu tiêu chuẩn trong việc đánh giá mô hình nhận dạnggiọng nói, nó đóng vai trò tương đương với bộ dữ liệu MNIST trong nhận dạngđối tượng Tuy nhiên do sự phức tạp liên quan đến hệ thống phần mềm trongviệc triển khai hệ thống nhận dạng giọng nói và những nỗ lực đã gặt gái đượctrong việc xây dựng hệ thống dựa trên GMM-HMM, thì thời điểm đó ta chưa cóđược những lý do thuyết phục để có thể chuyển sang áp dụng mô hình mạngneural vào nhận dạng giọng nói Kết quả là cho đến đầu những năm 2000, cảtrong nghiên cứu và thực tiễn thì mạng neural chỉ được áp dụng trong việc họctăng cường các đặc trưng cho hệ thống GMM-HMM

Sau đó, với những mô hình học máy sâu hơn và lớn hơn và với tập dữ liệu lớnhơn nhiều lần, tỉ lệ chính xác trong việc nhận dạng đã được cải thiện một cáchđáng kể khi sử dụng mạng neural thay thế các mô hình GMM trong việc kết hợpcác đặc trưng âm học với âm vị Bắt đầu từ năm 2009, các nhà nghiên cứu giọngnói đã áp dụng các mô hình học sâu dựa trên phương pháp học không giám sát

để nhận dạng giọng nói Cách tiếp cận với học sâu dựa trên các mô hình huấnluyện xác suất không xác định gọi là mô hinh Boltzmann Machines hạn chế(RBM- Restricted Boltzmann Machines) để mô hình hóa dữ liệu đầu vào

RBM đã được mô tả ở phần III Để giải quyết các bài toán nhận dạng giọng nói,phương pháp tiền huấn luyện không giám sát đã được sử dụng để xây dựng mô

Trang 24

hình mạng học sâu lan truyền thuận, nó bao gồm các lớp mà mỗi lớp được khởitạo bằng việc huấn luyện theo RBM Các mạng này biểu diễn phổ của tín hiệu

âm thanh dưới dạng một cửa sổ dữ liệu đầu vào có kích thước cố định (xungquanh khung trung tâm) và dự đoán xác suất có điều kiện trạng thái của HMMcho khung trung tâm đó Việc huấn luyện các mạng học sâu như vậy đã làm cảithiện đáng kể tỉ lệ nhận dạng trên bộ dữ liệu TIMIT [Mohamed et al., 2009,2012a], đưa tỉ lệ lỗi âm vị từ 26 % xuống còn 20.7 % Mohamed và đồngnghiệp (2012b) đã phân tích lý do đạt tỉ lệ nhận dạng cao của mô hình Việc mởrộng nguồn nhận dạng tiếng nói cơ bản bao gồm việc thêm vào các đặc trưngthích ứng với tiếng nói đã dẫn đến việc giảm tỉ lệ nhận dạng lỗi của mô hình.Điều này đã nhanh chóng được áp dụng để mở rộng bài toán từ nhận dạng âm vịthành hệ thống nhận dạng tiếng nói có lượng từ cực lớn, nó không chỉ được ápdụng cho nhận dạng âm vị (sử dụng bộ dữ liệu TIMIT) mà còn được áp dụngcho việc nhận dạng chuỗi các từ khóa trong bộ từ điển lớn Mạng học sâu được

áp dụng cho bài toán nhận dạng giọng nói cuối cùng đã được chuyển đổi từ việcdựa trên tiền huấn luyện và mô hình Boltzmann machine thành các kỹ thuật nhưkhối chỉnh lưu tuyến tính (rectified linear units) và cơ chế ngắt ngẫu nhiên(dropout) Thời điểm đó, có rất nhiều các nhóm lớn trong ngành đã bắt đầu hợptác với các các nhà nghiên cứu học thuật về việc áp dụng các mô hình mạng họcsâu Hinton và đồng nghiệp (2012a) đã mô tả những thành quả đột phá mà ngàynay được áp dụng triển khai vào thực tế trên các thiết bị điện thoại di động, đạtđược từ sự cộng tác này

Sau đó, các nhóm này áp dụng với các bộ dữ liệu ngày càng lớn và kết hợp vớicác phương pháp cho việc khởi tạo, huấn luyện và thiết lập xây dựng mạng họcsâu, họ nhận ra rằng việc tiền huấn luyện không giám sát giờ đây là không cầnthiết nữa và nó cũng không tác động đến việc cải thiện tỉ lệ nhận dạng

Những đột phá về tỉ lệ nhận dạng lỗi trong bài toán nhận dạng giọng nói khia ápdụng mạng học sâu giờ đây được cải thiện không ngừng (cải thiện khoảng 30 %hiệu suất) trong một thời gian dài, khoảng mười năm Trong khi đó thì hiệu suất

Trang 25

nhận dạng khi áp dụng các kỹ thuật truyền thống dựa trên GMM-HMM khôngđược cải thiện, mặc dù kích thước của dữ liệu huấn luyện ngày càng lớn (xemhình 2.4 của Deng và Yu [2014]) Điều này đã tạo một làn sóng trong cộng đồngnghiên cứu nhận dạng giọng nói trong việc chuyển đổi sang nghiên cứu áp dụngcác mô hình học sâu Trong khoảng vài năm trở lại đây, phần lớn các sản phẩmứng dung nhận dạng giọng nói đều dựa trên mô hình học sâu, thành công nàycũng khiến cho các nhà nghiên cứu trên thế giới đổ vào nghiên cứu các thuậttoán học sâu và áp dụng chúng cho hệ thống tự động nhận dạng ARS

Một trong số những khám phá mới đó là sử dụng mạng neural tích chập[Sainath et al.,

2013] trong việc sao chép các trọng số theo thời gian và tần số, cải thiện thờigian chậm trễ mạng neural Mô hình tích chập hai chiều coi ảnh phổ khônggiống như một vector mà là một ảnh với một trục tương ứng với thành phần vềthời gian còn trục còn lại tương ứng với thành phần tần số

Một động lực quan trọng khác đó là loại bỏ hoàn toàn mô hình HMM ra khỏicác hệ thống nhận dạng giọng nói Đột phá lớn đầu tiên theo hướng đi này làcủa Graves và đồng nghiệp (2013), người đã huấn luyện một mạng LSTM RNN(xem mục 10.10) sử dụng suy luận MAP liên kết khung và âm vị (frame-to-phoneme) như trong [LeCun et al (1998b)] và CTC framework [Graves etal.,2006; Graves, 2012] đã đưa ra Một mạng học sâu RNN có các biến trạngthái từ nhiều lớp, đưa ra một mô hình với hai loại học sâu: học sâu thông thường

do một dãy xếp chồng các lớp, và học sâu theo thời gian Phương pháp này đãđưa tỉ lệ lỗi âm vị trong bộ dữ liệu TIMIT giảm xuống còn 17.7 %

Một hướng phát triển khác hiện tại trong việc đưa mô hình học sâu áp dụng từđầu đến cuối vào bài toán ASR đó là để cho mô hình tự học làm cách nào để sắpxếp theo mức độ quan trọng cho các thông tin về mức độ âm vị [Chorowski etal., 2014; Lu et al., 2015]

Trang 26

Xử lý ngôn ngữ tự nhiên

Xử lý ngôn ngữ tự nhiên (NLP-Natural Language Processing) là “dạy” cho máytính có thể sử dụng các ngôn ngữ của con người như tiếng Anh, tiếng Pháp Xử

lý ngôn ngữ tự nhiên bao gồm nhiều ứng dụng ví dụ như dịch máy, trong đó nó

sẽ phải đọc một câu hay một đoạn văn bản từ một ngôn ngữ, sau đó dịch câu đósang một ngôn ngữ khác Rất nhiều các ứng dụng NLP dựa trên mô hình ngônngữ là phân phối xác suất của các từ khóa, ký tự, hay giá trị byte trong một ngônngữ tự nhiên thông thường

Với các ứng dụng khác nhau được thảo luận trong chương này, có rất nhiều các

kỹ thuật sử dụng mạng neural được áp dụng thành công vào xử lý ngôn ngữ tựnhiên Để đạt được hiệu quả tốt nhất, và triển khai trên nhiều ứng dụng, một vàichiến lược trên các lĩnh vực chuyên biệt (domain-specific) trở nên quan trọnghơn Để xây dựng một mô hình hiệu quả, của NLP, chúng ta phải luôn luôn sửdụng các kỹ thuật cụ thể cho việc xử lý luồng dữ liệu liên tục Trong nhiềutrường hợp, chúng ta cần coi ngôn ngữ tự nhiên là một chuỗi các từ ngữ hơn làviệc coi chúng như một chuỗi các ký tự hoặc Bởi vì tổng số lượng các từ ngữ

là cực lớn, các mô hình dựa trên từ ngữ phải hoạt động tốt trên miền không gian

dữ liệu có nhiều chiều và rời rạc Có một vài chiến lược được phát triển để tạo

ra các mô hình trên các miền không gian như vậy

n-grams

Một mô hình ngôn ngữ được coi như một phân phối xác suất một chuỗi cáctoken trong một ngôn ngữ tự nhiên Phụ thuộc vào cách thiết kế mô hình, mộttoken có thể là một từ, một ký tự hay một byte dữ liệu Token luôn luôn là mộtthực thể rời rạc và độc lập Các mô hình ngôn ngữ thành công sớm đều dựa trêncác chuỗi token được cố định về kích thước hay còn gọi là n-grams Một n-grams là một chuỗi n tokens

Ngày đăng: 04/08/2020, 00:42

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w