18/11/2022

CÁCH MÁY TÍNH LƯU SỐ THỰC TRONG BỘ NHỚ VÀ SAI SỐ CỦA NÓ

 

Nếu bạn nghĩ máy tính luôn đúng, hãy thử câu lệnh sau

print( 0.1 + 0.2 + 0.3 == 0.6 )

Python sẽ trả về kết quả False?

Tại sao lại có sự tính toán sai lầm này của máy tính. Để trả lời câu hỏi, ta cần tìm hiểu về cách máy tính lưu trữ số thực (float number) trong bộ nhớ và tại sao lại có sự sai số như vậy.

Số lượng bit dùng để lưu 1 số là cố định với mọi máy tính, thường là 64 bit. Các số được lưu trữ bởi 3 phần: phần xác định dấu s(sign indicator), để xác định số đó là âm hay dương; phần số mũ e(exponent), là lũy thừa của 2 , phần hệ số f(fraction), hệ số của luỹ thừa bậc 2. Ví dụ nếu phần s, e, f của một số là 1, 10, 11 thì số đó là (-1)^1 * 2^2 * 3 = -12, hoặc nếu s,e,f lần lượt là 0, 11, 101 thì số đó là (-1)^0 * 2^3 * 5 = 40

 Hầu như tất cả các hệ thống máy tính lưu float number trong Python bằng chuẩn IEEE754 – bao gồm 64 bit. 1 bit được phân bổ cho phần xác định dấu, 11 bit được phân bổ cho phần số mũ và 52 bit được phân bổ cho phần hệ số. Với 11 bit được phân bổ cho số mũ, điều này tạo ra 2048 giá trị mà số mũ có thể nhận. Vì chúng ta muốn có thể tạo các số có độ rất chính xác cao nên chúng tôi muốn một số giá trị này biểu thị số mũ âm (để có thể biểu diễn các số nằm trong khoảng từ 0 đến 1 trong hệ cơ số 10). Để thực hiện điều này, 1023 được trừ khỏi số mũ để chuẩn hóa nó, ( ví dụ, giá trị phần số mũ là 5 đại diện cho giá trị 2^(5-1023) = 2^-1018 ). Phần hệ số là một số nằm trong khoảng từ 1 đến 2. Trong hệ nhị phân, điều này có nghĩa là số hạng đứng đầu sẽ luôn là 1 và do đó, sẽ rất lãng phí bit để lưu trữ nó. Để tiết kiệm không gian, số 1 hàng đầu bị loại bỏ. Do đó dạng chung của float là (-1)^s * 2^(e-1023) * (1+f), với s, e, f là phần xác định dấu, số mũ và hệ số.

 Trong Python, chúng ta có thể lấy thông tin float number bằng thư viện sys như bên dưới:

import sys

sys.float_info


Các số thập phân được lưu dưới dạng chung:

n = (-1)^s * 2^(e-1023) * (1+f)

Câu hỏi: Số 1 10000000010 1000000000000000000000000000000000000000000000000000 (IEEE754) là số nào trong hệ cơ số 10

Ta có phần xác định dấu là 1, đại diện cho số dương; phần số mũ là 10000000010, đại diện cho 1 * 2^10 + 1 * 2^1 = 1026, phần cơ số là 1 * 1/ 2^1 + 0 * 1/ 2^2 + 0 * 1/ 2^3 + … = 0.5 Do đó từ dạng chung ta có

n = (-1)^1 * 2^3 * (1+0.5) = -12

Bằng việc lưu trữ số bằng chuẩn IEEE754, số lớn nhất máy tính có thể lưu trữ được là

0 11111111110 1111111111111111111111111111111111111111111111111111 (IEEE754), khoảng 1.79 * 10^308 trong cơ số 10, và số dương nhỏ nhất có thể lưu được là 0 00000000001 000000000000000000000000000000000000000000000000000 (IEEE754), bằng khoảng 5 * 2^-324, và mọi số nhỏ hơn số này được máy tính coi là bằng 0.

Tuy nhiên chúng ta có thể thấy việc lưu trữ số bằng chuẩn IEEE754 khiến máy tính không thể lưu trữ chính xác được giá trị của mọi số thực(do trên lí thuyết thì số các số khác nhau trong chuẩn IEEE754 là rất lớn nhưng vẫn hữu hạn), mà chỉ lưu một giá trị xấp xỉ của số đó. Để dễ hình dung hơn, ta sẽ xét ví dụ sau

Trong chuẩn IEEE754 số 15 được lưu dưới dạng 0 10000000010 1110000000000000000000000000000000000000000000000000, số liền kề nhỏ hơn nó là 0 10000000010 1101111111111111111111111111111111111111111111111111 = 14.9999999999999982236431605997, và số liền kề lớn hơn nó là 0 10000000010 1110000000000000000000000000000000000000000000000001 = 15.0000000000000017763568394003                                      

