Xlera8

Giới thiệu về Mô hình khuếch tán cho Học máy

Bài viết này ban đầu được xuất bản vào hộiAI và tái xuất bản lên TOPBOTS với sự cho phép của tác giả.

Mô hình khuếch tán là mô hình chung đã trở nên phổ biến đáng kể trong vài năm qua, và vì lý do chính đáng. Một số ít các bài báo được phát hành vào những năm 2020 cô đơn đã cho thế giới thấy các mô hình Khuếch tán có khả năng hoạt động như thế nào, chẳng hạn như đánh bại các GAN[6] về tổng hợp hình ảnh. Gần đây nhất, các học viên sẽ thấy Mô hình khuếch tán được sử dụng trong DALL-E2, Mô hình tạo hình ảnh của OpenAI được phát hành vào tháng trước.

Các hình ảnh khác nhau được tạo bởi DALL-E 2 (nguồn).

Trước làn sóng thành công gần đây của Mô hình khuếch tán, nhiều học viên Học máy chắc chắn quan tâm đến hoạt động bên trong của chúng. Trong bài viết này, chúng ta sẽ xem xét cơ sở lý thuyết cho Mô hình khuếch tánvà sau đó trình bày cách tạo hình ảnh với Mô hình khuếch tán trong PyTorch. Hãy đi sâu vào!

Nếu nội dung giáo dục chuyên sâu này hữu ích cho bạn, đăng ký vào danh sách gửi thư AI của chúng tôi để được cảnh báo khi chúng tôi phát hành tài liệu mới. 

Mô hình khuếch tán - Giới thiệu

Mô hình khuếch tán là thế hệ , nghĩa là chúng được sử dụng để tạo dữ liệu tương tự như dữ liệu mà chúng được đào tạo. Về cơ bản, Mô hình khuếch tán hoạt động bằng cách phá hủy dữ liệu đào tạo thông qua việc bổ sung liên tiếp tiếng ồn Gaussian, và sau đó học cách phục hồi dữ liệu của đảo ngược quá trình ồn ào này. Sau khi đào tạo, chúng tôi có thể sử dụng Mô hình khuếch tán để tạo dữ liệu bằng cách đơn giản truyền nhiễu được lấy mẫu ngẫu nhiên thông qua quá trình khử nhiễu đã học.

Mô hình khuếch tán có thể được sử dụng để tạo ra hình ảnh từ nhiễu (điều chỉnh từ nguồn)

Cụ thể hơn, Mô hình khuếch tán là một mô hình biến tiềm ẩn ánh xạ tới không gian tiềm ẩn bằng cách sử dụng một chuỗi Markov cố định. Chuỗi này dần dần thêm nhiễu vào dữ liệu để thu được giá trị sau gần đúng q (x1: T|x0), trong đó x1,…, XT là các biến tiềm ẩn có cùng chiều với x0. Trong hình bên dưới, chúng ta thấy một chuỗi Markov như vậy được biểu thị cho dữ liệu hình ảnh.

Cuối cùng, hình ảnh được chuyển đổi tiệm cận thành nhiễu Gaussian thuần túy. Các mục tiêu đào tạo một mô hình lan tỏa là học đảo ngược quy trình - tức là đào tạo pθ(xt − 1|xt). Bằng cách đi ngược lại chuỗi này, chúng tôi có thể tạo ra dữ liệu mới.

Lợi ích của mô hình khuếch tán

Như đã đề cập ở trên, nghiên cứu về Mô hình khuếch tán đã bùng nổ trong những năm gần đây. Lấy cảm hứng từ nhiệt động lực học không cân bằng[1], Mô hình khuếch tán hiện đang sản xuất Chất lượng hình ảnh hiện đại, các ví dụ có thể được nhìn thấy bên dưới:

Ngoài chất lượng hình ảnh tiên tiến, Mô hình khuếch tán đi kèm với một loạt các lợi ích khác, bao gồm không yêu cầu đào tạo đối thủ. Những khó khăn của việc đào tạo đối thủ được ghi chép đầy đủ; và, trong trường hợp tồn tại các lựa chọn thay thế không đối nghịch với hiệu suất và hiệu quả đào tạo tương đương, thì tốt nhất là nên sử dụng chúng. Về chủ đề hiệu quả đào tạo, Mô hình khuếch tán cũng có các lợi ích bổ sung là khả năng mở rộng và khả năng song song hóa.

