Knowledge-engineering là gì?
Quá trình xây dựng cơ sở tri thức trong logic bậc nhất được gọi là knowledge- engineering. Trong knowledge- engineering, một người nào đó điều tra một miền cụ thể, tìm hiểu khái niệm quan trọng của miền đó và tạo ra một biểu diễn chính thức của các đối tượng, được gọi là knowledge engineer.
Trong chủ đề này, chúng ta sẽ tìm hiểu Quy trình Knowledge engineering trong lĩnh vực mạch điện tử, vốn đã quen thuộc. Cách tiếp cận này chủ yếu phù hợp để tạo ra cơ sở tri thức có mục đích đặc biệt.
Quá trình Knowledge engineering
Sau đây là một số bước chính của quy trình kiến thức-kỹ thuật. Sử dụng các bước này, chúng tôi sẽ phát triển cơ sở kiến thức cho phép chúng tôi suy luận về mạch kỹ thuật số (Bộ cộng đầy đủ một bit) được đưa ra bên dưới
Xác định nhiệm vụ
Bước đầu tiên của quy trình là xác định nhiệm vụ và đối với mạch kỹ thuật số, có nhiều nhiệm vụ lý luận khác nhau.
Ở cấp độ đầu tiên hoặc cấp độ cao nhất, chúng tôi sẽ kiểm tra chức năng của mạch:
- Mạch có thêm đúng cách không?
- Đầu ra của cổng A2 sẽ là bao nhiêu, nếu tất cả các đầu vào đều ở mức cao?
Ở cấp độ thứ hai, chúng ta sẽ xem xét các chi tiết cấu trúc mạch như:
- Cổng nào được kết nối với thiết bị đầu cuối đầu vào đầu tiên?
- Mạch có các vòng phản hồi không?
Tích hợp các kiến thức liên quan
Trong bước thứ hai, chúng tôi sẽ tập hợp các kiến thức liên quan cần thiết cho các mạch kỹ thuật số. Vì vậy, đối với mạch kỹ thuật số, chúng ta có những kiến thức cần thiết sau:
- Mạch logic được tạo thành từ dây và cổng.
- Tín hiệu đi qua các dây dẫn đến cực đầu vào của cổng và mỗi cổng tạo ra đầu ra tương ứng sẽ chảy xa hơn.
- Trong mạch logic này, có bốn loại cổng được sử dụng: AND, OR, XOR và NOT.
- Tất cả các cổng này có một thiết bị đầu cuối đầu ra và hai thiết bị đầu cuối đầu vào (ngoại trừ cổng NOT, nó có một thiết bị đầu cuối đầu vào).
Quyết định về từ vựng
Bước tiếp theo của quy trình là chọn các hàm, vị từ và hằng số để đại diện cho các mạch, thiết bị đầu cuối, tín hiệu và cổng. Đầu tiên chúng ta sẽ phân biệt các cổng với nhau và với các đối tượng khác. Mỗi cổng được biểu diễn dưới dạng một đối tượng được đặt tên bằng một hằng số, chẳng hạn như Cổng (X1). Chức năng của mỗi cổng được xác định theo kiểu của nó, được coi là các hằng số như AND, OR, XOR hoặc NOT. Các mạch sẽ được xác định bởi một vị từ: Circuit (C1).
Đối với thiết bị đầu cuối, chúng ta sẽ sử dụng vị từ: Terminal (x).
Đối với đầu vào cổng, chúng tôi sẽ sử dụng hàm In (1, X1) để biểu thị đầu vào đầu tiên của cổng và đối với đầu ra đầu ra, chúng tôi sẽ sử dụng Đầu ra (1, X1).
Hàm Arity (c, i, j) được sử dụng để biểu thị rằng mạch c có i đầu vào, đầu ra j.
Kết nối giữa các cổng có thể được biểu diễn bằng vị từ Connect (Out (1, X1), In (1, X1)).
Chúng tôi sử dụng một vị từ một ngôi On (t), điều này đúng nếu tín hiệu tại một thiết bị đầu cuối đang bật.
Mã hóa knowledge chung về Domain
Để mã hóa các kiến thức chung về mạch logic, chúng ta cần một số quy tắc sau:
Nếu hai thiết bị đầu cuối được kết nối thì chúng có cùng một tín hiệu đầu vào, nó có thể được biểu diễn như sau:
∀ t1, t2 Terminal (t1) ∧ Terminal (t2) ∧ Connect (t1, t2) → Signal (t1) = Signal (2).
Tín hiệu ở mọi thiết bị đầu cuối sẽ có giá trị 0 hoặc 1, nó sẽ được biểu thị là:
∀ t Terminal (t) →Signal (t) = 1 ∨Signal (t) = 0.
Các vị từ kết nối có tính chất giao hoán:
∀ t1, t2 Connect(t1, t2) → Connect (t2, t1).
Đại diện các loại cổng:
∀ g Gate(g) ∧ r = Type(g) → r = OR ∨r = AND ∨r = XOR ∨r = NOT.
Đầu ra của cổng AND sẽ bằng 0 nếu và chỉ khi bất kỳ đầu vào nào của nó bằng 0.
∀ g Gate(g) ∧ Type(g) = AND →Signal (Out(1, g))= 0 ⇔ ∃n Signal (In(n, g))= 0.
Đầu ra của cổng OR là 1 nếu và chỉ khi bất kỳ đầu vào nào của nó là 1:
∀ g Gate(g) ∧ Type(g) = OR → Signal (Out(1, g))= 1 ⇔ ∃n Signal (In(n, g))= 1
Đầu ra của cổng XOR là 1 nếu và chỉ khi các đầu vào của nó khác nhau:
∀ g Gate(g) ∧ Type(g) = XOR → Signal (Out(1, g)) = 1 ⇔ Signal (In(1, g)) ≠ Signal (In(2, g)).
Đầu ra của cổng NOT đảo ngược với đầu vào của nó:
∀ g Gate(g) ∧ Type(g) = NOT → Signal (In(1, g)) ≠ Signal (Out(1, g)).
Tất cả các cổng trong mạch trên đều có hai đầu vào và một đầu ra (trừ cổng NOT).
∀ g Gate(g) ∧ Type(g) = NOT → Arity(g, 1, 1) ∀ g Gate(g) ∧ r =Type(g) ∧ (r= AND ∨r= OR ∨r= XOR) → Arity (g, 2, 1).
Tất cả các cổng đều là mạch logic:
∀ g Gate(g) → Circuit (g).
Mã hóa mô tả của trường hợp vấn đề
Bây giờ chúng ta mã hóa vấn đề của mạch C1, trước hết chúng ta phân loại mạch và các thành phần cổng của nó. Bước này rất dễ dàng nếu bản thể luận về vấn đề đã được suy nghĩ. Bước này liên quan đến việc viết các câu nguyên tử đơn giản về các trường hợp của khái niệm, được gọi là bản thể học.
Đối với mạch C1 đã cho, chúng ta có thể mã hóa trường hợp vấn đề trong các câu nguyên tử như sau:
Vì trong mạch có hai cổng XOR, hai AND và một cổng OR nên các câu nguyên tử cho các cổng này sẽ là:
For XOR gate: Type(x1)= XOR, Type(X2) = XOR For AND gate: Type(A1) = AND, Type(A2)= AND For OR gate: Type (O1) = OR.
Và sau đó đại diện cho các kết nối giữa tất cả các cổng.
Lưu ý: Bản thể học định nghĩa một lý thuyết cụ thể về bản chất của sự tồn tại.
Đặt các truy vấn cho quy trình suy luận và nhận câu trả lời
Trong bước này, chúng tôi sẽ tìm tất cả các bộ giá trị có thể có của tất cả các thiết bị đầu cuối cho mạch bộ cộng. Truy vấn đầu tiên sẽ là:
Sự kết hợp của đầu vào sẽ tạo ra đầu ra đầu tiên của mạch C1, là 0 và đầu ra thứ hai là 1?
∃ i1, i2, i3 Signal (In(1, C1))=i1 ∧ Signal (In(2, C1))=i2 ∧ Signal (In(3, C1))= i3 ∧ Signal (Out(1, C1)) =0 ∧ Signal (Out(2, C1))=1
Gỡ lỗi knowledge base
Bây giờ chúng ta sẽ gỡ lỗi cơ sở knowledge và đây là bước cuối cùng của quá trình hoàn chỉnh. Trong bước này, chúng tôi sẽ cố gắng gỡ lỗi các vấn đề của cơ sở knowledge.
Trong cơ sở tri thức, chúng ta có thể đã bỏ qua các khẳng định như 1 ≠ 0.