Do đó, với mỗi số thực nằm ở trong khoảng trên đều được biểu diễn bởi một trong ba số này trong chuẩn IEEE754, cũng có nghĩ khi tính toán, mọi kết quả nằm trong khoảng này đều được làm tròn về giá trị chuẩn IEEE754 gần nhất, chính điều này đã tạo ra sự sai lệch trong tính toán ở câu hỏi đưa ra ở phần đầu bài viết. Khi đó, trong khi tính toán 0.1 + 0.2 + 0.3 máy tính đã xấp xỉ kết quả này bằng một giá trị IEEE754 rất gần 0.6(nhưng không cùng giá trị IEEE754 với số 0.6), nên khi in ra kết quả của 0.1 + 0.2 + 0.3 == 0.6 sẽ là False.












20/08/2022

DEEPFAKE LÀ GÌ, NGUỒN GỐC VÀ NHỮNG TÁC ĐỘNG CỦA NÓ ĐẾN CUỘC SỐNG

Deepfakes là gì

Cái tên Deepfake là kết hợp của "fake" và "deep learning", nó là một dạng video, ảnh, âm thanh giả, sử dụng các thuật toán Trí tuệ nhân tạo để thay đổi gương mặt, giọng nói hay thậm chí cả cử chỉ, chuyển động của người xuất hiện trong đó một cách chân thật nhất có thể. Bạn đọc có thể xem qua các nội dung Deepfakes ngắn sau trên Youtube để thấy được sự chân thực và khó phân biệt của nó :

Lynda Carter Wonder Woman [deepfake]: http://youtu.be/BwRmeT1lEFg

Dalí Lives – Art Meets Artificial Intelligence: http://youtu.be/mPtcU9VmIIE

Hiện nay, một số trang web đã cung cấp công cụ để tạo ra deepfake và có thể dễ dàng tiếp cận với người dùng Internet, phổ biến có thể kể đến đó là DeepFaceLabFaceSwap. Tuy nhiên để tạo ra một deepfake đáng tin, khó bị phát hiện thì vẫn là một công việc khó với hầu hết mọi người, nó yêu cầu phải có hiểu biết về chuyên môn và cả tài nguyên về GPU, thời gian để huấn luyện cho model.

Deepfake bao gồm 3 loại chính đó là Face Swapping(Thay thế mặt và cơ thể của người A bằng người B), Body Puppetry( Chuyển động, cử chỉ hay là cảm xúc của người A sẽ được ghi lại và sao chép lại vào người B) và Voice Swapping(Một đoạn văn bản bất kì được đọc một cách chân thực nhất bởi giọng của một người, phương pháp này có thể kết hợp với Face Swapping và Body Puppetry)

Nguồn gốc của Deepfake



Deepfake bắt nguồn từ cuối năm 2017 bởi một tài khoản Reddit cùng tên, người này tạo một forum đăng tải các nội dung sử dụng deepfake để ghép mặt diễn viên nổi tiếng vào phim ‘porn’. Kể từ đó đến nay, deepfake đã có nhiều ảnh hưởng cả tích cực cũng như tiêu cực đến xã hội, sau đây chúng ta cũng tìm hiểu về những ứng dụng phổ biến của nó. Tuy nhiên, đáng buồn là 😊)), theo một thống kê của Deeptrace, các nội dung ‘porn’ chiếm đến 96% deepfake videos được tìm thấy trên Internet vào 2019.

Mối đe doạ của Deepfake

Có thể làm ảnh hưởng lớn đến danh tiếng của những người nổi tiếng, khi những deepfakes có nội dung không lành mạnh có ghép mặt của họ và bị lan truyền trên Internet. Ví dụ như Emma Watson, những deepfake videos ghép mặt của cô đã trở nên viral trên Internet trước khi bị phát hiện là giả mạo (Lưu ý: Từ giờ thấy ‘link’ mới anh em hãy kiểm tra cẩn thận xem đó có phải sản phẩm của Deepfake không nhé 😊)), cách phát hiện có ở cuối của bài viết này)

Deepfake góp phần lan truyền tin giả trên các nền tảng mạng xã hội. Thậm chí DARPA(Defense Advanced Research Projects Agency)- một lực lượng của Quân đội Mỹ, đã chi 68 triệu dollars trong việc nghiên cứu để phân biệt deepfakes và nội dung thật.

      Tội phạm có thể sử dụng danh tính của người khác để đi lừa đảo thông qua sử dụng deepfake, ví dụ như chúng gửi email, bài viết nhân danh chính trị gia, CEOs, để yêu cầu thông tin cá nhân hay tài khoản ngân hàng của nạn nhân. Thậm chí cả giọng nói cũng có thể giả mạo để thêm độ tin cậy, năm 2019 nhóm tội phạm đã thành công sử dụng Deepfake giả dạng giọng nói của CEO một công ty Đức để đánh cắp $243,000 từ một công ty năng lượng tại Anh.