Mặc dù Mô hình khuếch tán dường như tạo ra kết quả từ không khí loãng, nhưng có rất nhiều lựa chọn và chi tiết toán học cẩn thận và thú vị cung cấp nền tảng cho những kết quả này và các phương pháp hay nhất vẫn đang tiếp tục phát triển trong tài liệu. Bây giờ chúng ta hãy xem lý thuyết toán học làm cơ sở cho các Mô hình khuếch tán một cách chi tiết hơn.

Mô hình khuếch tán - Lặn sâu

Như đã đề cập ở trên, Mô hình khuếch tán bao gồm tiến trình chuyển tiếp (Hoặc quá trình khuếch tán), trong đó một dữ liệu (thường là một hình ảnh) được ghi nhận dần dần và quy trình ngược lại (Hoặc quá trình khuếch tán ngược), trong đó nhiễu được chuyển trở lại thành một mẫu từ phân phối đích.

Quá trình chuyển tiếp chuỗi lấy mẫu có thể được đặt thành Gaussian có điều kiện khi mức ồn đủ thấp. Kết hợp thực tế này với giả định Markov dẫn đến một tham số hóa đơn giản của quá trình chuyển tiếp:

Lưu ý toán học

Chúng tôi đã nói về việc làm hỏng dữ liệu bởi thêm Tiếng ồn Gaussian, nhưng lúc đầu có thể không rõ chúng tôi đang thực hiện việc bổ sung này ở đâu. Theo phương trình trên, tại mỗi bước trong chuỗi, chúng ta chỉ cần lấy mẫu từ phân phối Gaussian có giá trị trung bình là giá trị trước đó (tức là hình ảnh) trong chuỗi.

Hai câu lệnh này tương đương nhau. Đó là

Để hiểu lý do tại sao, chúng tôi sẽ sử dụng một chút lạm dụng ký hiệu bằng cách khẳng định

Trường hợp hàm ý cuối cùng bắt nguồn từ sự tương đương toán học giữa tổng các biến ngẫu nhiên và tích chập của các phân phối của chúng - xem trang Wikipedia này để biết thêm thông tin chi tiết.

Nói cách khác, chúng ta đã chứng minh rằng việc khẳng định phân phối của một bước thời gian được điều kiện trên bước trước thông qua trung bình của một phân phối Gauss tương đương với việc khẳng định rằng phân phối của một bước thời gian nhất định là phân phối của bước trước với việc bổ sung nhiễu Gauss. Chúng tôi đã bỏ qua các đại lượng vô hướng được giới thiệu bởi lịch trình phương sai và hiển thị điều này cho một thứ nguyên để đơn giản hóa, nhưng một bằng chứng tương tự cũng phù hợp với Gaussian đa biến.

Nơi β1,…, ΒT là một lịch trình phương sai (đã học hoặc cố định), nếu hoạt động tốt, đảm bảo rằng xT gần như là một Gauss đẳng hướng đối với T đủ lớn.

Với giả định Markov, phân phối chung của các biến tiềm ẩn là sản phẩm của quá trình chuyển đổi chuỗi có điều kiện Gaussian (được sửa đổi từ nguồn).

Như đã đề cập trước đây, "ma thuật" của các mô hình khuếch tán đến trong quy trình ngược lại. Trong quá trình đào tạo, mô hình học cách đảo ngược quá trình khuếch tán này để tạo ra dữ liệu mới. Bắt đầu với tiếng ồn Gaussian thuần túy p (xT): = N (xT, 0, I) mô hình học phân phối chung pθ(x0: T) như

trong đó các tham số phụ thuộc thời gian của quá trình chuyển đổi Gaussian được học. Đặc biệt lưu ý rằng công thức Markov khẳng định rằng phân phối chuyển tiếp khuếch tán ngược đã cho chỉ phụ thuộc vào bước thời gian trước đó (hoặc bước thời gian sau, tùy thuộc vào cách bạn nhìn vào nó):

Hội thảo

