Posts Tagged Neural Network
Neural Network có gì hay?
Posted by worm.NET in Computer Science on Tháng Tư 11, 2011
Trước hết, phải nói rằng đây không phải là một bài viết chuyên sâu về Neural Network. Cái tên Neural Network vốn thường gợi sự tò mò bởi nó mang một vẻ gì đó bí hiểm và… hàn lâm. Nhắc đến neuron người ta hay liên tưởng đến các tế bào thần kinh trong bộ não người với các cơ chế suy nghĩ phức tạp. Bài viết này mong muốn cung cấp một cách giải thích đơn giản, dễ tiếp cận về Neural Network, nhằm trả lời những câu hỏi như: Neural Network là gì? Ứng dụng ra sao? Tất cả các chi tiết nặng về kĩ thuật và toán đều không được giải thích trong bài viết này. Các chi tiết đó xin dành cho các bạn tự khám phá hoặc sẽ được nói đến trong các bài viết sau (nếu có điều kiện!)
Khái niệm:
Neural Network là một tập các phần tử xử lý đơn giản được kết nối với nhau, mỗi kết nối có cường độ nhất định thể hiện bởi trọng số. Năng lực xử lý của toàn network được quyết định bởi các trọng số này, vốn được hình thành qua một quá trình thích nghi (hay tự học) từ các điều kiện mẫu nhất định.
Nếu bạn cảm thấy cách định nghĩa trên có hơi… tối nghĩa, không sao! Hãy bình tĩnh và đọc tiếp! Neural Network có nguồn gốc từ việc mô phỏng cách mà bộ não người hoạt động. Do đó, một chút kiến thức về sinh học có lẽ sẽ giúp ta hình dung được dễ dàng hơn: bộ não người bao gồm hàng tỉ tế bào thần kinh (gọi là các neuron) liên lạc với nhau thông quan các xung điện ở màng tế bào. Mỗi neuron liên tục nhận tín hiệu (tức xung điện) từ hàng ngàn neuron khác. Các tín hiệu này sẽ được tổng hợp và khi đạt đến một giá trị nào đó sẽ kích thích làm phát sinh một xung điện phản hồi. Nghe đơn giản như vậy nhưng với cơ chế hoạt động đó, bộ não của chúng ta đã xử lý hàng loạt những luồng thông tin cực kì phức tạp từ cuộc sống. Có thể xem bộ não như một siêu máy tính với những khả năng ưu việt. Tuy nhiên siêu máy tính đó không phải là một khối duy nhất, mà nó bao gồm rất nhiều các máy tính được kết nối với nhau. Mỗi máy tính có năng lực xử lý hạn chế và chỉ đảm nhận một khâu xử lý nào đó, đồng thời chúng cũng có các cổng giao tiếp để gửi/nhận tín hiệu tới/từ các máy tính khác trong mạng. Áp dụng mô hình trên để giải quyết bài toán thực tế: thay vì xây dựng một khối chương trình đồ sộ, ta sẽ xây dựng nên nhiều đơn vị xử lý nhỏ và đơn giản hơn, nhưng khi kết nối lại, sức mạnh tổng hợp của chúng sẽ giải quyết được những vấn đề phức tạp. Kết quả? Neural Network ra đời!
Người ta đã thực hiện nhiều nỗ lực để mô phỏng các tế bào neuron. Trong đó TLU (Threshold Logic Unit) là dạng neuron nhân tạo đơn giản nhất. Mỗi TLU có nhiều đầu tín hiệu vào và một đầu tín hiệu ra. Các đầu tín hiệu vào đều mang một trọng số xác định. Giá trị của tín hiệu vào (0 hoặc 1) sẽ được nhân với trọng số này, sau đó được tính tổng và so sánh với một giá trị ngưỡng (threshold). Tổng này gọi là giá trị kích hoạt (activation), kí hiệu là a. Nếu giá trị kích hoạt lớn hơn giá trị ngưỡng, TLU xuất ra 1, ngược lại TLU xuất ra 0.
Giá trị kích hoạt a được tính bằng công thức:
a = w1x1 + w2x2 + … + wnxn
với x thể hiện giá trị các đường tín hiệu vào và w là trọng số của các đường tín hiệu này. Kết quả xuất kí hiệu là y. Ta có y = 1 nếu a > ngưỡng và y = 0 nếu a < ngưỡng. Mặc dù mô hình neuron trên chỉ ở dạng tối giản, nó vẫn cho ta thấy hai đặc tính chung của Neural Network. Hãy cùng xem qua ví dụ: một TLU có hai đường tín hiệu vào với trọng số lần lượt là 0 và 1 và ngưỡng là 0.5. Bảng sau minh họa bốn dạng tín hiệu vào có thể có cùng kết quả của chúng:
Giả sử như neuron đó có lỗi (mạch điện tử bị hỏng) khiến cho các trọng số bị thay đổi thành 0.1 và 0.7. Kết quả được minh họa bên dưới:
Ta thấy rằng mặc dù giá trị kích hoạt a có bị biến dạng đôi chút, nhưng kết quả xuất của neuron vẫn không bị ảnh hưởng. Ngược lại, nếu thử giữ nguyên giá trị các trọng số và thay đổi tín hiệu đầu vào, ta cũng sẽ nhận được một kết quả tương tự. Đương nhiên là, nếu các giá trị trên bị biến đổi quá lớn thì cuối cùng kết quả xuất cũng sẽ bị sai lệch. Nhưng chừng nào chúng còn nằm trong một phạm vi cho phép (giá trị kích hoạt không bị biến đổi vượt quá giá trị ngưỡng) thì neuron vẫn còn hoạt động chính xác. Từ đó ta nhận ra hai đặc điểm quan trọng của các neuron là tính phi tuyến tính, tức các giá trị nhập và xuất không tỉ lệ với nhau, hay nói cách khác là thay đổi giá trị nhập không nhất thiết dẫn đến thay đổi giá trị xuất. Thứ hai là tính chịu lỗi cao, vì các neuron vẫn có thể hoạt động chính xác trong trường hợp xảy ra các trục trặc nhỏ.
Trên thực tế, các neuron còn phức tạp hơn rất nhiều, với các giá trị đầu vào và ra đa dạng (thay vì 0 và 1). Thời gian cũng là một yếu tố quan trọng vì các tín hiệu vào có thể phát sinh tại những thời điểm khác nhau (mô hình neuron ở trên bỏ qua yếu tố này và giả định rằng các tín hiệu được neuron tiếp nhận tại cùng một thời điểm). Tuy nhiên trong phạm vi của bài này, chúng ta sẽ tạm ngưng nói về cấu trúc hoạt động của neuron và quay trở lại với định nghĩa mạng neuron ban đầu.
Như đã đề cập trong định nghĩa, mạng neuron là một tập hợp các neuron, định nghĩa này bao hàm bất cứ hệ thống neuron nhân tạo nào, từ các hệ thống đơn giản nhất chỉ gồm một neuron cho tới các tập hợp nhiều neuron được kết nối với nhau. Hình bên dưới minh họa một loại mạng với các neuron được tổ chức theo kiểu phân cấp. Theo đó mỗi tín hiệu vào sẽ được chuyển qua hai lần xử lý trước khi xuất ra. Dạng cấu trúc này thường được sử dụng với mục đích phân loại tín hiệu, chẳng hạn như trong trường hợp nhận dạng chữ viết. Khi đó các tín hiệu vào bao gồm một dạng mã hóa các mẫu ký tự, đồng thời lớp neuron ở trên cùng trong hệ thống phân cấp (đóng vai trò xuất tín hiệu) sẽ có 26 neuron (tương ứng với 26 chữ cái). Mỗi neuron này chỉ xuất tín hiệu khi các tín hiệu đầu vào phù hợp với mẫu chữ cái mà nó đại diện.
Đến lúc này, có lẽ bạn đã nhận ra một điểm trong định nghĩa của chúng ta chưa được nhắc đến? Đó chính là khả năng tự học. Neuron học tập bằng cách nào? Khi nghiên cứu trên các tế bào neuron thực, người ta nhận thấy cường độ tín hiệu vào có thể thay đổi để thích nghi trong những điều kiện nhất định. Các neuron nhân tạo hiện thực cơ chế này bằng việc thay đổi trọng số của các đường tín hiệu nhập. Giả sử như trong trường hợp nhận dạng chữ viết, mạng neuron sẽ được cung cấp một mẫu tín hiệu tương ứng với kí tự A, kết quả xuất của mạng này (tức kết quả thực) sẽ được so sánh với kết quả mong đợi (A). Sự khác biệt giữa hai kết quả này là cơ sở để thay đổi trọng số, với mỗi công thức thay đổi gọi là một luật học (training rule). Sau mỗi lần thay đổi, mạng neuron lại được kiểm tra bằng một mẫu tín hiệu mới, và các thay đổi mới lại được thực hiện, cứ thế cho đến khi kết quả mong đợi và kết quả thực tế gần giống nhau nhất.
Vậy điều gì sẽ xảy ra nếu sau giai đoạn học tập này, mạng neuron gặp phải một mẫu tín hiệu hoàn toàn mới? Nếu giải thuật tự học đủ tốt để mạng neuron nắm được cấu trúc vấn đề thì nó vẫn có thể phân loại đúng, khi đó mạng được coi là có khả năng tổng quát hóa tốt. Ngược lại, mạng neuron sẽ hoạt động không hơn gì một cấu trúc tra cứu theo kiểu từ điển. Do vậy mà khả năng tổng quát hóa được coi là một trong những đặc tính then chốt của mạng neuron.
Ứng dụng
Neural Network thường sử dụng trong phân tích thống kê và mô hình hóa dữ liệu. Chúng cũng được ứng dụng trong các lĩnh vực phân loại và dự báo, bao gồm nhận dạng hình ảnh và giọng nói hay chữ viết. Ngoài ra, ta còn có thể bắt gặp Neural Network trong các hệ thống chẩn đoán y khoa, thăm dò dầu khí hoặc dự báo tài chính.
Bên cạnh những ứng dụng trong khoa học máy tính, Neural Network cũng nhận được sự chú ý của các nhà thần kinh học và các nhà vật lý học bởi khả năng mô phỏng bộ não con người và những ứng dụng trong nghiên cứu các hệ thống phi tuyến tính.
Tham khảo
- Kevin Gurney – An Introduction to Neural Networks – UCL Press (1999)



