Posts Tagged AI
Human & Intelligent Machines – Some thought on The 7 Habits of Highly Effective People
Posted by worm.NET in Books, Computer Science on Tháng Tám 15, 2011
This article is the result of a sudden inspiration. A kinda busy (but lazy) weekend and I decided to take some reading to relax. As I go with The 7 Habits of Highly Effective People, I noticed some points very similar to what I’ve learnt in an old book of Artificial Intelligence:
- A matured person should be independent – an “intelligent” agent should be autonomous
- Interdependence is a higher form of independence, as in real world, people can have complex relationships – In a multi-agent system, an agent interacts with others to achieve its own goal, and still remains autonomous.
- Every human has a set of paradigms, or maps of this world, that governs the way he thinks and acts – an agent maintains a knowledge base of what it perceives and use that knowledge to make decision. Of course, neither humans nor agents are omniscient, and their knowledge may be far from truth.
- Given such imperfection, it’s important that we are able to learn from experiences. Humans possess self-awareness or the ability to think about our thought process. This explains why we can get rid of some habits or adopted new ones. In the same way, agents can be design to incorporate a self-study mechanism that helps them learn from failures and deal with uncertainty.
Ok! So…?
It seems that human and agent share a lot in common. After all, the ultimate goal of AI is to create intelligent machines that model human behaviors. How can that be possible if we don’t first understand our own reasoning process? Unsurprisingly AI has its root deep in philosophy and psychology, where the foundation of human mind theories were laid. Learning AI is therefore learning about ourself. Perhaps that’s what makes it such an interesting field to discover!
Reading The 7 Habits of Highly Effective People is a quite refreshing experience as it reminds me of a familiar but often overlooked fact that people (or agents) tend to have very different views of a specific truth. It’s true that our number one problem is the way we see the problem. And to solve that requires a thorough approach, not a superficial change of attitude or behavior. Just as an agent’s inference algorithm becomes useless if it doesn’t know what it already knows, it’s only when we understand our own paradigm that we can make a true paradigm shift toward becoming highly effective people.
* Recommend reading:
The 7 Habits of Highly Effective People (Stephen R. Covey)
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)