Mô hình khuếch tán được đào tạo bởi tìm ra các chuyển đổi Markov ngược để tối đa hóa khả năng của dữ liệu huấn luyện. Trong thực tế, việc huấn luyện tương đương bao gồm việc giảm thiểu giới hạn trên của biến thiên đối với khả năng nhật ký âm.

Chi tiết ký hiệu

Lưu ý rằng LVLB về mặt kỹ thuật là một phía trên ràng buộc (phủ định của ELBO) mà chúng tôi đang cố gắng giảm thiểu, nhưng chúng tôi gọi nó là LVLB để phù hợp với tài liệu.

Chúng tôi tìm cách viết lại chữ LVLB về Kullback-Leibler (KL) Phân kỳ. Phân kỳ KL là một thước đo khoảng cách thống kê không đối xứng về lượng một phân phối xác suất P khác với phân phối tham chiếu Q. Chúng tôi quan tâm đến việc xây dựng LVLB xét về phân kỳ KL vì các phân bố chuyển tiếp trong chuỗi Markov của chúng tôi là Gaussian, và sự phân kỳ KL giữa các Gaussian có dạng đóng.

Sự phân kỳ KL là gì?

Dạng toán của sự phân kỳ KL đối với các phân bố liên tục là

Các thanh kép chỉ ra rằng hàm không đối xứng với các đối số của nó.

Dưới đây, bạn có thể thấy sự phân kỳ KL của một phân phối khác nhau P (xanh lam) từ một phân phối tham chiếu Q (màu đỏ). Đường cong màu xanh lá cây biểu thị hàm trong tích phân trong định nghĩa cho phân kỳ KL ở trên và tổng diện tích dưới đường cong biểu thị giá trị của phân kỳ KL của P từ Q tại bất kỳ thời điểm nhất định nào, một giá trị cũng được hiển thị bằng số.

Đúc Lvlb trong Điều khoản của Phân kỳ KL

Như đã đề cập trước đây, có thể [1] để viết lại LVLB gần như hoàn toàn về mặt phân kỳ KL:

Ở đâu

Chi tiết nguồn gốc

Giới hạn biến phân bằng

Thay thế các phân phối bằng các định nghĩa của chúng với giả định Markov của chúng tôi, chúng tôi nhận được

Chúng tôi sử dụng quy tắc nhật ký để biến đổi biểu thức thành tổng các nhật ký và sau đó chúng tôi rút ra số hạng đầu tiên

Sử dụng Định lý Bayes và giả thiết Markov của chúng ta, biểu thức này trở thành

Sau đó, chúng tôi chia kỳ hạn giữa bằng cách sử dụng các quy tắc nhật ký

Cô lập số hạng thứ hai, chúng ta thấy

Cắm lại điều này vào phương trình của chúng ta cho LVLB, chúng ta có

Sử dụng quy tắc nhật ký, chúng tôi sắp xếp lại

d8

Tiếp theo, chúng tôi lưu ý sự tương đương sau đây đối với sự phân kỳ KL cho hai phân phối bất kỳ:

Cuối cùng, áp dụng sự tương đương này cho biểu thức trước đó, chúng ta đi đến

Điều hòa quá trình chuyển tiếp sau trên x0 trong Lt − 1 dẫn đến một hình thức có thể kiểm soát được dẫn đến tất cả các phân kỳ KL được so sánh giữa các Gaussian. Điều này có nghĩa là các phân kỳ có thể được tính toán chính xác bằng các biểu thức dạng đóng hơn là bằng các ước lượng Monte Carlo[3].

Lựa chọn mô hình

Với nền tảng toán học cho hàm mục tiêu của chúng ta đã được thiết lập, bây giờ chúng ta cần phải thực hiện một số lựa chọn về cách thực hiện Mô hình khuếch tán của chúng ta. Đối với quá trình kỳ hạn, lựa chọn duy nhất cần thiết là xác định lịch trình phương sai, các giá trị của chúng thường tăng lên trong quá trình kỳ hạn.

