CNTK - Khái niệm mạng nơron (NN)
Chương này đề cập đến các khái niệm về Mạng thần kinh liên quan đến CNTK.
Như chúng ta đã biết, một số lớp tế bào thần kinh được sử dụng để tạo ra một mạng lưới thần kinh. Nhưng, một câu hỏi đặt ra là trong CNTK làm thế nào chúng ta có thể mô hình hóa các tầng của một NN? Nó có thể được thực hiện với sự trợ giúp của các chức năng lớp được xác định trong mô-đun lớp.
Chức năng lớp
Trên thực tế, trong CNTK, làm việc với các lớp có một cảm giác lập trình chức năng khác biệt đối với nó. Hàm lớp trông giống như một hàm thông thường và nó tạo ra một hàm toán học với một tập hợp các tham số được xác định trước. Hãy xem cách chúng ta có thể tạo kiểu lớp cơ bản nhất, Dense, với sự trợ giúp của chức năng lớp.
Thí dụ
Với sự trợ giúp của các bước cơ bản sau, chúng ta có thể tạo kiểu lớp cơ bản nhất -
Step 1 - Đầu tiên, chúng ta cần nhập hàm lớp dày đặc từ gói các lớp của CNTK.
from cntk.layers import Dense
Step 2 - Tiếp theo từ gói gốc CNTK, chúng ta cần nhập hàm input_variable.
from cntk import input_variable
Step 3- Bây giờ, chúng ta cần tạo một biến đầu vào mới bằng cách sử dụng hàm input_variable. Chúng tôi cũng cần cung cấp kích thước của nó.
feature = input_variable(100)
Step 4 - Cuối cùng, chúng ta sẽ tạo một lớp mới bằng cách sử dụng hàm Dense cùng với việc cung cấp số lượng tế bào thần kinh mà chúng ta muốn.
layer = Dense(40)(feature)
Bây giờ, chúng ta có thể gọi hàm lớp Dense đã cấu hình để kết nối lớp dày đặc với đầu vào.
Hoàn thành ví dụ triển khai
from cntk.layers import Dense
from cntk import input_variable
feature= input_variable(100)
layer = Dense(40)(feature)
Tùy chỉnh các lớp
Như chúng ta đã thấy CNTK cung cấp cho chúng ta một bộ giá trị mặc định khá tốt để xây dựng NN. Dựa trênactivationchức năng và các cài đặt khác mà chúng tôi chọn, hành vi cũng như hiệu suất của NN là khác nhau. Đó là một thuật toán tạo gốc rất hữu ích khác. Đó là lý do, thật tốt để hiểu những gì chúng ta có thể cấu hình.
Các bước để định cấu hình một lớp dày đặc
Mỗi lớp trong NN có các tùy chọn cấu hình riêng và khi chúng ta nói về lớp Dày, chúng ta có các cài đặt quan trọng sau để xác định:
shape - Như tên của nó, nó xác định hình dạng đầu ra của lớp, xác định thêm số lượng tế bào thần kinh trong lớp đó.
activation - Nó xác định chức năng kích hoạt của lớp đó, vì vậy nó có thể biến đổi dữ liệu đầu vào.
init- Nó xác định chức năng khởi tạo của lớp đó. Nó sẽ khởi tạo các tham số của lớp khi chúng ta bắt đầu đào tạo NN.
Hãy xem các bước với sự trợ giúp của chúng tôi có thể định cấu hình Dense lớp -
Step1 - Đầu tiên, chúng ta cần nhập Dense chức năng lớp từ gói các lớp của CNTK.
from cntk.layers import Dense
Step2 - Tiếp theo từ gói hoạt động CNTK, chúng ta cần nhập sigmoid operator. Nó sẽ được sử dụng để cấu hình như một chức năng kích hoạt.
from cntk.ops import sigmoid
Step3 - Bây giờ, từ gói khởi tạo, chúng ta cần nhập glorot_uniform bộ khởi tạo.
from cntk.initializer import glorot_uniform
Step4 - Cuối cùng, chúng ta sẽ tạo một lớp mới bằng cách sử dụng hàm Dense cùng với việc cung cấp số lượng tế bào thần kinh làm đối số đầu tiên. Ngoài ra, cung cấpsigmoid nhà điều hành như activation chức năng và glorot_uniform như là init chức năng cho lớp.
layer = Dense(50, activation = sigmoid, init = glorot_uniform)
Hoàn thành ví dụ triển khai -
from cntk.layers import Dense
from cntk.ops import sigmoid
from cntk.initializer import glorot_uniform
layer = Dense(50, activation = sigmoid, init = glorot_uniform)
Tối ưu hóa các thông số
Cho đến bây giờ, chúng ta đã thấy cách tạo cấu trúc của NN và cách cấu hình các cài đặt khác nhau. Ở đây, chúng ta sẽ thấy, làm thế nào chúng ta có thể tối ưu hóa các tham số của một NN. Với sự giúp đỡ của sự kết hợp của hai thành phần cụ thể làlearners và trainers, chúng ta có thể tối ưu hóa các tham số của NN.
thành phần huấn luyện viên
Thành phần đầu tiên được sử dụng để tối ưu hóa các tham số của NN là trainerthành phần. Về cơ bản, nó thực hiện quá trình nhân giống ngược. Nếu chúng ta nói về hoạt động của nó, nó sẽ chuyển dữ liệu qua NN để có được một dự đoán.
Sau đó, nó sử dụng một thành phần khác được gọi là người học để lấy các giá trị mới cho các tham số trong NN. Khi nhận được các giá trị mới, nó sẽ áp dụng các giá trị mới này và lặp lại quá trình cho đến khi đáp ứng tiêu chí thoát.
thành phần người học
Thành phần thứ hai được sử dụng để tối ưu hóa các tham số của NN là learner , về cơ bản chịu trách nhiệm thực hiện thuật toán giảm độ dốc.
Người học được đưa vào thư viện CNTK
Sau đây là danh sách một số học viên thú vị có trong thư viện CNTK -
Stochastic Gradient Descent (SGD) - Người học này đại diện cho sự xuống dốc ngẫu nhiên cơ bản, không có bất kỳ tính năng bổ sung nào.
Momentum Stochastic Gradient Descent (MomentumSGD) - Với SGD, người học này vận dụng động lượng để vượt qua bài toán cực đại cục bộ.
RMSProp - Người học này, để kiểm soát tỷ lệ xuống cấp, sử dụng tỷ lệ học giảm dần.
Adam - Người học này, để giảm tỷ lệ xuống dốc theo thời gian, sử dụng động lượng giảm dần.
Adagrad - Người học này, đối với các tính năng thường xuyên cũng như không thường xuyên, sử dụng các tỷ lệ học tập khác nhau.