Python cho AI và ML
Nếu bạn mới bắt đầu làm quen với thế giới trí tuệ nhân tạo (AI), thì Python là một ngôn ngữ tuyệt vời để học vì hầu hết các công cụ đều được xây dựng bằng ngôn ngữ này. Học sâu là một kỹ thuật được sử dụng để đưa ra dự đoán bằng cách sử dụng dữ liệu và nó phụ thuộc rất nhiều vào mạng lưới thần kinh. Hôm nay, bạn sẽ học cách xây dựng mạng lưới thần kinh từ đầu Show
Trong cài đặt sản xuất, bạn sẽ sử dụng khung học sâu như TensorFlow hoặc PyTorch thay vì xây dựng mạng thần kinh của riêng mình. Điều đó nói rằng, có một số kiến thức về cách thức hoạt động của mạng thần kinh là hữu ích vì bạn có thể sử dụng nó để kiến trúc tốt hơn các mô hình học sâu của mình Trong hướng dẫn này, bạn sẽ học
Bắt đầu nào Tiền thưởng miễn phí. hướng dẫn bạn các hướng dẫn, video và sách tốt nhất để cải thiện kỹ năng NumPy của bạn Tổng quan về trí tuệ nhân tạoVề cơ bản, mục tiêu của việc sử dụng AI là làm cho máy tính suy nghĩ như con người. Điều này có vẻ giống như một cái gì đó mới, nhưng lĩnh vực này đã ra đời từ những năm 1950 Hãy tưởng tượng rằng bạn cần viết một chương trình Python sử dụng AI để. Một cách để thực hiện điều đó là viết các câu lệnh có điều kiện và kiểm tra các ràng buộc để xem liệu bạn có thể đặt một số vào mỗi vị trí không. Chà, tập lệnh Python này đã là một ứng dụng của AI vì bạn đã lập trình máy tính để giải quyết vấn đề Học máy (ML) và học sâu (DL) cũng là những cách tiếp cận để giải quyết vấn đề. Sự khác biệt giữa các kỹ thuật này và tập lệnh Python là ML và DL sử dụng dữ liệu đào tạo thay vì các quy tắc được mã hóa cứng, nhưng tất cả chúng đều có thể được sử dụng để giải quyết vấn đề bằng AI. Trong các phần tiếp theo, bạn sẽ tìm hiểu thêm về điểm khác biệt của hai kỹ thuật này Loại bỏ các quảng cáoHọc máyHọc máy là một kỹ thuật trong đó bạn đào tạo hệ thống để giải quyết vấn đề thay vì lập trình các quy tắc một cách rõ ràng. Quay lại ví dụ sudoku trong phần trước, để giải quyết vấn đề bằng cách sử dụng máy học, bạn sẽ thu thập dữ liệu từ các trò chơi sudoku đã giải và đào tạo một mô hình thống kê. Các mô hình thống kê là những cách được hình thức hóa về mặt toán học để tính gần đúng hành vi của một hiện tượng Một nhiệm vụ học máy phổ biến là học có giám sát, trong đó bạn có một tập dữ liệu với đầu vào và đầu ra đã biết. Nhiệm vụ là sử dụng bộ dữ liệu này để đào tạo một mô hình dự đoán đầu ra chính xác dựa trên các đầu vào. Hình ảnh bên dưới trình bày quy trình đào tạo một mô hình bằng cách sử dụng phương pháp học có giám sát Quy trình làm việc để đào tạo một mô hình học máySự kết hợp của dữ liệu đào tạo với thuật toán học máy tạo ra mô hình. Sau đó, với mô hình này, bạn có thể đưa ra dự đoán cho dữ liệu mới Ghi chú. scikit-learning là một thư viện máy học Python phổ biến cung cấp nhiều thuật toán học có giám sát và không giám sát. Để tìm hiểu thêm về nó, hãy xem Split Your Dataset With scikit-learn's train_test_split() Mục tiêu của các nhiệm vụ học tập có giám sát là đưa ra dự đoán cho dữ liệu mới, chưa nhìn thấy. Để làm điều đó, bạn giả sử rằng dữ liệu không nhìn thấy này tuân theo phân phối xác suất tương tự như phân phối của tập dữ liệu huấn luyện. Nếu trong tương lai, phân phối này thay đổi, thì bạn cần huấn luyện lại mô hình của mình bằng tập dữ liệu huấn luyện mới Kỹ thuật tính năngVấn đề dự đoán trở nên khó khăn hơn khi bạn sử dụng các loại dữ liệu khác nhau làm đầu vào. Vấn đề sudoku tương đối đơn giản vì bạn đang xử lý trực tiếp các con số. Nếu bạn muốn đào tạo một mô hình để dự đoán tình cảm trong một câu thì sao? Một tên gọi khác của dữ liệu đầu vào là tính năng và kỹ thuật tính năng là quá trình trích xuất các tính năng từ dữ liệu thô. Khi xử lý các loại dữ liệu khác nhau, bạn cần tìm ra cách biểu diễn dữ liệu này để trích xuất thông tin có ý nghĩa từ nó Một ví dụ về kỹ thuật công nghệ tính năng là, trong đó bạn loại bỏ biến tố khỏi các từ trong câu. Ví dụ: các dạng biến cách của động từ “watch”, như “watches”, “watching” và “watched” sẽ được rút gọn thành bổ đề hoặc dạng cơ sở của chúng. "đồng hồ. ” Nếu bạn đang sử dụng mảng để lưu trữ từng từ của kho văn bản, thì bằng cách áp dụng từ vựng, bạn sẽ có một ma trận ít thưa thớt hơn. Điều này có thể tăng hiệu suất của một số thuật toán học máy. Hình ảnh sau đây trình bày quá trình từ vựng hóa và biểu diễn bằng mô hình túi từ Tạo các tính năng bằng mô hình túi từĐầu tiên, dạng biến cách của mọi từ được rút gọn thành bổ đề của nó. Sau đó, số lần xuất hiện của từ đó được tính. Kết quả là một mảng chứa số lần xuất hiện của mỗi từ trong văn bản Học kĩ càngHọc sâu là một kỹ thuật trong đó bạn để mạng thần kinh tự tìm ra tính năng nào là quan trọng thay vì áp dụng các kỹ thuật kỹ thuật tính năng. Điều này có nghĩa là với deep learning, bạn có thể bỏ qua quy trình kỹ thuật tính năng Không phải đối phó với kỹ thuật tính năng là tốt vì quá trình này trở nên khó khăn hơn khi bộ dữ liệu trở nên phức tạp hơn. Ví dụ: làm thế nào bạn có thể trích xuất dữ liệu để dự đoán tâm trạng của một người khi được chụp ảnh khuôn mặt của cô ấy? . Trong các phần tiếp theo, bạn sẽ tìm hiểu sâu hơn về mạng lưới thần kinh để hiểu rõ hơn về cách thức hoạt động của chúng Mạng thần kinh. Khái niệm chínhMạng thần kinh là một hệ thống học cách đưa ra dự đoán bằng cách làm theo các bước sau
Vectơ, lớp và hồi quy tuyến tính là một số khối xây dựng của mạng lưới thần kinh. Dữ liệu được lưu trữ dưới dạng vectơ và với Python, bạn lưu trữ các vectơ này trong mảng. Mỗi lớp biến đổi dữ liệu đến từ lớp trước. Bạn có thể coi mỗi lớp là một bước kỹ thuật tính năng, bởi vì mỗi lớp trích xuất một số biểu diễn của dữ liệu xuất hiện trước đó Một điều thú vị về các lớp mạng thần kinh là các tính toán tương tự có thể trích xuất thông tin từ bất kỳ loại dữ liệu nào. Điều này có nghĩa là bạn đang sử dụng dữ liệu hình ảnh hay dữ liệu văn bản đều không thành vấn đề. Quá trình trích xuất thông tin có ý nghĩa và đào tạo mô hình học sâu là giống nhau cho cả hai kịch bản Trong hình bên dưới, bạn có thể thấy một ví dụ về kiến trúc mạng có hai lớp Mạng nơ-ron hai lớpMỗi lớp biến đổi dữ liệu đến từ lớp trước bằng cách áp dụng một số phép toán Loại bỏ các quảng cáoQuá trình đào tạo một mạng lưới thần kinhĐào tạo một mạng lưới thần kinh tương tự như quá trình thử và sai. Hãy tưởng tượng bạn đang chơi phi tiêu lần đầu tiên. Trong lần ném đầu tiên, bạn cố gắng ném trúng tâm của bảng phi tiêu. Thông thường, cú đánh đầu tiên chỉ là để biết chiều cao và tốc độ của bàn tay bạn ảnh hưởng đến kết quả như thế nào. Nếu bạn thấy phi tiêu cao hơn tâm điểm thì bạn điều chỉnh tay ném thấp hơn một chút, v.v. Đây là các bước để cố gắng bắn trúng tâm của bảng phi tiêu Các bước để đánh vào tâm của bảng phi tiêuLưu ý rằng bạn tiếp tục đánh giá lỗi bằng cách quan sát nơi phi tiêu tiếp đất (bước 2). Bạn tiếp tục cho đến khi cuối cùng bạn chạm vào tâm của bảng phi tiêu Với mạng lưới thần kinh, quá trình này rất giống nhau. bạn bắt đầu với một số trọng số ngẫu nhiên và vectơ độ lệch, đưa ra dự đoán, so sánh nó với đầu ra mong muốn và điều chỉnh vectơ để dự đoán chính xác hơn vào lần tiếp theo. Quá trình tiếp tục cho đến khi sự khác biệt giữa dự đoán và mục tiêu chính xác là tối thiểu Biết khi nào nên dừng đào tạo và đặt mục tiêu chính xác nào là một khía cạnh quan trọng của việc đào tạo mạng lưới thần kinh, chủ yếu là do các tình huống Vectơ và trọng sốLàm việc với mạng thần kinh bao gồm thực hiện các thao tác với vectơ. Bạn biểu diễn các vectơ dưới dạng mảng nhiều chiều. Các vectơ hữu ích trong học sâu chủ yếu là do một thao tác cụ thể. sản phẩm chấm. Tích vô hướng của hai vectơ cho bạn biết chúng giống nhau như thế nào về hướng và được chia tỷ lệ theo độ lớn của hai vectơ Các vectơ chính bên trong mạng nơ-ron là các vectơ trọng số và độ chệch. Nói một cách lỏng lẻo, những gì bạn muốn mạng thần kinh của mình thực hiện là kiểm tra xem đầu vào có giống với các đầu vào khác mà nó đã thấy hay không. Nếu đầu vào mới tương tự như đầu vào đã thấy trước đó, thì đầu ra cũng sẽ tương tự. Đó là cách bạn nhận được kết quả của một dự đoán Mô hình hồi quy tuyến tínhHồi quy được sử dụng khi bạn cần ước tính mối quan hệ giữa một biến phụ thuộc và hai hoặc nhiều biến độc lập. Hồi quy tuyến tính là một phương pháp được áp dụng khi bạn tính gần đúng mối quan hệ giữa các biến dưới dạng tuyến tính. Phương pháp này có từ thế kỷ 19 và là phương pháp hồi quy phổ biến nhất Ghi chú. Mối quan hệ tuyến tính là mối quan hệ có mối quan hệ trực tiếp giữa biến độc lập và biến phụ thuộc Bằng cách mô hình hóa mối quan hệ giữa các biến dưới dạng tuyến tính, bạn có thể biểu thị biến phụ thuộc dưới dạng tổng trọng số của các biến độc lập. Vì vậy, mỗi biến độc lập sẽ được nhân với một vectơ có tên là 7. Bên cạnh các trọng số và các biến độc lập, bạn cũng thêm một véc tơ khác. sự thiện vị. Nó đặt kết quả khi tất cả các biến độc lập khác bằng 0Như một ví dụ thực tế về cách xây dựng mô hình hồi quy tuyến tính, hãy tưởng tượng bạn muốn đào tạo một mô hình để dự đoán giá nhà dựa trên diện tích và tuổi của ngôi nhà. Bạn quyết định mô hình hóa mối quan hệ này bằng hồi quy tuyến tính. Khối mã sau đây cho thấy cách bạn có thể viết mô hình hồi quy tuyến tính cho vấn đề đã nêu trong mã giả
Trong ví dụ trên, có hai trọng số. 8 và 9. Quá trình đào tạo bao gồm điều chỉnh trọng số và độ lệch để mô hình có thể dự đoán đúng giá trị. Để thực hiện điều đó, bạn sẽ cần tính toán lỗi dự đoán và cập nhật trọng số tương ứngĐây là những điều cơ bản về cách thức hoạt động của cơ chế mạng lưới thần kinh. Bây giờ là lúc xem cách áp dụng các khái niệm này bằng Python Trăn AI. Bắt đầu xây dựng mạng lưới thần kinh đầu tiên của bạnBước đầu tiên trong việc xây dựng mạng thần kinh là tạo đầu ra từ dữ liệu đầu vào. Bạn sẽ làm điều đó bằng cách tạo tổng trọng số của các biến. Điều đầu tiên bạn cần làm là biểu diễn các đầu vào bằng Python và NumPy Loại bỏ các quảng cáoGói các đầu vào của mạng nơ-ron bằng NumPyBạn sẽ sử dụng NumPy để biểu diễn các vectơ đầu vào của mạng dưới dạng mảng. Nhưng trước khi bạn sử dụng NumPy, bạn nên chơi với các vectơ bằng Python thuần túy để hiểu rõ hơn điều gì đang xảy ra Trong ví dụ đầu tiên này, bạn có một vectơ đầu vào và hai vectơ trọng số khác. Mục tiêu là tìm ra trọng số nào giống với đầu vào hơn, có tính đến hướng và độ lớn. Đây là cách các vectơ trông nếu bạn vẽ chúng Ba vectơ trong một mặt phẳng tọa độ Descartes 0 giống với vectơ đầu vào hơn vì nó chỉ theo cùng một hướng và độ lớn cũng tương tự. Vậy làm thế nào để bạn tìm ra các vectơ nào giống nhau khi sử dụng Python?Đầu tiên, bạn xác định ba vectơ, một cho đầu vào và hai vectơ còn lại cho trọng số. Sau đó, bạn tính xem 1 và 2 giống nhau như thế nào. Để làm điều đó, bạn sẽ áp dụng sản phẩm chấm. Vì tất cả các vectơ đều là vectơ hai chiều nên đây là các bước để thực hiện
Bạn có thể sử dụng bảng điều khiển IPython hoặc Notebook Jupyter để theo dõi. Bạn nên tạo một môi trường ảo mới mỗi khi bắt đầu một dự án Python mới, vì vậy bạn nên làm điều đó trước. 7 xuất xưởng với phiên bản Python 3. 3 trở lên và tiện dụng để tạo môi trường ảo
Sử dụng các lệnh trên, trước tiên bạn tạo môi trường ảo, sau đó bạn kích hoạt nó. Bây giờ là lúc cài đặt bảng điều khiển IPython bằng cách sử dụng 8. Vì bạn cũng sẽ cần NumPy và Matplotlib, nên bạn cũng nên cài đặt chúng
Bây giờ bạn đã sẵn sàng để bắt đầu viết mã. Đây là mã để tính tích vô hướng của 1 và 2>>>
Kết quả của tích vô hướng là 1. Bây giờ bạn đã biết cách tính tích vô hướng, đã đến lúc sử dụng 2 từ NumPy. Đây là cách tính toán 3 bằng cách sử dụng 2>>>
2 thực hiện tương tự như bạn đã làm trước đây, nhưng bây giờ bạn chỉ cần chỉ định hai mảng làm đối số. Bây giờ hãy tính tích vô hướng của 1 và 0>>>
Lần này, kết quả là 8. Là một cách nghĩ khác về tích vô hướng, bạn có thể coi sự giống nhau giữa các tọa độ vectơ là một công tắc bật tắt. Nếu kết quả phép nhân là 9, thì bạn sẽ nói rằng tọa độ không giống nhau. Nếu kết quả là một cái gì đó khác với 9, thì bạn sẽ nói rằng chúng giống nhauBằng cách này, bạn có thể xem sản phẩm chấm như một phép đo lỏng lẻo về độ tương tự giữa các vectơ. Mỗi khi kết quả phép nhân là 9 thì tích cuối cùng sẽ có kết quả thấp hơn. Quay trở lại với các vectơ của ví dụ, vì tích vô hướng của 1 và 0 là 8 và 8 lớn hơn 1, điều đó có nghĩa là 1 giống với 0 hơn. Bạn sẽ sử dụng cơ chế tương tự này trong mạng thần kinh của mìnhGhi chú. Nhấp vào dấu nhắc (>>>) ở trên cùng bên phải của mỗi khối mã nếu bạn cần sao chép và dán mã đó Trong hướng dẫn này, bạn sẽ đào tạo một mô hình để đưa ra dự đoán chỉ có hai kết quả có thể xảy ra. Kết quả đầu ra có thể là 9 hoặc 0. Đây là một bài toán phân loại, một tập hợp con của các bài toán học có giám sát trong đó bạn có một tập dữ liệu với đầu vào và mục tiêu đã biết. Đây là đầu vào và đầu ra của tập dữ liệuMục tiêu vectơ đầu vào [1. 66, 1. 56]1[2, 1. 5]0 Mục tiêu là biến bạn muốn dự đoán. Trong ví dụ này, bạn đang xử lý một tập dữ liệu bao gồm các số. Điều này không phổ biến trong một kịch bản sản xuất thực tế. Thông thường, khi có nhu cầu về mô hình học sâu, dữ liệu được trình bày dưới dạng tệp, chẳng hạn như hình ảnh hoặc văn bản Loại bỏ các quảng cáoĐưa ra dự đoán đầu tiên của bạnVì đây là mạng thần kinh đầu tiên của bạn nên bạn sẽ giữ mọi thứ đơn giản và xây dựng một mạng chỉ có hai lớp. Cho đến giờ, bạn đã thấy rằng hai phép toán duy nhất được sử dụng bên trong mạng thần kinh là tích vô hướng và tổng. Cả hai đều hoạt động tuyến tính Nếu bạn thêm nhiều lớp hơn nhưng chỉ tiếp tục sử dụng các phép toán tuyến tính, thì việc thêm nhiều lớp hơn sẽ không có tác dụng vì mỗi lớp sẽ luôn có một số tương quan với đầu vào của lớp trước đó. Điều này ngụ ý rằng, đối với một mạng có nhiều lớp, sẽ luôn có một mạng có ít lớp hơn dự đoán cùng một kết quả Điều bạn muốn là tìm một thao tác làm cho các lớp ở giữa đôi khi tương quan với đầu vào và đôi khi không tương quan Bạn có thể đạt được hành vi này bằng cách sử dụng các hàm phi tuyến tính. Các hàm phi tuyến này được gọi là các hàm kích hoạt. Có nhiều loại hàm kích hoạt. Ví dụ: ReLU (đơn vị tuyến tính được chỉnh lưu) là một hàm chuyển đổi tất cả các số âm thành 0. Điều này có nghĩa là mạng có thể “tắt” một trọng số nếu nó âm, làm tăng tính phi tuyến tính Mạng bạn đang xây dựng sẽ sử dụng chức năng kích hoạt sigmoid. Bạn sẽ sử dụng nó ở lớp cuối cùng, 1. Hai đầu ra duy nhất có thể có trong tập dữ liệu là 9 và 0 và hàm sigmoid giới hạn đầu ra trong phạm vi giữa 9 và 0. Đây là công thức để thể hiện hàm sigmoidCông thức hàm sigmoidE là một hằng số toán học được gọi là số Euler và bạn có thể sử dụng 6 để tính eˣCác hàm xác suất cung cấp cho bạn xác suất xảy ra đối với các kết quả có thể xảy ra của một sự kiện. Hai đầu ra khả dĩ duy nhất của tập dữ liệu là 9 và 0, và phân phối Bernoulli là một phân phối cũng có hai kết quả có thể xảy ra. Hàm sigmoid là một lựa chọn tốt nếu vấn đề của bạn tuân theo phân phối Bernoulli, vì vậy đó là lý do tại sao bạn đang sử dụng nó ở lớp cuối cùng của mạng lưới thần kinh của mìnhVì hàm giới hạn đầu ra trong phạm vi từ 9 đến 0, nên bạn sẽ sử dụng hàm này để dự đoán xác suất. Nếu đầu ra lớn hơn 1, thì bạn sẽ nói dự đoán là 0. Nếu nó ở dưới 1, thì bạn sẽ nói dự đoán là 9. Đây là luồng tính toán bên trong mạng mà bạn đang xây dựngLuồng tính toán bên trong mạng thần kinh của bạnCác hình lục giác màu vàng biểu thị các chức năng và các hình chữ nhật màu xanh biểu thị các kết quả trung gian. Bây giờ là lúc biến tất cả kiến thức này thành mã. Bạn cũng sẽ cần bọc các vectơ bằng mảng NumPy. Đây là đoạn mã áp dụng các chức năng được trình bày trong hình trên >>>
Kết quả dự đoán thô là 5, cao hơn 1, vì vậy kết quả đầu ra là 0. Mạng đã dự đoán chính xác. Bây giờ hãy thử với một vectơ đầu vào khác, 8. Kết quả chính xác cho đầu vào này là 9. Bạn chỉ cần thay đổi biến 1 vì tất cả các tham số khác vẫn giữ nguyên>>>
Lần này, mạng đã dự đoán sai. Kết quả phải nhỏ hơn 1 vì mục tiêu cho đầu vào này là 9, nhưng kết quả thô là 3. Nó đã đoán sai, nhưng sai lầm tệ đến mức nào? Huấn luyện mạng lưới thần kinh đầu tiên của bạnTrong quá trình huấn luyện mạng nơ-ron, đầu tiên bạn đánh giá lỗi và sau đó điều chỉnh trọng số cho phù hợp. Để điều chỉnh trọng số, bạn sẽ sử dụng thuật toán giảm độ dốc và lan truyền ngược. Độ dốc gốc được áp dụng để tìm hướng và tốc độ cập nhật các thông số Trước khi thực hiện bất kỳ thay đổi nào trong mạng, bạn cần tính toán lỗi. Đó là những gì bạn sẽ làm trong phần tiếp theo Tính toán lỗi dự đoánĐể hiểu mức độ của lỗi, bạn cần chọn một cách để đo lường nó. Hàm được sử dụng để đo lỗi được gọi là hàm chi phí hoặc hàm mất mát. Trong hướng dẫn này, bạn sẽ sử dụng lỗi bình phương trung bình (MSE) làm hàm chi phí của mình. Bạn tính toán MSE theo hai bước
Mạng có thể mắc lỗi khi xuất ra giá trị cao hơn hoặc thấp hơn giá trị chính xác. Vì MSE là bình phương chênh lệch giữa dự đoán và kết quả chính xác, nên với số liệu này, bạn sẽ luôn nhận được giá trị dương Đây là biểu thức hoàn chỉnh để tính toán lỗi cho dự đoán cuối cùng trước đó >>>
Trong ví dụ trên, lỗi là 4. Một ý nghĩa của việc nhân sự khác biệt lên chính nó là các lỗi lớn hơn có tác động thậm chí còn lớn hơn và các lỗi nhỏ hơn tiếp tục nhỏ hơn khi chúng giảm đi.Loại bỏ các quảng cáoHiểu cách giảm lỗiMục tiêu là thay đổi trọng số và các biến thiên vị để bạn có thể giảm sai số. Để hiểu cách thức hoạt động của điều này, bạn sẽ chỉ thay đổi biến trọng số và giữ nguyên độ lệch hiện tại. Bạn cũng có thể loại bỏ hàm sigmoid và chỉ sử dụng kết quả của 5. Tất cả những gì còn lại là tìm ra cách bạn có thể sửa đổi các trọng số để sai số giảm xuốngBạn tính toán MSE bằng cách thực hiện 6. Nếu bạn coi 7 là một biến duy nhất 8, thì bạn có 9, là một hàm bậc hai. Đây là cách chức năng trông nếu bạn vẽ nóĐồ thị của hàm bậc haiLỗi được đưa ra bởi trục y. Nếu bạn đang ở điểm 0 và muốn giảm sai số về 0, thì bạn cần giảm giá trị 8 xuống. Mặt khác, nếu bạn đang ở điểm 2 và muốn giảm sai số, thì bạn cần tăng giá trị 8 lên. Để biết bạn nên đi theo hướng nào để giảm sai số, bạn sẽ sử dụng đạo hàm. Một công cụ phái sinh giải thích chính xác cách một mô hình sẽ thay đổiMột từ khác cho đạo hàm là gradient. Độ dốc gốc là tên của thuật toán được sử dụng để tìm hướng và tốc độ cập nhật các tham số mạng Ghi chú. Để tìm hiểu thêm về toán học đằng sau việc giảm dần độ dốc, hãy xem Thuật toán giảm dần độ dốc ngẫu nhiên với Python và NumPy Trong hướng dẫn này, bạn sẽ không tập trung vào lý thuyết đằng sau các đạo hàm, vì vậy bạn sẽ chỉ cần áp dụng các quy tắc đạo hàm cho từng hàm mà bạn sẽ gặp. Quy tắc lũy thừa nói rằng đạo hàm của xⁿ là nx⁽ⁿ⁻¹⁾. Vậy đạo hàm của _______65_______4 là _______65_______5, và đạo hàm của _______61_______8 là _______26_______0 Hãy nhớ rằng biểu thức lỗi là 6. Khi bạn coi ________ 61 _______7 là một biến duy nhất ________ 61 _____8, đạo hàm của sai số là 5. Bằng cách lấy đạo hàm của hàm này, bạn muốn biết bạn nên thay đổi 8 theo hướng nào để đưa kết quả của 3 về 0, do đó giảm sai sốKhi nói đến mạng thần kinh của bạn, đạo hàm sẽ cho bạn biết hướng bạn nên thực hiện để cập nhật biến trọng số. Nếu đó là một số dương, thì bạn đã dự đoán quá cao và bạn cần giảm trọng số. Nếu đó là một số âm, thì bạn đã dự đoán quá thấp và bạn cần tăng trọng số Bây giờ là lúc viết mã để tìm ra cách cập nhật 2 cho dự đoán sai trước đó. Nếu sai số bình phương trung bình là 4, thì bạn nên tăng hay giảm trọng số? >>>
Kết quả là ________ 85 ______ 8, một số dương, vì vậy bạn cần giảm trọng số. Bạn làm điều đó bằng cách trừ kết quả đạo hàm của vectơ trọng số. Bây giờ bạn có thể cập nhật 2 tương ứng và dự đoán lại để xem nó ảnh hưởng như thế nào đến kết quả dự đoán>>> 0Lỗi giảm xuống gần như 9. Đẹp, phải không? . Lấy hình ảnh của hàm bậc hai làm ví dụ. Mức tăng cao không phải là lý tưởng vì bạn có thể tiếp tục đi thẳng từ điểm 0 đến điểm 2, không bao giờ tiến gần đến số không. Để đối phó với điều đó, bạn cập nhật trọng số bằng một phần nhỏ của kết quả đạo hàmĐể xác định một phân số để cập nhật trọng số, bạn sử dụng tham số alpha, còn được gọi là tỷ lệ học tập. Nếu bạn giảm tốc độ học tập, thì số gia sẽ nhỏ hơn. Nếu bạn tăng nó, thì các bước cao hơn. Làm thế nào để bạn biết giá trị tỷ lệ học tập tốt nhất là gì? Ghi chú. Các giá trị tỷ lệ học tập mặc định truyền thống là 03, 04 và 05Nếu bạn lấy các trọng số mới và đưa ra dự đoán với vectơ đầu vào đầu tiên, thì bạn sẽ thấy rằng bây giờ nó đưa ra dự đoán sai cho vectơ đó. Nếu mạng thần kinh của bạn đưa ra dự đoán chính xác cho mọi trường hợp trong tập huấn luyện của bạn, thì bạn có thể có một mô hình được trang bị quá mức, trong đó mô hình chỉ ghi nhớ cách phân loại các ví dụ thay vì học cách chú ý các tính năng trong dữ liệu Có những kỹ thuật để tránh điều đó, bao gồm cả việc chính quy hóa. Trong hướng dẫn này, bạn sẽ sử dụng Bây giờ bạn đã biết cách tính toán lỗi và cách điều chỉnh trọng số cho phù hợp, đã đến lúc quay lại tiếp tục xây dựng mạng lưới thần kinh của bạn Loại bỏ các quảng cáoÁp dụng quy tắc chuỗiTrong mạng thần kinh của bạn, bạn cần cập nhật cả trọng số và vectơ sai lệch. Hàm bạn đang sử dụng để đo lỗi phụ thuộc vào hai biến độc lập, trọng số và độ lệch. Vì trọng số và độ lệch là các biến độc lập nên bạn có thể thay đổi và điều chỉnh chúng để có được kết quả mong muốn Mạng bạn đang xây dựng có hai lớp và vì mỗi lớp có các chức năng riêng nên bạn đang xử lý thành phần chức năng. Điều này có nghĩa là hàm lỗi vẫn là 4, nhưng bây giờ 8 là kết quả của một hàm khácĐể trình bày lại vấn đề, bây giờ bạn muốn biết cách thay đổi 2 và 09 để giảm lỗi. Bạn đã thấy rằng bạn có thể sử dụng đạo hàm cho việc này, nhưng thay vì một hàm chỉ có tổng bên trong, bây giờ bạn có một hàm tạo ra kết quả của nó bằng cách sử dụng các hàm khácVì bây giờ bạn đã có thành phần hàm này, để lấy đạo hàm của sai số liên quan đến các tham số, bạn sẽ cần sử dụng quy tắc chuỗi từ phép tính. Với quy tắc dây chuyền, bạn lấy đạo hàm riêng của từng hàm, đánh giá chúng và nhân tất cả các đạo hàm riêng để có được đạo hàm bạn muốn Bây giờ bạn có thể bắt đầu cập nhật trọng số. Bạn muốn biết cách thay đổi trọng số để giảm sai số. Điều này ngụ ý rằng bạn cần tính đạo hàm của sai số đối với các trọng số. Vì sai số được tính bằng cách kết hợp các hàm khác nhau nên bạn cần lấy đạo hàm riêng của các hàm này Dưới đây là phần trình bày trực quan về cách bạn áp dụng quy tắc dây chuyền để tìm đạo hàm của sai số đối với các trọng số Một sơ đồ hiển thị các đạo hàm riêng bên trong mạng lưới thần kinhMũi tên đậm màu đỏ hiển thị đạo hàm bạn muốn, 10. Bạn sẽ bắt đầu từ hình lục giác màu đỏ, đi theo con đường nghịch đảo để đưa ra dự đoán và tính đạo hàm riêng tại mỗi hàmTrong hình trên, mỗi hàm được biểu thị bằng các hình lục giác màu vàng và các đạo hàm riêng được biểu thị bằng các mũi tên màu xám ở bên trái. Áp dụng quy tắc chuỗi, giá trị của 10 sẽ như sau 1Để tính đạo hàm, bạn nhân tất cả các đạo hàm riêng theo đường dẫn từ hình lục giác sai số (hình màu đỏ) với hình lục giác nơi bạn tìm thấy trọng số (hình lục giác ngoài cùng bên trái) Bạn có thể nói rằng đạo hàm của 12 là đạo hàm của 13 đối với 8. Sử dụng danh pháp này, cho 15, bạn muốn biết đạo hàm của hàm tính toán sai số đối với giá trị dự đoánCon đường ngược lại này được gọi là đường chuyền ngược. Trong mỗi lần quay ngược, bạn tính đạo hàm riêng của từng hàm, thay thế các biến bằng giá trị của chúng và cuối cùng nhân mọi thứ Phần “lấy đạo hàm riêng, đánh giá và nhân” này là cách bạn áp dụng quy tắc dây chuyền. Thuật toán này để cập nhật các tham số mạng thần kinh được gọi là backpropagation Điều chỉnh các tham số bằng BackpropagationTrong phần này, bạn sẽ hướng dẫn từng bước quy trình lan truyền ngược, bắt đầu với cách bạn cập nhật xu hướng. Bạn muốn lấy đạo hàm của hàm sai số theo độ lệch, 16. Sau đó, bạn sẽ tiếp tục đi lùi, lấy đạo hàm riêng cho đến khi tìm được biến 09Vì bạn đang bắt đầu từ cuối và đi ngược lại, trước tiên bạn cần lấy đạo hàm riêng của sai số đối với dự đoán. Đó là 15 trong hình bên dướiSơ đồ hiển thị đạo hàm riêng để tính toán độ dốc thiên vịHàm tạo ra lỗi là một hàm bình phương và đạo hàm của hàm này là 5, như bạn đã thấy trước đó. Bạn đã áp dụng đạo hàm riêng thứ nhất ( 15) mà vẫn chưa đạt được độ lệch, vì vậy bạn cần lùi lại một bước nữa và lấy đạo hàm của dự đoán đối với lớp trước đó, 21Dự đoán là kết quả của hàm sigmoid. Bạn có thể lấy đạo hàm của hàm sigmoid bằng cách nhân 22 và 23. Công thức đạo hàm này rất tiện dụng vì bạn có thể sử dụng kết quả sigmoid đã được tính để tính đạo hàm của nó. Sau đó, bạn lấy đạo hàm riêng này và tiếp tục đi lùiBây giờ bạn sẽ lấy đạo hàm của 5 đối với độ chệch. Nó đây rồi—cuối cùng bạn cũng có được nó. Biến 09 là biến độc lập nên kết quả sau khi áp dụng quy tắc lũy thừa là 0. Thật tuyệt, bây giờ bạn đã hoàn thành bước chuyển ngược này, bạn có thể đặt mọi thứ lại với nhau và tính toán 16>>> 2Để cập nhật các trọng số, bạn làm theo quy trình tương tự, đi ngược lại và lấy đạo hàm riêng cho đến khi bạn tìm được biến trọng số. Vì bạn đã tính một số đạo hàm riêng nên bạn chỉ cần tính 28. Đạo hàm của tích vô hướng là đạo hàm của vectơ thứ nhất nhân với vectơ thứ hai, cộng với đạo hàm của vectơ thứ hai nhân với vectơ thứ nhấtLoại bỏ các quảng cáoTạo lớp mạng thần kinhBây giờ bạn đã biết cách viết các biểu thức để cập nhật cả trọng số và độ chệch. Đã đến lúc tạo một lớp cho mạng lưới thần kinh. Các lớp là khối xây dựng chính của lập trình hướng đối tượng (OOP). Lớp 29 tạo các giá trị bắt đầu ngẫu nhiên cho các biến trọng số và sai lệchKhi khởi tạo một đối tượng 29, bạn cần truyền tham số 31. Bạn sẽ sử dụng 32 để đưa ra dự đoán. Các phương pháp 33 và 34 có các phép tính mà bạn đã học trong phần này. Đây là lớp 29 cuối cùng 3Ở đó bạn có nó. Đó là mã của mạng lưới thần kinh đầu tiên của bạn. Xin chúc mừng. Mã này chỉ tập hợp tất cả các phần bạn đã thấy cho đến nay. Nếu bạn muốn đưa ra dự đoán, trước tiên bạn tạo một thể hiện của 36, sau đó bạn gọi 37>>> 4Đoạn mã trên đưa ra dự đoán, nhưng bây giờ bạn cần học cách đào tạo mạng. Mục tiêu là làm cho mạng tổng quát hóa trên tập dữ liệu huấn luyện. Điều này có nghĩa là bạn muốn nó thích ứng với dữ liệu mới, chưa thấy, tuân theo phân phối xác suất giống như tập dữ liệu huấn luyện. Đó là những gì bạn sẽ làm trong phần tiếp theo Đào tạo mạng với nhiều dữ liệu hơnBạn đã điều chỉnh trọng số và độ lệch cho một phiên bản dữ liệu, nhưng mục tiêu là làm cho mạng tổng quát hóa trên toàn bộ tập dữ liệu. Giảm dần độ dốc ngẫu nhiên là một kỹ thuật trong đó, ở mỗi lần lặp lại, mô hình đưa ra dự đoán dựa trên một phần dữ liệu đào tạo được chọn ngẫu nhiên, tính toán lỗi và cập nhật các tham số Bây giờ là lúc để tạo phương thức 38 của lớp 29 của bạn. Bạn sẽ lưu lỗi trên tất cả các điểm dữ liệu sau mỗi 100 lần lặp vì bạn muốn vẽ biểu đồ cho biết số liệu này thay đổi như thế nào khi số lần lặp tăng lên. Đây là phương thức 38 cuối cùng của mạng lưới thần kinh của bạn 5Có rất nhiều thứ đang diễn ra trong khối mã trên, vì vậy đây là bảng phân tích từng dòng
Nói tóm lại, bạn chọn một phiên bản ngẫu nhiên từ tập dữ liệu, tính toán độ dốc và cập nhật trọng số và độ lệch. Bạn cũng tính toán lỗi tích lũy sau mỗi 100 lần lặp lại và lưu các kết quả đó vào một mảng. Bạn sẽ vẽ mảng này để hình dung lỗi thay đổi như thế nào trong quá trình đào tạo Ghi chú. Nếu bạn đang chạy mã trong Jupyter Notebook, thì bạn cần khởi động lại kernel sau khi thêm 38 vào lớp 29Để mọi thứ bớt phức tạp hơn, bạn sẽ sử dụng tập dữ liệu chỉ có tám trường hợp, mảng 52. Bây giờ bạn có thể gọi 38 và sử dụng Matplotlib để vẽ lỗi tích lũy cho mỗi lần lặp lại>>> 6Bạn khởi tạo lớp 29 một lần nữa và gọi 38 bằng cách sử dụng các giá trị 52 và ________0____57. Bạn chỉ định rằng nó sẽ chạy 58 lần. Đây là biểu đồ hiển thị lỗi cho một phiên bản của mạng thần kinhBiểu đồ hiển thị lỗi đào tạo tích lũyLỗi tổng thể đang giảm, đó là những gì bạn muốn. Hình ảnh được tạo trong cùng thư mục nơi bạn đang chạy IPython. Sau khi giảm nhiều nhất, lỗi tiếp tục tăng và giảm nhanh chóng từ tương tác này sang tương tác khác. Đó là bởi vì tập dữ liệu là ngẫu nhiên và rất nhỏ, vì vậy mạng thần kinh khó có thể trích xuất bất kỳ tính năng nào Nhưng không nên đánh giá hiệu suất bằng chỉ số này vì bạn đang đánh giá nó bằng cách sử dụng các phiên bản dữ liệu mà mạng đã thấy. Điều này có thể dẫn đến trang bị quá mức, khi mô hình phù hợp với tập dữ liệu đào tạo đến mức nó không khái quát hóa thành dữ liệu mới Loại bỏ các quảng cáoThêm nhiều lớp hơn vào mạng lưới thần kinhTập dữ liệu trong hướng dẫn này được giữ ở mức nhỏ cho mục đích học tập. Thông thường, các mô hình học sâu cần một lượng lớn dữ liệu vì bộ dữ liệu phức tạp hơn và có nhiều sắc thái Vì các bộ dữ liệu này có nhiều thông tin phức tạp hơn nên chỉ sử dụng một hoặc hai lớp là không đủ. Đó là lý do tại sao các mô hình deep learning được gọi là “deep learning. ” Họ thường có một số lượng lớn các lớp Bằng cách thêm nhiều lớp hơn và sử dụng các chức năng kích hoạt, bạn tăng sức mạnh biểu đạt của mạng và có thể đưa ra các dự đoán ở cấp độ rất cao. Một ví dụ về các loại dự đoán này là nhận dạng khuôn mặt, chẳng hạn như khi bạn chụp ảnh khuôn mặt của mình bằng điện thoại và điện thoại sẽ mở khóa nếu nhận dạng được hình ảnh đó là bạn. Phần kết luậnXin chúc mừng. Hôm nay, bạn đã xây dựng một mạng thần kinh từ đầu bằng NumPy. Với kiến thức này, bạn đã sẵn sàng tìm hiểu sâu hơn về thế giới trí tuệ nhân tạo trong Python Trong hướng dẫn này, bạn đã học
Quá trình đào tạo một mạng lưới thần kinh chủ yếu bao gồm các hoạt động áp dụng cho các vectơ. Hôm nay, bạn đã làm điều đó từ đầu chỉ sử dụng NumPy làm phụ thuộc. Điều này không được khuyến nghị trong cài đặt sản xuất vì toàn bộ quy trình có thể không hiệu quả và dễ xảy ra lỗi. Đó là một trong những lý do tại sao các framework học sâu như Keras, PyTorch và TensorFlow lại rất phổ biến Đọc thêmĐể biết thêm thông tin về các chủ đề được đề cập trong hướng dẫn này, hãy xem các tài nguyên này
Đánh dấu là đã hoàn thành Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Xây dựng mạng nơ-ron và đưa ra dự đoán bằng Python AI 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Giới thiệu về Deborah Mesquita Déborah là một nhà khoa học dữ liệu thích giải thích các khái niệm theo những cách toàn diện » Tìm hiểu thêm về DeborahMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là Aldren David Geir Arne Joanna Gia-cốp Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Chuyên gia Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi Python được sử dụng như thế nào trong AI ML?Python cung cấp mã ngắn gọn và dễ đọc. Mặc dù các thuật toán phức tạp và quy trình công việc linh hoạt đứng đằng sau công nghệ máy học và trí tuệ nhân tạo, nhưng sự đơn giản của Python cho phép các nhà phát triển viết các hệ thống đáng tin cậy . Các nhà phát triển phải nỗ lực hết sức để giải quyết vấn đề ML thay vì tập trung vào các sắc thái kỹ thuật của ngôn ngữ.
Tôi có thể tạo AI bằng Python không?Nếu bạn mới bắt đầu trong thế giới trí tuệ nhân tạo (AI), thì Python là một ngôn ngữ tuyệt vời để học vì hầu hết các công cụ đều được xây dựng bằng ngôn ngữ này. Deep learning is a technique used to make predictions using data, and it heavily relies on neural networks.
Tại sao Python là tốt nhất cho AI ML và deep learning?Dễ hiểu hơn và điều này giúp dễ dàng tạo các mô hình máy học . Một tính năng khác của Python là nó trực quan và hoàn hảo cho việc triển khai hợp tác. Nó cho phép tạo mẫu và thử nghiệm sản phẩm nhanh hơn vì đây là ngôn ngữ có mục đích chung.
Làm cách nào để học Python cho AI và ML?7 bước để thành thạo Machine Learning với Python vào năm 2022. . Bước 1. Học lập trình cho Machine Learning. . Bước 2. Thu thập và tiền xử lý dữ liệu trong Python. . Bước 3. Phân tích dữ liệu trong Python. . Bước 4. Học máy với Python. . Bước 5. Các thuật toán học máy chuyên sâu. . Bước 6. Học kĩ càng. . Bước 7. dự án |