Lợi ích Deepfake mang lại  

Tuy nhiên, hãy nhớ rằng Deepfake là bạn. Mặc dù rất nhiều tác động tiêu cực của nó ảnh hưởng đến cuộc sống của chúng ta như đã nêu trên, tuy nhiên khả năng ứng dụng của Deepfakes nói riêng, hay Trí tuệ nhân tạo nói chung, là rất cần thiết cho sự phát triển của con người. Một vài ảnh hưởng tích cực của Deepfake có thể kể đến như

Deepfake có rất nhiều ứng dụng trong lĩnh vực nghệ thuật. Nó có thể giúp hồi sinh những tác phẩm của những nghệ sĩ đã mất, ví dụ như Samsung’s AI Lab tại Moscow đã thành công tái hiện nàng Mona Lisa trong một video, bao gồm chuyển động chân thực về cả mắt, đầu, hay miệng. Dalí Lives là một triển lãm được tổ chức bởi bảo tàng Salvador Dalí về nghệ sĩ đã qua đời Salvador Dalí, được thực hiện bằng công nghệ Deepfakes. Deepfake tương tác cho phép khán giả tham gia không chỉ với nghệ thuật của Dalí mà còn với chính nghệ sĩ , người có thể trả lời các câu hỏi, kể những câu chuyện về cuộc đời mình và thậm chí chụp ảnh tự sướng với khách truy cập. Các bạn có thể xem video sau để thấy được sự chân thật của công nghệ Deepfake http://youtu.be/BIDaxl4xqJ4&t=2s

Deepfake đang dần được áp dụng trong lĩnh vực quảng cáo, truyền thông, nó giúp có thể quay phim một người khi người đó không thể xuất hiện, hoặc đã mất. Một công ty Nga đã chi ra từ 1-2 triệu USD để có thể sử dụng hình ảnh của diễn viên người Mỹ Bruce Willis, sau đó sử dụng deepfakes lồng ghép vào khuôn mặt với một người có vóc dáng tương đồng với nam diễn viên để quay các video quảng cáo, theo VTV24: http://youtu.be/Xsl-YyQBZos

Reuters kết hợp với công ty start-up về AI Synthesia đã sử dụng Deepfake để tạo ra MC ảo dẫn chương trình cho những bản tin tức mới nhất, thậm chí được kì vọng trong tương lai có thể dễ dàng tạo ra những bản tin cá nhân hoá cho từng người xem.

-        Trong giáo dục và y tế, có thể kể đến vài ứng dụng như một tổ chức Y tế phi lợi nhuận ở Anh đã sử dụng Deepfake tạo ra đoạn video David Beckham đang nói về cách phòng chống bệnh sốt rét bằng … 9 thứ tiếng khác nhau, bạn đọc có thể xem video đó tại đây https://www.synthesia.io/post/david-beckham , hoặc có thể giúp tái hiện những video lịch sử sinh động của những nhân vật lịch sử đã mất, giống như cách bảo tàng Salvador Dalí đã làm để làm ‘sống lại’ hình ảnh của người nghệ sĩ quá cố Salvador Dalí để công chúng được tiếp cận gần gũi hơn đến với những tác phẩm nghệ thuật của ông.

….

Cách phân biệt deepfake và video thật

-        Khuôn mặt: Hãy chú ý những điểm bất thường như người đó có nháy mắt quá ít hay quá nhiều? Hay lông mày của họ có thực sự cân xứng tự nhiên với khuôn mặt? Hay tóc của họ có bị sai chỗ của nó hay không? Hoặc để ý xem da của họ có quá nhiều nếp nhăn hay không

-        Giọng nói: Hãy chú ý xem giọng nói của họ có thực sự khớp với cử động xung quanh miệng và căm, ngoài ra để ý đến cả dáng người bất thường so với giọng nói, ví dụ như một người đang ông to cao lực lưỡng với một giọng nói nhẹ nhàng.

-        Ánh sáng: Hãy chú ý đến những chi tiết nhỏ về ánh sáng, ví dụ như cái bóng, hay những hình ảnh phản chiếu, bởi Deepfake thường không thể diễn tả đầy đủ được những đặc điểm vật lí tự nhiên của ánh sáng.

14/09/2021

AMAZON SỬ DỤNG TRÍ TUỆ NHÂN TẠO ĐỂ GIAO HÀNG CHỈ TRONG 1H NHƯ THẾ NÀO ?