Đối với quá trình ngược lại, chúng tôi chọn (các) kiến ​​trúc mô hình / tham số hóa phân phối Gaussian. Lưu ý mức độ linh hoạt cao mà Mô hình khuếch tán đủ khả năng - có thể  yêu cầu đối với kiến ​​trúc của chúng tôi là đầu vào và đầu ra của nó có cùng chiều.

Chúng ta sẽ cùng tìm hiểu chi tiết hơn về các sự lựa chọn này ở phần dưới đây.

Tiến trình chuyển tiếp và LT

Như đã lưu ý ở trên, liên quan đến quá trình chuyển tiếp, chúng ta phải xác định lịch trình phương sai. Đặc biệt, chúng tôi đặt chúng là hằng số phụ thuộc thời gian, bỏ qua thực tế rằng chúng có thể được học. Ví dụ[3], một lịch trình tuyến tính từ β1= 10-4 đến βT= 0.2 có thể được sử dụng hoặc có thể là một chuỗi hình học.

Bất kể các giá trị cụ thể được chọn, thực tế là lịch trình phương sai là cố định dẫn đến LT trở thành một hằng số đối với tập hợp các tham số có thể học được của chúng tôi, cho phép chúng tôi bỏ qua nó khi có liên quan đến đào tạo.

Quy trình ngược và L1: T − 1

Bây giờ chúng ta thảo luận về các lựa chọn cần thiết trong việc xác định quy trình ngược lại. Nhớ lại ở trên, chúng ta đã định nghĩa các chuyển đổi Markov ngược là một Gaussian:

Bây giờ chúng ta phải xác định các dạng chức năng của μθ hoặc Σθ. Mặc dù có nhiều cách phức tạp hơn để tham số hóa Σθ[5], chúng tôi chỉ đơn giản đặt

Nghĩa là, chúng ta giả định rằng Gaussian đa biến là sản phẩm của các Gaussian độc lập có phương sai giống hệt nhau, một giá trị phương sai có thể thay đổi theo thời gian. chúng tôi đặt các phương sai này tương đương với lịch phương sai quy trình chuyển tiếp của chúng tôi.

Với công thức mới này của Σθ, chúng ta có

cho phép chúng tôi biến đổi

đến

trong đó số hạng đầu tiên trong sự khác biệt là một tổ hợp tuyến tính của xt và x0 điều đó phụ thuộc vào lịch trình phương sai βt. Dạng chính xác của hàm này không phù hợp với mục đích của chúng tôi, nhưng nó có thể được tìm thấy trong [3].

Ý nghĩa của tỷ trọng trên là tham số hóa đơn giản nhất của μθ chỉ đơn giản là dự đoán trung bình sau khuếch tán. Quan trọng là, các tác giả của [3] thực sự thấy rằng đào tạo μθ dự đoán tiếng ồn tại bất kỳ bước thời gian nhất định nào đều mang lại kết quả tốt hơn. Đặc biệt, hãy

Ở đâu

Điều này dẫn đến hàm mất mát thay thế sau, mà các tác giả của [3] được tìm thấy để dẫn đến đào tạo ổn định hơn và kết quả tốt hơn:

Các tác giả của [3] cũng lưu ý các kết nối của công thức Mô hình khuếch tán này với các mô hình sinh kết hợp điểm dựa trên động lực học Langevin. Thật vậy, có vẻ như Mô hình khuếch tán và Mô hình dựa trên điểm có thể là hai mặt của cùng một đồng xu, giống như sự phát triển độc lập và đồng thời của cơ học lượng tử dựa trên sóng và cơ học lượng tử dựa trên ma trận cho thấy hai công thức tương đương của cùng một hiện tượng[2].

Kiến trúc mạng

Trong khi hàm mất đơn giản của chúng tôi tìm cách đào tạo một mô hình ϵθ, chúng tôi vẫn chưa xác định kiến ​​trúc của mô hình này. Lưu ý rằng có thể  yêu cầu đối với mô hình là kích thước đầu vào và đầu ra của nó giống hệt nhau.

Với hạn chế này, có lẽ không có gì ngạc nhiên khi Mô hình khuếch tán hình ảnh thường được triển khai với các kiến ​​trúc giống như U-Net.

Bộ giải mã quy trình ngược và L0

