Các thuật toán di truyền học là những thuật toán tìm kiếm dựa trên quá trình tiến hóa và tồn tại tự nhiên của những cá thể thích nghi nhất trong thế giới sinh học [16]. Trong khi các kỹ thuật tối ƣu hóa truyền thống tìm kiếm một nghiệm tối ƣu từ một điểm đơn nhất, thì GA lại tìm từ một tổng thể các nghiệm [47]. Theo cách thức truyền thống, các nghiệm đƣợc biểu diễn dƣới dạng nhị phân, là các dãy 0 và 1, nhƣng các cách mã hóa khác cũng khả thi. Sự tiến hóa thƣờng bắt đầu từ một tổng thể các cá thể đƣợc tạo ngẫu nhiên và diễn ra qua nhiều thế hệ. Trong mỗi thế hệ, độ thích nghi của mỗi cá thể trong tổng thể đƣợc đánh giá, nhiều cá thể đƣợc chọn ngẫu nhiên từ tổng thể các nghiệm (dựa trên mức độ thích nghi của chúng), và điều chỉnh (lai ghép và đột biến ngẫu nhiên) để hình thành nên một tổng thể mới. Sau đó, tổng thể mới đƣợc sử dụng ở vòng lặp kế tiếp của thuật toán. Nói chung, thuật toán kết thúc khi xảy ra một trong hai trƣờng hợp: (1) đã tạo đƣợc số lƣợng thế hệ lớn nhất (maximum number of generations); hoặc (2) đã đạt tới mức thích nghi thỏa mãn (satisfactory fitness level) đối với tổng thể. Nếu thuật toán kết thúc do trƣờng hợp thứ nhất, thì ta có thể có hoặc không đạt tới một nghiệm thỏa mãn.
Các thuật toán di truyền đƣợc ứng dụng trong tin sinh học, phân loại di truyền, khoa học máy tính, kỹ thuật, kinh tế học, hóa học, toán học, vật lý và nhiều lĩnh vực khác.
Một thuật toán di truyền điển hình đòi hỏi xác định: 1. Biểu diễn di truyền của tập nghiệm
2. Hàm thích nghi (fitnesss function) để đánh giá tập nghiệm
Một biểu diễn tiêu chuẩn của nghiệm là một mảng các bit. Cũng có thể sử dụng các mảng thuộc loại và cấu trúc khác theo cách thức cơ bản nhƣ vậy. Tính chất chủ yếu khiến cho các biểu diễn di truyền trở nên thuận tiện là rất dễ sắp xếp các phần của chúng do có kích thƣớc cố định, và điều này tạo điều kiện cho các phép lai đơn giản. Cũng có thể sử dụng các biểu diễn độ dài của biến, nhƣng trong trƣờng hợp này, việc
tiến hành lai trở nên phức tạp hơn. Các biểu diễn hình cây đƣợc khai thác trong việc lập trình di truyền và các biểu diễn dạng đồ thị đƣợc sử dụng trong lập trình tiến hóa.
Hàm thích nghi đƣợc xác định dựa trên biểu diễn di truyền và các thƣớc đo chất lƣợng nghiệm đƣợc biểu diễn. Hàm thích nghi luôn luôn phụ thuộc vào bài toán đặt ra. Ví dụ, trong bài toán ba lô, ta muốn lấy tổng giá trị lớn nhất của các vật mà ta có thể bỏ vào ba lô với sức chứa đƣợc xác định trƣớc. Biểu diễn nghiệm của bài toán này có thể là một mảng các bít, trong đó mỗi bit biểu diễn một vật khác nhau, và giá trị của bit (0 hoặc 1) biểu diễn việc vật đó có trong ba lô hay không. Không phải mọi biểu diễn nhƣ vậy đều đúng, vì kích thƣớc của vật có thể vƣợt quá sức chứa của ba lô. Độ thích nghi của nghiệm là tổng giá trị của tất cả các vật trong ba lô nếu biểu diễn đúng, hoặc bằng 0 trong trƣờng hợp ngƣợc lại. Trong một số bài toán, việc xác định biểu thức thích nghi rất khó, hoặc thậm chí bất khả thi; trong trƣờng hợp này, ta sử dụng thuật toán di truyền tƣơng tác [47].
Một khi ta đã xác định đƣợc biểu diễn di truyền và hàm thích nghi, thì bƣớc tiếp theo của GA là khởi tạo một tổng thể các nghiệm một cách ngẫu nhiên, rồi nâng cấp nó thông qua việc áp dụng lặp đi lặp lại các phép đột biến, lai ghép, nghịch đảo và chọn lọc.
2.3.2.1 Khởi tạo
Ban đầu, nhiều nghiệm cá thể đƣợc tạo ra một cách ngẫu nhiên nhằm hình thành nên một tổng thể khởi đầu. Quy mô tổng thể phụ thuộc vào bản chất của bài toán, nhƣng về cơ bản nó chứa hàng trăm, hàng nghìn các nghiệm hợp lý (Theo cách thức truyền thống, tổng thể đƣợc tạo nên một cách ngẫu nhiên, chứa đựng toàn bộ vùng nghiệm hợp lý). Đôi khi nghiệm có thể “đƣợc gieo” vào những vùng mà ta có thể tìm đƣợc các nghiệm tối ƣu.
2.3.2.2 Lựa chọn
Trong mỗi thế hệ kế cận nhau, một phần trong tổng thể đang tồn tại đƣợc chọn lựa để tạo dựng nên một thế hệ mới. Các nghiệm cá thể đƣợc chọn thông qua một quá trình dựa trên mức độ thích nghi, trong đó các nghiệm thích nghi hơn (đƣợc đo bằng một hàm thích nghi) thƣờng có khả năng đƣợc chọn nhiều hơn. Một số phƣơng pháp chọn đánh giá độ thích nghi của mỗi nghiệm và ƣu tiên lựa chọn các nghiệm tốt nhất. Những phƣơng pháp khác chỉ đánh giá một mẫu ngẫu nhiên của tổng thể, vì quá trình này có thể rất tốn thời gian.
Hầu hết các hàm là hàm ngẫu nhiên và đƣợc thiết kế sao cho một phần nhỏ trong các nghiệm ít thích nghi hơn cũng sẽ đƣợc lựa chọn. Điều này giúp ta giữ đƣợc tính đa dạng của tổng thể lớn, tránh khả năng hội tụ sớm tới các nghiệm xấu. Các phƣơng pháp chọn phổ biến và đƣợc nghiên cứu nhiều gồm có chọn cò quay (roulette wheel selection) và chọn theo vòng thi đấu (tournament selection).
2.3.2.3 Tái sinh sản
Bƣớc tiếp theo là tạo nên tổng thể thế hệ thứ hai của các nghiệm từ những nghiệm đƣợc chọn thông qua các phép toán di truyền: phép lai và/hoặc phép đột biến.
Với mỗi nghiệm mới đƣợc tạo ra, một cặp nghiệm “cha mẹ” đƣợc chọn để gây giống từ nhóm đã đƣợc chọn từ trƣớc. Thông qua việc sinh ra một nghiệm “con” bằng các phƣơng pháp lai ghép và đột biến ở trên, một nghiệm mới đƣợc tạo ra, và thƣờng mang trong nó nhiều đặc điểm của “cha mẹ”. Những cha mẹ mới lại đƣợc lựa chọn cho mỗi đứa con, và quá trình tiếp diễn cho đến khi một tổng thể mới các nghiệm với quy mô thích hợp đƣợc tạo ra.
Những quá trình này cuối cùng sẽ tạo ra tổng thể thế hệ kế tiếp của các nhiễm sắc thể, có những khác biệt so với thế hệ ban đầu. Nói chung, mức độ thích nghi trung bình sẽ tăng dần thông qua thủ tục này, vì chỉ những cá thể tốt nhất trong thế hệ thứ nhất đƣợc lựa chọn gây giống, cùng với một nhóm nhỏ các nghiệm có mức thích nghi thấp hơn, bởi những nguyên nhân đã đƣợc bàn ở trên.
2.3.2.4 Kết thúc
Quá trình nối tiếp thế hệ này lặp đi lặp lại cho đến khi đạt tới điều kiện kết thúc. Các điều kiện kết thúc thông thƣờng là:
Tìm đƣợc một nghiệm thỏa mãn các tiêu chí nhỏ nhất (minimum criteria)
Số lƣợng các thế hệ đạt tới mức cố định
Đạt tới mức ngân sách (thời gian tính toán hoặc tiền bạc) đã đƣợc phân bổ trƣớc
Mức thích nghi của nghiệm đƣợc xếp hạng cao nhất đạt tới một trạng thái bình ổn, tại đó các phép lặp tiếp theo cũng không tạo đƣợc kết quả tốt hơn
Kiểm duyệt thủ công
Kết hợp các điều kiện ở trên
2.3.2.5 Mã giả thuật toán di truyền
Về cơ bản, phƣơng pháp giải một bài toán GA là xếp hạng những nghiệm có thể chấp nhận đƣợc (khi chúng đƣợc tạo ra), rồi sử dụng thứ hạng này để giúp tìm kiếm thêm những nghiệm liên quan. Việc tìm kiếm đƣợc thực hiện qua một số bƣớc lặp. Trong mỗi bƣớc lặp của một GA, ta tiến hành lựa chọn toàn diện, để loại bỏ những nghiệm không thích hợp. Những nghiệm có độ thích nghi cao có nhiều cơ hội đƣợc lựa chọn để tái kết hợp với nhau, nhằm tạo nên những nghiệm hứa hẹn hơn. Các nghiệm cũng bị đột biến bởi những thay đổi nhỏ ngẫu nhiên. Cách tìm kiếm trong GA sẽ tập trung vào kiểm tra không gian tìm kiếm bị chệch về phía các vùng có chứa những nghiệm tốt. Mã giả dành cho một thuật toán di truyền học đƣợc mô tả nhƣ sau:
1. Chọn tổng thể ban đầu
2. Đánh giá mức thích nghi của mỗi cá thể trong tổng thể
3. Lặp lại cho đến khi kết thúc: (đạt tới giới hạn thời gian hay mức độ thích nghi đủ)
a. Lựa chọn các cá thể được xếp hạng cao nhất để tái sinh sản
b. Gây giống cho thế hệ mới thông qua phép lai và/hoặc phép đột biến (các phép toán di truyền) và cho ra đời các thế hệ “con”
c. Đánh giá mức thích nghi của mỗi cá thể trong thế hệ “con” d. Thay thế phần tổng thể có xếp hạng thấp nhất bằng các thế hệ “con” này.
CHƢƠNG 3. XÂY DỰNG MÔ HÌNH KHUÔN MẶT 3D TỪ MỘT KHUÔN MẶT GỐC
3.1 Giới thiệu
Nhƣ đã nhắc tới ở chƣơng 2, trong chƣơng này tôi giới thiệu một phƣơng pháp chuyển hoạt ảnh khuôn mặt mà không cần nhiều sự tham gia của con ngƣời. Bùi Thế Duy và cộng sự [9] dùng mạng RBF của Broomhead và Lowe [6] để biến đổi mô hình khuôn mặt nguồn, nhằm biểu diễn một mô hình khuôn mặt mục tiêu, bằng việc sử dụng định dạng cụ thể của các điểm đánh dấu tƣơng ứng trên hai mô hình khuôn mặt. Các điểm đánh dấu trên mô hình khuôn mặt nguồn đƣợc điều chỉnh thủ công một lần và đƣợc tái sử dụng cho mọi mô hình mục tiêu khác. Bùi Thế Duy và cộng sự [9] sử dụng một phƣơng pháp mới để tự động xác định và điều chỉnh các điểm đánh dấu trên mô hình khuôn mặt mục tiêu. Quá trình này đƣợc thực hiện bằng các thuật toán di truyền. Hàm thích nghi (fittness function) đƣợc dùng trong GA biểu diễn sự khác nhau giữa bề mặt của mô hình khuôn mặt đƣợc biến đổi và mô hình khuôn mặt mục tiêu. Tôi cũng tìm hiểu một thuật toán để tính hàm này một cách nhanh chóng. Sau khi đã đặt tất cả các điểm đánh dấu vào những vị trí tối ƣu, Bùi Thế Duy và cộng sự [9] dùng mạng RBF để biến đổi mô hình khuôn mặt nguồn, cũng nhƣ chuyển các cơ trên mô hình khuôn mặt nguồn tới mô hình khuôn mặt vừa đƣợc biến đổi.
Có một số ƣu điểm khi sử dụng mô hình khuôn mặt biến đổi để thể hiện một mô hình khuôn mặt mới thay cho việc sử dụng chính bản thân mô hình mới. Thứ nhất, khi tạo hoạt ảnh với những mô hình khuôn mặt khác nhau, tôi có thể giữ đƣợc một mô hình khuôn mặt cố định với số đỉnh và số đa giác đƣợc xác định trƣớc. Thứ hai, ta có thể tái sử dụng các thông số trên mô hình khuôn mặt cố định trƣớc, ví dụ nhƣ các thông số xoay quai hàm và đảo mắt. Thứ ba, ta có thể sử dụng lại những thông tin về các vùng trên mô hình khuôn mặt để nâng cao hiệu quả của cơ vectơ và điều khiển hoạt ảnh.
Phần 3.2 mô tả phƣơng pháp của Bùi Thế Duy và cộng sự [9] với cách thức sử dụng các điểm đánh dấu tƣơng ứng để biến đổi mô hình khuôn mặt nguồn, nhằm biểu diễn một mô hình khuôn mặt mục tiêu, và cách thức điều chỉnh những điểm đánh dấu này để làm giảm sự khác biệt giữa mô hình khuôn mặt biến đổi và mô hình khuôn mặt mục tiêu. Phần 3.3 trình bày về các mạng RBF mà Bùi Thế Duy và cộng sự [9] dùng để biến đổi mô hình khuôn mặt. Để có thể giảm thiểu sự khác biệt giữa mô hình khuôn mặt biến đổi và mô hình khuôn mặt mục tiêu, họ đã xây dựng một hàm sai số tính toán để đánh giá mức khác biệt. Phƣơng pháp lấy mẫu đƣợc mô tả ở Phần 3.4, trong đó tôi cũng trình bày cách tìm phép chiếu của những điểm mẫu một cách nhanh chóng. Phần 3.5 sẽ bàn chi tiết về thuật toán di truyền học điều chỉnh các điểm đánh dấu. Cuối cùng, quy trình biến đổi và một công cụ do tôi phát triển sẽ đƣợc trình bày ở Phần 3.6 và 3.7.