Ngày nay trí tuệ nhân tạo được sử dụng rộng rãi trong việc định hình thói quen và hành vi mua hàng của người tiêu dùng. Amazon Prime đã khiến người Mỹ phải hứng thú với việc vận chuyển chỉ trong vài giờ đồng hồ, và AI chính là chìa khóa cho việc rút ngắn từng phút trong quá trình gấp rút chuẩn bị, đóng gói và giao hàng. AI được đan xen qua mọi phần của giao dịch mua hàng trên Amazon, từ trang web đến kho hàng cho đến việc giao hàng thực tế đến tận nhà bạn. Trong biệt ngữ của công ty, Amazon gọi đó là "first mile", "second mile" và "last mile".

1. First mile:

Vào năm 2013, Amazon đã nhận được bằng sáng chế cho "vận chuyển dự kiến". Ý tưởng là để đơn đặt hàng của bạn càng gần địa chỉ của bạn càng tốt trước khi bạn thực sự nhấp vào mua. Freshwater - một giám đốc phần mềm của Amazon nói: “AI không chỉ có khả năng dự báo chúng ta cần hàng trăm chiếc áo blouse mà nó còn xác định được kích cỡ và màu sắc áo khách hàng sẽ mua. Và sau đó chúng tôi sẽ đặt những sản phẩm ở đâu để khách hàng có thể lấy khi họ nhấp vào mua hàng”. Đó là yếu tố quan trọng giúp Amazon tăng tốc độ giao hàng: Họ dự đoán chính xác nơi những chiếc áo blouse đó nên được dự trữ để chúng càng gần những người sẽ mua chúng càng tốt. Một số dự đoán khác của AI cũng rất thú vị, Freshwater nói: “Những người mua sắm trực tuyến thường từ bỏ hoàn toàn giỏ hàng tạp hóa của họ, nếu thấy chuối đã bán hết’’

2. Middle mile: 

Trong các nhà kho truyền thống, đó là những người đi đến các kệ hàng. Nhưng trong hầu hết các kho hàng của Amazon, các robot Kiva được điều khiển bởi AI mang các kệ hàng cho con người. Chúng biết phải mang theo những gì và khi nào cần đóng gói các đơn hàng để có thể giao hàng kịp thời. Hệ thống AI theo dõi tất cả các mặt hàng trong kho, có thể rộng tới 1 triệu feet vuông. AI liên tục sắp xếp và thay đổi cấu trúc các kệ để những thứ bạn sắp mua sẵn sàng mang đi.  Ngoài ra để loại bỏ nhu cầu sử dụng máy quét cầm tay, Amazon trang bị thêm cho các trạm của công nhân các camera tiên tiến có thể tự động quét các vật phẩm mà công nhân cầm trên tay. AI đang học cách phân biệt và diễn giải các chuyển động tay của mọi người để nhận ra khi một người đặt một món hàng vào bên trong một ngăn kệ.

3. Last mile :

Amazon chắc chắn có những công cụ mạnh mẽ nhất cho tất cả các quy trình tính toán nhỏ liên quan đến việc di chuyển các gói hàng qua nhiều nhà cung cấp, các tuyến đường vận chuyển và tất cả các bước mà một gói hàng phải trải qua. Quá trình này dựa vào AI để liên tục tính toán số lượng trình điều khiển cần thiết tại bất kỳ thời điểm nào. AI sẽ  xem xét trọng lượng và số lượng các gói hàng hướng đến cùng các khu vực lân cận và liệu các gói hàng có thể vừa với một trong những chiếc xe có sẵn hay không, thậm chí còn đề xuất thứ tự đóng thùng vào ô tô để giao hàng hiệu quả nhất.

Tuy nhiên, ứng dụng của Amazon không hướng dẫn shipper “để xe ở đâu trong khi giao hàng”, có lẽ đây là điểm duy nhất AI không tính toán đến.


20/06/2021

PHƯƠNG PHÁP THẾ CÁC BIỂU THỨC CHỨA BIẾN GIẢI PHƯƠNG TRÌNH HÀM

Trong những bài toán phương trình hàm khó, khi mà các phép thế giá trị đặc biệt cho ta những phương trình hàm không đủ mạnh để giải quyết bài toán, thì ý tưởng thế các biểu thức chứa biến sẽ là ý tưởng đầu tiên mà ta nên nghĩ đến. Ý tưởng của phương pháp này là ta sẽ thay biến trong phương trình hàm ban đầu bằng những biểu thức đặc biệt giữa các biến để tạo ra được thêm những điều kiện đủ mạnh để giải bài toán. Sau đây là một số ví dụ để bạn đọc hiểu rõ hơn về phương pháp này.