Trí tuệ nhân tạo (AI) đã trở nên phổ biến đáng kể trong những năm gần đây.
Nếu bạn là một kỹ sư phần mềm, nhà khoa học máy tính hoặc người đam mê khoa học dữ liệu nói chung, thì bạn có thể bị hấp dẫn bởi các ứng dụng tuyệt vời của xử lý hình ảnh, nhận dạng mẫu và phát hiện đối tượng do lĩnh vực này cung cấp.
Trường con quan trọng nhất của AI mà bạn có thể đã nghe nói đến là Học sâu. Trường này tập trung vào các thuật toán mạnh mẽ (hướng dẫn chương trình máy tính) được mô phỏng theo chức năng não người được gọi là Mạng lưới thần kinh.
Trong bài viết này, chúng ta sẽ xem xét khái niệm về Mạng thần kinh và cách xây dựng, biên dịch, điều chỉnh và đánh giá các mô hình này bằng cách sử dụng Python.
Mạng lưới thần kinh
Mạng thần kinh, hay NN, là một loạt các thuật toán được mô phỏng theo hoạt động sinh học của não người. Mạng thần kinh bao gồm các nút, còn được gọi là tế bào thần kinh.
Tập hợp các nút dọc được gọi là các lớp. Mô hình bao gồm một đầu vào, một đầu ra và một số lớp ẩn. Mỗi lớp bao gồm các nút, còn được gọi là tế bào thần kinh, nơi các phép tính diễn ra.
Trong sơ đồ sau, các vòng tròn đại diện cho các nút và tập hợp các nút theo chiều dọc đại diện cho các lớp. Có ba lớp trong mô hình này.
Các nút của một lớp được kết nối với lớp tiếp theo thông qua các đường truyền như hình dưới đây.
Tập dữ liệu của chúng tôi bao gồm dữ liệu được gắn nhãn. Điều này có nghĩa là mỗi thực thể dữ liệu đã được gán một giá trị tên nhất định.
Vì vậy, đối với tập dữ liệu phân loại động vật, chúng tôi sẽ có hình ảnh của mèo và chó làm dữ liệu của chúng tôi, với "mèo" và "chó" làm nhãn của chúng tôi.
Điều quan trọng cần lưu ý là các nhãn cần được chuyển đổi thành các giá trị số để mô hình của chúng tôi hiểu được chúng, vì vậy nhãn động vật của chúng tôi trở thành '0' đối với mèo và '1' đối với chó. Cả dữ liệu và nhãn đều được chuyển qua mô hình.
Học
Dữ liệu được cung cấp cho mô hình một thực thể tại một thời điểm. Dữ liệu này được chia thành nhiều phần và chuyển qua từng nút của mô hình. Các nút thực hiện các phép toán trên các khối này.
Bạn không cần phải biết các chức năng toán học hoặc các phép tính cho hướng dẫn này, nhưng điều quan trọng là phải có ý tưởng chung về cách hoạt động của các mô hình này. Sau một loạt các phép tính trong một lớp, dữ liệu được chuyển sang lớp tiếp theo, v.v.
Sau khi hoàn thành, mô hình của chúng tôi dự đoán nhãn dữ liệu ở lớp đầu ra (ví dụ: trong một bài toán phân loại động vật, chúng tôi nhận được dự đoán '0' cho một con mèo).
Sau đó, mô hình tiến hành so sánh giá trị dự đoán này với giá trị nhãn thực tế.
Nếu các giá trị khớp nhau, mô hình của chúng tôi sẽ lấy đầu vào tiếp theo nhưng nếu các giá trị khác nhau, mô hình sẽ tính toán sự khác biệt giữa cả hai giá trị, được gọi là tổn thất và điều chỉnh các phép tính nút để tạo ra các nhãn phù hợp vào lần tiếp theo.
Khung học tập sâu
Để xây dựng Mạng thần kinh bằng mã, chúng ta cần nhập Khuôn khổ học tập sâu được gọi là thư viện sử dụng Môi trường phát triển tích hợp (IDE) của chúng tôi.
Các khung này là tập hợp các hàm được viết sẵn sẽ giúp ích cho chúng ta trong hướng dẫn này. Chúng tôi sẽ sử dụng khung Keras để xây dựng mô hình của mình.
Keras là một thư viện Python sử dụng chương trình phụ trợ trí tuệ nhân tạo và học sâu được gọi là Dòng chảy để tạo NN dưới dạng các mô hình tuần tự đơn giản một cách dễ dàng.
Keras cũng đi kèm với các mô hình có sẵn của riêng nó cũng có thể được sử dụng. Đối với hướng dẫn này, chúng tôi sẽ tạo mô hình của riêng mình bằng Keras.
Bạn có thể tìm hiểu thêm về khung Học sâu này từ Trang web Keras.
Xây dựng mạng thần kinh (Hướng dẫn)
Hãy chuyển sang xây dựng Mạng thần kinh bằng Python.
Báo cáo vấn đề
Mạng thần kinh là một loại giải pháp cho các vấn đề dựa trên AI. Đối với hướng dẫn này, chúng tôi sẽ xem xét Dữ liệu về bệnh tiểu đường của người da đỏ Pima, có sẵn tại đây.
UCI Học máy đã biên dịch tập dữ liệu này và có một hồ sơ bệnh án của bệnh nhân Ấn Độ. Mô hình của chúng tôi phải dự đoán liệu bệnh nhân có khởi phát bệnh tiểu đường trong vòng 5 năm hay không.
Đang tải tập dữ liệu
Tập dữ liệu của chúng tôi là một tệp CSV duy nhất được gọi là'etes.csv 'có thể dễ dàng thao tác bằng Microsoft Excel.
Trước khi tạo mô hình của mình, chúng ta cần nhập tập dữ liệu của mình. Sử dụng mã sau, bạn có thể thực hiện việc này:
gấu trúc nhập khẩu như pd
data = pd.read_csv ('etes.csv ')
x = data.drop (“Kết quả”)
y = data [“Kết quả”]
Ở đây chúng tôi đang sử dụng Gấu trúc thư viện để có thể thao tác dữ liệu tệp CSV của chúng tôi, read_csv () là một hàm tích hợp sẵn của Pandas cho phép chúng tôi lưu trữ các giá trị trong tệp của mình vào một biến có tên là 'dữ liệu'.
Biến x chứa tập dữ liệu của chúng ta mà không có dữ liệu (nhãn) kết quả. Chúng tôi đạt được điều này với hàm data.drop () loại bỏ các nhãn cho x, trong khi y chỉ chứa dữ liệu kết quả (nhãn).
Xây dựng mô hình tuần tự
Bước 1: Nhập thư viện
Đầu tiên, chúng ta cần nhập TensorFlow và Keras, cùng với một số tham số nhất định cần thiết cho mô hình của chúng ta. Đoạn mã sau cho phép chúng tôi thực hiện việc này:
nhập tensorflow dưới dạng tf
từ khóa nhập khẩu tensorflow
từ tensorflow.keras.models nhập Tuần tự
từ tensorflow.keras.layers nhập Kích hoạt, Mật độ
từ tensorflow.keras.optimizers nhập Adam
từ tensorflow.keras.metrics nhập categorical_crossentropy
Đối với mô hình của chúng tôi, chúng tôi đang nhập các lớp dày đặc. Đây là các lớp được kết nối đầy đủ; tức là, mỗi nút trong một lớp được kết nối đầy đủ với một nút khác trong lớp tiếp theo.
Chúng tôi cũng đang nhập khẩu một kích hoạt chức năng cần thiết để chia tỷ lệ dữ liệu được gửi đến các nút. Trình tối ưu hóa cũng đã được nhập khẩu để giảm thiểu thất thoát.
Adam là một trình tối ưu hóa nổi tiếng giúp tính toán nút cập nhật mô hình của chúng tôi hiệu quả hơn, cùng với categorical_crossentropy là loại hàm mất mát (tính toán sự khác biệt giữa các giá trị nhãn thực tế và dự đoán) mà chúng tôi sẽ sử dụng.
Bước 2: Thiết kế mô hình của chúng tôi
Mô hình tôi đang tạo có một đầu vào (với 16 đơn vị), một ẩn (với 32 đơn vị) và một đầu ra (với 2 đơn vị) lớp. Những con số này không cố định và sẽ phụ thuộc hoàn toàn vào bài toán đã cho.
Đặt số lượng đơn vị và lớp phù hợp là một quá trình có thể được cải thiện ngoài giờ thông qua thực hành. Kích hoạt tương ứng với kiểu chia tỷ lệ mà chúng tôi sẽ thực hiện trên dữ liệu của mình trước khi chuyển nó qua một nút.
Relu và Softmax là các chức năng kích hoạt nổi tiếng cho nhiệm vụ này.
model = Sequential ([
Mật độ (đơn vị = 16, input_shape = (1,), kích hoạt = 'relu'),
Mật độ (đơn vị = 32, kích hoạt = 'relu'),
Mật độ (đơn vị = 2, kích hoạt = 'softmax')
])
Đây là phần tóm tắt của mô hình sẽ trông như thế nào:
Đào tạo người mẫu
Mô hình của chúng tôi sẽ được đào tạo theo hai bước, bước đầu tiên là biên dịch mô hình (đặt mô hình lại với nhau) và bước tiếp theo là chỉnh sửa mô hình trên một tập dữ liệu nhất định.
Điều này có thể được thực hiện bằng cách sử dụng hàm model.compile () theo sau là hàm model.fit ().
model.compile (trình tối ưu hóa = Adam (learning_rate = 0.0001), loss = 'binary_crossentropy', metrics = ['precision'])
model.fit (x, y, epochs = 30, batch_size = 10)
Việc chỉ định số liệu 'độ chính xác' cho phép chúng tôi quan sát độ chính xác của mô hình của mình trong quá trình đào tạo.
Vì các nhãn của chúng tôi có dạng 1 và 0, chúng tôi sẽ sử dụng hàm mất mát nhị phân để tính toán sự khác biệt giữa nhãn thực tế và nhãn dự đoán.
Tập dữ liệu cũng đang được chia thành các lô 10 (batch_size) và sẽ được chuyển qua mô hình 30 lần (epochs). Đối với một tập dữ liệu nhất định, x sẽ là dữ liệu và y sẽ là các nhãn tương ứng với dữ liệu.
Kiểm tra mô hình sử dụng các dự đoán
Để đánh giá mô hình của chúng tôi, chúng tôi đưa ra dự đoán trên dữ liệu thử nghiệm bằng cách sử dụng hàm dự đoán ().
dự đoán = model.posystem (x)
Và đó là nó!
Bây giờ bạn sẽ hiểu rõ về Học kĩ càng ứng dụng, Mạng thần kinh, cách chúng hoạt động nói chung và cách xây dựng, đào tạo và kiểm tra một mô hình bằng mã Python.
Tôi hy vọng hướng dẫn này cung cấp cho bạn cơ hội để tạo và triển khai các mô hình Học sâu của riêng bạn.
Hãy cho chúng tôi biết trong phần bình luận nếu bài viết hữu ích.
Bình luận