Con đường dọc theo quá trình ngược lại bao gồm nhiều phép biến đổi theo phân phối Gaussian có điều kiện liên tục. Vào cuối quá trình ngược lại, hãy nhớ lại rằng chúng tôi đang cố gắng tạo ra một hình ảnh, bao gồm các giá trị pixel nguyên. Do đó, chúng ta phải nghĩ ra một cách để đạt được khả năng (nhật ký) rời rạc cho mỗi giá trị pixel có thể có trên tất cả các pixel.

Cách thực hiện điều này là đặt bước chuyển cuối cùng trong chuỗi khuếch tán ngược thành bộ giải mã rời rạc độc lập. Để xác định khả năng xảy ra một hình ảnh x cho trước0 đã cho x1, trước tiên chúng tôi áp đặt sự độc lập giữa các thứ nguyên dữ liệu:

trong đó D là thứ nguyên của dữ liệu và chỉ số trên i cho biết chiết xuất của một tọa độ. Mục tiêu bây giờ là xác định xem mỗi giá trị số nguyên có khả năng như thế nào đối với một pixel nhất định được sự phân bố trên các giá trị có thể có cho pixel tương ứng trong hình ảnh hơi nhiễu tại thời điểm t = 1:

trong đó phân bố pixel cho t = 1 được suy ra từ Gaussian đa biến dưới đây có ma trận hiệp phương sai đường chéo cho phép chúng ta chia phân phối thành tích của Gaussian đơn biến, một cho mỗi thứ nguyên của dữ liệu:

Chúng tôi giả định rằng hình ảnh bao gồm các số nguyên 0,1,…, 255 (như hình ảnh RGB tiêu chuẩn) đã được chia tỷ lệ tuyến tính thành [−1,1]. Sau đó, chúng tôi chia dòng thực thành các "nhóm" nhỏ, trong đó, cho một giá trị pixel được chia tỷ lệ nhất định x, nhóm cho phạm vi đó là [x − 1/255, x + 1/255]. Xác suất của giá trị pixel x, đưa ra phân phối Gaussian đơn biến của pixel tương ứng trong x1, là khu vực dưới phân bố Gaussian đơn biến đó trong nhóm có tâm ở x.

Dưới đây, bạn có thể thấy khu vực của mỗi nhóm này với xác suất của chúng cho Gaussian trung bình-0, trong ngữ cảnh này, tương ứng với phân phối có giá trị pixel trung bình là 255/2 (một nửa độ sáng). Đường cong màu đỏ thể hiện sự phân bố của một pixel cụ thể trong t = 1 hình ảnh và các khu vực cung cấp xác suất của giá trị pixel tương ứng trong t = 0 hình ảnh.

Ghi chú kỹ thuật

Nhóm đầu tiên và nhóm cuối cùng mở rộng ra -inf và + inf để bảo toàn xác suất tổng.

Đưa ra t = 0 giá trị pixel cho mỗi pixel, giá trị của pθ(x0|x1) đơn giản là sản phẩm của họ. Quá trình này được đóng gói ngắn gọn bởi phương trình sau:

Ở đâu

Đưa ra phương trình này cho pθ(x0|x1), chúng ta có thể tính toán số hạng cuối cùng của LVLB không được xây dựng dưới dạng Phân kỳ KL:

Mục tiêu cuối cùng

Như đã đề cập trong phần trước, các tác giả của [3] nhận thấy rằng việc dự đoán thành phần nhiễu của hình ảnh tại một bước thời gian nhất định tạo ra kết quả tốt nhất. Cuối cùng, họ sử dụng mục tiêu sau:

Do đó, các thuật toán đào tạo và lấy mẫu cho Mô hình khuếch tán của chúng tôi có thể được tóm tắt ngắn gọn trong hình dưới đây:

Tóm tắt lý thuyết mô hình khuếch tán

