Rate this post

Điều cần thiết là phải biết về Perceptron Model và một số thuật ngữ chính như entropy chéo, giảm độ dốc sigmoid, v.v. Vậy Perceptron Model là gì và nó làm gì?

Hãy xem một ví dụ để hiểu Perceptron Model. Hãy tưởng tượng có một bệnh viện hàng năm thực hiện phẫu thuật cho hàng nghìn bệnh nhân và yêu cầu bạn tạo ra một mô hình dự đoán có thể xác định chính xác xem ai đó có khả năng bị ung thư hay không.

Các bài viết liên quan:

Với sự trợ giúp của dữ liệu xác định trước đó, chúng tôi dự đoán liệu ai đó có khả năng bị ung thư hay không dựa trên tuổi của họ, đi qua trục x và lượng thuốc lá họ hít phải đi qua trục y.

Vì vậy, những người có độ tuổi và số lượng thuốc lá mà anh ta sử dụng càng cao thì nguy cơ mắc bệnh ung thư càng cao và nếu một người có độ tuổi và số lượng thuốc lá tốt nhất mà anh ta uống, thì khả năng mắc bệnh ung thư là tối thiểu.

Mọi điểm màu xanh lá cây, biểu thị khả năng mắc ung thư cao hơn, ban đầu được gán nhãn bằng 0 và mọi điểm màu xanh lam, biểu thị khả năng ung thư thấp hơn, ban đầu được gán nhãn là một.

Vì vậy, chúng tôi sẽ bắt đầu với một mô hình ngẫu nhiên sẽ không phân loại chính xác dữ liệu của chúng tôi, nhưng sau đó mô hình sẽ được đào tạo thông qua một số thuật toán tối ưu hóa. Mô hình sẽ được huấn luyện qua nhiều lần lặp cho đến khi đạt đến giá trị tham số, có thể phân loại dữ liệu của chúng ta một cách chính xác. Chúng tôi sử dụng dữ liệu được gắn nhãn trước đó, mọi thứ ở đây được gắn nhãn là một và mọi thứ ở đây đều được gắn nhãn 0.

Chúng tôi sử dụng dữ liệu được gắn nhãn này để đưa ra mô hình dự đoán phân loại dữ liệu của chúng tôi thành hai danh mục riêng biệt. Sử dụng mô hình đó, bây giờ chúng ta có thể đưa ra dự đoán về dữ liệu mới nhập không có nhãn dựa trên việc điểm đó có nằm bên dưới dòng hay bên trên nó hay không. Chúng tôi sẽ đào tạo mô hình của mình, có thể xác định rằng người này thuộc lớp một sao cho họ rất có thể khỏe mạnh.

Bây giờ, câu hỏi lớn nhất là làm thế nào mà máy tính biết cách đưa ra mô hình tuyến tính này. Với mục đích này, chúng tôi sẽ tính toán sai số liên quan đến mô hình này và sau đó điều chỉnh lại các tham số của mô hình để giảm thiểu sai số và phân loại đúng các điểm dữ liệu. Chúng tôi sẽ sử dụng hàm cross-entropy () để tìm lỗi và giảm độ dốc sigmoid để tối ưu hóa các tham số. Hãy bắt đầu triển khai mã, trong đó chúng ta sẽ thấy cách hàm cross-entropy và đường giảm độ dốc sigmoid được sử dụng như thế nào.

Vì vậy, chúng tôi làm việc trên tập dữ liệu mà chúng tôi đã tạo trong phần trước. Bây giờ, với sự trợ giúp của tập dữ liệu này, chúng ta sẽ bắt đầu triển khai mã của mình và tạo một Perceptron Model cơ bản.

Lúc đầu, chúng tôi đặt plt.scatter (x [y == 0,0], x [y == 0,1]) và plt.scatter (x [y == 1,0], x [y == 1, 1]) vào một hàm để sử dụng thêm như

def Scatter():  
plt.scatter(x[y==0,0],x[y==0,1])  
plt.scatter(x[y==1,0],x[y==1,1])  

Để tạo một Perceptron Model cơ bản, chúng ta phải làm theo bước sau:

Bước 1

Bước đầu tiên của chúng tôi là tạo một mô hình tuyến tính. Đối với điều này, chúng ta phải tạo lớp mô hình của mình như chúng ta đã triển khai trong mô hình hồi quy tuyến tính với phương thức init () và phương thức forward (). Phương thức init () tương tự nhưng phương thức forward () khá khác so với mô hình hồi quy tuyến tính. Chúng ta định nghĩa forward () như trước khi thay thế self cho đối số đầu tiên và sau đó, chúng ta cần chuyển các đầu vào x.

Sau đó, chúng tôi đưa ra dự đoán bằng cách chuyển dữ liệu x vào mô hình tuyến tính của chúng tôi.

Class Perceptron_model(nn.Module):  
def __init__(self,input_size,output_size):  
        super().__init__()  
        self.linear=nn.Linear(input_size,output_size)  
    def forward(self,x):  
        pred=self.linear(X)  
        return pred  

Vẫn chưa đủ, chúng ta phải chuyển đổi các giá trị thành xác suất bằng cách áp dụng phương thức sigmoid () như sau:

def forward(self,x):  
    pred=torch.sigmoid(self.linear(x))  
    return pred  

Quá trình khởi tạo của chúng tôi đã hoàn tất và bây giờ, chúng tôi đã sẵn sàng sử dụng nó.

Bước 2

Chúng tôi sẽ khởi tạo một mô hình tuyến tính mới bằng cách sử dụng hàm tạo Perceptron_model () và chuyển input_size và output_size làm đối số. Bây giờ, in các giá trị trọng số và thiên vị ngẫu nhiên được gán cho nó như sau:

model= Perceptron_model(2,1)  
print(list(model.parameters()))  

Trước đó, để đảm bảo tính nhất quán trong kết quả ngẫu nhiên của chúng tôi, chúng tôi có thể gieo hạt tạo số ngẫu nhiên của mình bằng hạt giống thủ công ngọn đuốc và chúng ta có thể đặt một hạt giống của hai như sau

torch.manual_seed(2)  

Bước 3

Bước tiếp theo của chúng tôi là trích xuất các thông số mô hình bằng cách giải nén mô hình. Các tham số này được trích xuất dưới dạng danh sách có hai phần tử, tức là A, B và in cả hai giá trị như sau:

[A,b]=model.parameters()  
A1,A2=A.view(2)  
B1=B[0]  
print(A1.item(), A2.item(),B1.item())  

Ở đây, A là trọng lượng, và B là thiên vị.

Để rõ ràng, chúng tôi sử dụng hàm trả về giá trị A1.item (), A2.item () và B1 [0] .item () theo cách sau

def get_perameters():  
    return(A1.item(),A2.item(),B[0].item())  

Bước 4

Bây giờ, chúng tôi vẽ đồ thị mô hình tuyến tính của chúng tôi với tham số mà chúng tôi trích xuất trong f

Điều cần thiết là phải biết về Perceptron Model và một số thuật ngữ chính như entropy chéo, giảm độ dốc sigmoid, v.v. Vậy Perceptron Model là gì và nó làm gì?

def plotfit(title):  
    plt.title=title  
    A1, A2, B1 = get_perameters()  
    x1=np.array([-2.0,2.0])  
    y1=((A1*x1)+B1)/-A2  
plt.plot(x1,y1,'r')   
Scatter()  
plotfit('Initial Model')   

Leave a Reply

Call now
%d bloggers like this: