View profile

#203 - Duolingo sử dụng AI trong ứng dụng của họ như thế nào

Grokking Vietnam
Grokking Vietnam
Những bài viết hay
How Duolingo uses AI in every part of its app
Measuring Web Performance at Airbnb
Góc Database
HyperMinHash: MinHash in LogLog space
HyperMinHash: MinHash in LogLog space
Sự nở rộ của Big Data và các công nghệ liên quan cũng dẫn đến sự cần thiết của một họ thuật toán được dùng để tính toán xấp xỉ các tập dữ liệu lớn một cách hiệu quả hơn (về mặt bộ nhớ cũng như CPU), họ thuật toán này hay được gọi là sketching algorithm. Các sketching algorithm được dùng để tạo ra và tính toán dựa trên các data sketch (mẫu phác thảo dữ liệu). 
Chúng ta có thể hình dung một tập dữ liệu đầy đủ (full data set) như một bức tranh phức tạp với rất nhiều chi tiết, còn một mẫu phác thảo dữ liệu (data sketch) như một bộ khung phác thảo nhằm giúp người nghệ sỹ có thể hình dung một cách đại khái về bức tranh mà mình sẽ vẽ. Sử dụng các sketching algorithm kết hợp với các data sketch data structure, chúng ta có thể ước tính được các đặc tính của tập dữ liệu mà không phải xử lý hết toàn bộ dữ liệu gốc, đây là điều rất cần thiết trong thế giới Big Data hiện đại.
Ở hai kỳ newsletter trước chúng ta đã biết đến HyperLogLog (2007) và MinHash (1997), hai thuật toán giúp ước tính kích cỡ (HyperLogLog) cũng như tìm tỉ lệ tương đồng (MinHash) của hai tập hợp. Kết hợp hai thuật toán này với nhau là cần thiết nếu chúng ta muốn thực hiện thao tác ước tính kích cỡ cho các tập dữ liệu lớn một cách riêng lẻ cũng như các tập hợp (union), giao (intersect), bù trừ (difference) của các tập dữ liệu này.
Tuy nhiên làm sao để kết hợp hai thuật toán này? Cách đơn giản nhất là đối với từng tập dữ liệu, lưu hai cấu trúc HLL sketch và MinHash sketch một cách riêng biệt và lấy ra sử dụng khi cần. Liệu có cách nào kết hợp hai thuật toán và cấu trúc dữ liệu này lại với nhau một cách tổng quát hơn không? 
Nhiều nhà khoa học máy tính đang theo đuổi đề tài này. Ở mục Góc Database kỳ này mời các bạn cùng tìm hiểu về HyperMinHash, một cách tiếp cận được đề xuất bởi Yun William Wu và Griffin M. Weber có mục tiêu kết hợp HyperLogLog và MinHash lại với nhau.
Các bạn có thể tìm hiểu thông qua video (ở trên) hoặc paper công bố năm 2015 ở đây.
Góc Lập Trình
Đề tuần này: 
Lời giải tuần trước:
Đề tuần này: Swapping Nodes in a Linked List.
Lời giải tuần trước:
Lời giải:
Đề bài cho ta ma trận nhị phân nxn và cho phép ta đổi nhiều nhất một ô 0 thành 1 để tạo thành 1 đảo lớn hơn. Đề bài hỏi diện tích lớn nhất mà ta có thể tạo được.
Nếu bạn đọc đã làm những bài tương tự như bài Number of Islands, ta có thể dễ dàng nhận ra một cách tiếp cận như sau: “tại từng ô 0, ta tạm thời đổi thành ô 1, sau đó thực hiện DFS hoặc BFS để tìm đảo có diện tích lớn nhất”. Cách tiếp cận này cho ta giải thuật có độ phức tạp time complexity là O(n^4), với n là độ dài của ma trận.
Để tối ưu bài này, ta cần thực hiện một tiền xử lý: “tìm diện tích của các đảo hiện tại”. Sau đó, tại mỗi ô 0, ta chỉ cần kiểm tra các ô liền kề: “trên, dưới, trái, phải”, để tìm được diện tích lớn nhất mà ta có thể tạo được.
Tuy nhiên, ta cần chắc chắn rằng các ô liền kề không thuộc cùng một đảo. Để có thể phân biệt các đảo khác nhau, ta cần thực hiện “tô màu” như hình sau:
Như hình trên, nếu ta đổi ô 0 (được đóng khung đỏ) thành 1, ta đã thực hiện kết nối 3 đảo riêng biệt với nhau.
Giải thuật được thực hiện như sau: https://pastebin.com/F7EXgHsX
Để code phù hợp với phần giải thích, tôi đã sử dụng mảng “color” để đánh dấu màu của các đảo riêng biệt. Tuy nhiên, ta có thể lược bỏ mảng này, bằng cách sử dụng mảng đầu vào mới màu bắt đầu là “3”.
Giải thuật có độ phức tạp time complexity là O(n^2) với n là độ dài của ma trận.
Tech Talks
Multi-Tenancy Best Practices for Google Kubernetes Engine
Góc Sponsors
One Mount là tập đoàn kiến tạo hệ sinh thái công nghệ lớn nhất Việt Nam, cung cấp các giải pháp và dịch vụ xuyên suốt chuỗi giá trị, từ lĩnh vực dịch vụ tài chính, phân phối, bất động sản và bán lẻ, với ba sản phẩm chủ lực: VinShop, VinID, OneHousing.
Với trụ sở tại Hà Nội, Hồ Chí Minh và quy tụ hơn 1.500 nhân sự xuất sắc, One Mount tâm huyết xây dựng môi trường làm việc:
  • Đề cao “Giá trị của công việc ý nghĩa”
  • Quy tụ nhân tài Việt trên toàn cầu
  • Văn hóa thành công cùng nhau vươn tới đỉnh cao
Các vị trí hấp dẫn đang mở tuyển: 
  • Back-end Engineer (Java/Golang), Front-end Engineer (ReactJS, Angular), Mobile Developer (iOS, Android)
  • Data Analysis, Data Engineer, Data Scientist
  • Business Analysis, QC Engineer
Tham khảo các thông tin về văn hóa, môi trường làm việc, cơ hội nghề nghiệp tại One Mount:
Quotes
A language that doesn’t affect the way you think about programming is not worth knowing.
Alan J. Perlis
Did you enjoy this issue? Yes No
Grokking Vietnam
Grokking Vietnam

Cảm ơn bạn đã dành thời gian đọc newsletter kỳ này và chúng tôi hi vọng rằng bạn đã khám phá ra một số điều mới mẻ từ các bài viết trên. Các bạn có thể đọc lại các số cũ tại website newsletter.grokking.org

In order to unsubscribe, click here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Created with Revue by Twitter.
Viet Nam