Trong phần này, chúng ta đã đi sâu vào lý thuyết về Mô hình khuếch tán. Có thể dễ dàng bị cuốn vào các chi tiết toán học, vì vậy chúng tôi lưu ý những điểm quan trọng nhất trong phần này dưới đây để giữ cho mình định hướng từ góc nhìn của một con chim:

  1. Mô hình khuếch tán của chúng tôi được tham số hóa dưới dạng Chuỗi Markov, nghĩa là các biến tiềm ẩn của chúng ta x1,…, XT chỉ phụ thuộc vào bước thời gian trước (hoặc sau).
  2. Sản phẩm phân phối chuyển đổi trong chuỗi Markov là Gaussian, trong đó quy trình thuận yêu cầu một lịch trình phương sai và các tham số quy trình ngược được học.
  3. Quá trình khuếch tán đảm bảo rằng xT is phân bố tiệm cận như một Gaussian đẳng hướng cho T đủ lớn.
  4. Trong trường hợp của chúng tôi, lịch trình phương sai đã được cố định, nhưng nó cũng có thể được học. Đối với các lịch trình cố định, việc tuân theo một tiến trình hình học có thể mang lại kết quả tốt hơn so với một tiến trình tuyến tính. Trong cả hai trường hợp, các phương sai thường tăng dần theo thời gian trong chuỗi (tức là βij cho tôi
  5. Mô hình khuếch tán là rất linh hoạt và cho phép bất kì kiến trúc có kích thước đầu vào và đầu ra giống nhau sẽ được sử dụng. Nhiều triển khai sử dụng Giống như U-Net kiến trúc.
  6. Sản phẩm mục tiêu đào tạo là tối ưu hóa khả năng xảy ra của dữ liệu đào tạo. Điều này được thể hiện khi điều chỉnh các thông số mô hình để giảm thiểu giới hạn trên biến thiên của khả năng ghi nhật ký âm của dữ liệu.
  7. Hầu hết tất cả các thuật ngữ trong hàm mục tiêu có thể được sử dụng như Phân kỳ KL là kết quả của giả định Markov của chúng tôi. Những giá trị trở nên có thể tính toán được vì chúng ta đang sử dụng Gaussian, do đó bỏ qua sự cần thiết phải thực hiện phép xấp xỉ Monte Carlo.
  8. Cuối cùng, sử dụng một mục tiêu đào tạo đơn giản hóa để đào tạo một hàm dự đoán thành phần nhiễu của một biến tiềm ẩn nhất định mang lại kết quả tốt nhất và ổn định nhất.
  9. bộ giải mã rời rạc được sử dụng để có được khả năng ghi nhật ký trên các giá trị pixel như là bước cuối cùng trong quy trình khuếch tán ngược.

Với tổng quan cấp cao về Mô hình khuếch tán trong tâm trí chúng ta, hãy chuyển sang xem cách sử dụng Mô hình khuếch tán trong PyTorch.

Mô hình khuếch tán trong PyTorch

Mặc dù Mô hình khuếch tán vẫn chưa được dân chủ hóa ở mức độ giống như các kiến ​​trúc / phương pháp tiếp cận cũ khác trong Học máy, nhưng vẫn có những triển khai có sẵn để sử dụng. Cách dễ nhất để sử dụng Mô hình khuếch tán trong PyTorch là sử dụng denoising-diffusion-pytorch gói, thực hiện một mô hình khuếch tán hình ảnh giống như mô hình được thảo luận trong bài viết này. Để cài đặt gói, chỉ cần gõ lệnh sau vào terminal:

pip install denoising_diffusion_pytorch

Ví dụ tối thiểu

Để đào tạo một mô hình và tạo hình ảnh, trước tiên chúng tôi nhập các gói cần thiết:

import torch
from denoising_diffusion_pytorch import Unet, GaussianDiffusion

Tiếp theo, chúng tôi xác định kiến ​​trúc mạng của mình, trong trường hợp này là U-Net. Các dim tham số chỉ định số lượng bản đồ đối tượng trước khi lấy mẫu xuống đầu tiên và dim_mults tham số cung cấp các phép nhân và cho giá trị này và các phép lấy mẫu xuống liên tiếp:

model = Unet(
 dim = 64,
 dim_mults = (1, 2, 4, 8)
)

Bây giờ kiến ​​trúc mạng của chúng ta đã được xác định, chúng ta cần phải xác định chính Mô hình khuếch tán. Chúng tôi chuyển vào mô hình U-Net mà chúng tôi vừa xác định cùng với một số tham số - kích thước hình ảnh cần tạo, số bước thời gian trong quá trình khuếch tán và sự lựa chọn giữa định mức L1 và L2.

diffusion = GaussianDiffusion(
 model,
 image_size = 128,
 timesteps = 1000, # number of steps
 loss_type = 'l1' # L1 or L2
)

Bây giờ Mô hình khuếch tán đã được xác định, đã đến lúc đào tạo. Chúng tôi tạo dữ liệu ngẫu nhiên để đào tạo và sau đó đào tạo Mô hình khuếch tán theo cách thông thường:

training_images = torch.randn(8, 3, 128, 128)
loss = diffusion(training_images)
loss.backward()

Sau khi mô hình được đào tạo, cuối cùng chúng tôi có thể tạo hình ảnh bằng cách sử dụng sample() phương pháp của diffusion sự vật. Ở đây chúng tôi tạo ra 4 hình ảnh, chỉ là nhiễu do dữ liệu đào tạo của chúng tôi là ngẫu nhiên:

sampled_images = diffusion.sample(batch_size = 4)

Đào tạo về Dữ liệu Tùy chỉnh

Sản phẩm denoising-diffusion-pytorch gói cũng cho phép bạn đào tạo một mô hình khuếch tán trên một tập dữ liệu cụ thể. Đơn giản chỉ cần thay thế 'path/to/your/images' chuỗi với đường dẫn thư mục tập dữ liệu trong Trainer() đối tượng bên dưới và thay đổi image_size đến giá trị thích hợp. Sau đó, chỉ cần chạy mã để đào tạo mô hình, và sau đó lấy mẫu như trước. Lưu ý rằng PyTorch phải được biên dịch với CUDA được kích hoạt để sử dụng Trainer lớp học:

from denoising_diffusion_pytorch import Unet, GaussianDiffusion, Trainer
model = Unet(
 dim = 64,
 dim_mults = (1, 2, 4, 8)
).cuda()
diffusion = GaussianDiffusion(
 model,
 image_size = 128,
 timesteps = 1000, # number of steps
 loss_type = 'l1' # L1 or L2
).cuda()
trainer = Trainer(
 diffusion,
 'path/to/your/images',
 train_batch_size = 32,
 train_lr = 2e-5,
 train_num_steps = 700000, # total training steps
 gradient_accumulate_every = 2, # gradient accumulation steps
 ema_decay = 0.995, # exponential moving average decay
 amp = True # turn on mixed precision
)
trainer.train()

Dưới đây, bạn có thể thấy sự biến tính lũy tiến từ nhiễu Gaussian đa biến đến các chữ số MNIST tương tự như sự khuếch tán ngược:

Kết Luận

Mô hình khuếch tán là một cách tiếp cận đơn giản và thanh lịch về mặt khái niệm đối với vấn đề tạo dữ liệu. Kết quả hiện đại của họ kết hợp với đào tạo không đối thủ đã đưa họ lên một tầm cao lớn, và những cải thiện hơn nữa có thể được mong đợi trong những năm tới với tình trạng non trẻ của họ. Đặc biệt, Mô hình khuếch tán được coi là cần thiết cho hiệu suất của các mô hình tiên tiến như DALL-E2.

dự án

[1] Học không giám sát sâu sử dụng Nhiệt động lực học Không cân bằng

[2] Mô hình tạo mô hình bằng cách ước tính trọng lượng của phân phối dữ liệu

[3] Mô hình xác suất khuếch tán Denoising

[4] Các kỹ thuật được cải tiến cho các mô hình tạo ra dựa trên điểm đào tạo

[5] Cải thiện mô hình xác suất khuếch tán khuếch tán

[6] Mô hình khuếch tán Đánh bại GAN trên Tổng hợp hình ảnh

[7] GLIDE: Hướng tới việc tạo và chỉnh sửa hình ảnh chân thực với các mô hình khuếch tán có hướng dẫn văn bản

[8] Tạo hình ảnh theo điều kiện văn bản phân cấp với độ trễ CLIP

Thưởng thức bài viết này? Đăng ký để cập nhật thêm nghiên cứu AI.

Chúng tôi sẽ cho bạn biết khi chúng tôi phát hành thêm các bài viết tóm tắt như thế này.

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?