James Tsang

James Tsang

A developer.
github
twitter
tg_channel

ARTS 打卡第 9 天 - 二分法、Stable Diffusion Prompt 书写技巧、SeamlessM4T 以及“读论文”的习惯

A:35. 插入搜索位置#

給定一個排序數組和一個目標值,在數組中找到目標值,並返回其索引。如果目標值不存在於數組中,返回它將會被按順序插入的位置。
請必須使用時間複雜度為 O (log n) 的算法。
示例 1:
輸入: nums = [1,3,5,6], target = 5
輸出: 2
示例 2:
輸入: nums = [1,3,5,6], target = 2
輸出: 1
示例 3:
輸入: nums = [1,3,5,6], target = 7
輸出: 4
提示:

  • 1 <= nums.length <= 10^4
  • -10^4 <= nums[i] <= 10^4
  • nums 為 無重複元素 的 升序 排列數組
  • -10^4 <= target <= 10^4
function searchInsert(nums: number[], target: number): number {
  let left = 0
  let right = nums.length - 1
  if (target <= nums[0]) {
    return left
  }
  if (target > nums[right]) {
    return right + 1
  }
  let mid = Math.floor((left + right) / 2)
  while (left < right - 1) {
    const midValue = nums[mid]
    if (midValue === target) {
      return mid
    }
    if (midValue < target) {
      left = mid
    } else {
      right = mid
    }
    mid = Math.floor((left + right) / 2)
  }
  return right
}

提交結果為:

65/65 cases passed (64 ms)
Your runtime beats 72.07 % of typescript submissions
Your memory usage beats 52.45 % of typescript submissions (43.7 MB)

看到題目要求使用時間複雜度為 O(logn) 的算法,基本可以判斷為使用二分法,前幾天剛做過一道二分法的題目,這次上手更快了。寫的時候在邊界條件的判斷上還是花了一些時間去想的。首先是考慮 mid 始終是 leftright 中間的一個值,那就無法覆蓋到超出這個邊界的情況,因此上來先判斷了下 target 是不是會超出最大邊界的,是則返回邊界情況。然後再是 leftright 會不斷壓縮,直到壓縮到 left === right - 1 的情況,這時候區間已經無法再壓縮了,因此要終止循環,最後因為一開始我們已經提前確定了值不會超出 leftright 的範圍,因此如果中間過程中沒有命中某一項,那直接範圍 right 就是正確的插入位置。

R:How to Engineer the Perfect Stable Diffusion Prompt#

以後的文章都會通過 QA 法來記錄總結,這樣會更容易掌握文章的內容,後續回顧也會更加方便。

Q:為什麼高質量的 Prompt 對使用 Stable Diffusion 來說很重要?

它給模型傳達指令和操作的框架,影響模型的執行,從而影響結果的質量。掌握 Prompt Engineering 的技巧可以讓藝術家探索藝術路徑、實驗藝術風格,甚至在 AI 藝術領域定義資產的藝術身份。

Q:創建有效的 Stable Diffusion Prompt 的步驟是什麼?

  1. 定義圖片類型
    照片 (photograph)、素描 (sketch)、3D 渲染 (3D render) 還是繪畫 (painting),定義好類型可以作為很好的基礎
  2. 定義主體
    清晰定義主體和它的屬性。主體可以是物體、人、風景或其他圖像中的核心元素
  3. 定義場景
    定義主體所在的環境,可以是背景細節、天氣條件、一天的時間等。描述得越清晰效果越好
  4. 定義風格
    比如現實 (realism)、超現實 (surrealism)、印象派 (impressionism)。或者是某位藝術家的風格
  5. 說明光照細節
    使用特定詞語說明光照條件,比如背光 (backlight)、燭光 (candlelight) 或自然光 (natural lighting);說明細緻程度,比如高度細緻 (highly detailed)、顆粒感 (grainy) 或光滑 (smooth)
  6. 聲明構圖
    定義圖中元素的佈局。比如鳥瞰圖 (aerail view)、特寫 (close-up)、廣角 (wide-angle) 或其他構圖方式。
  7. 定義色彩風格
    如果有色彩偏好也需要定義,比如三色配合 (triadic color scheme) 或者水洗配色 (washed color)
  8. 避免過度複雜
    過度複雜或矛盾的指令可能會讓模型無法輸出質量好的結果

T:SeamlessM4T - 多合一的多語言、多模態模型#

Meta AI 最新開源了一個叫做 SeamlessM4T 的多語言多模態模型,可以進行 100 多種語音到文本、語音到語音、文本到文本的翻譯和語音識別任務。

S:《李笑來:我的讀書經驗》摘錄#

之前摘錄過一段李笑來老師這篇文章裡的一句話了,感覺李笑來老師這篇文章寫得真的不錯,今天就又想起來當時看到頗有感觸的一句話:

批量閱讀學術文獻,就好像是從父母的庇護下離開而後獨立生存一樣,剛開始的時候甚至有一點害怕,但是,沒有過多久,就開始可憐起過去的自己。過去怎麼那麼傻,竟然總是要衣來伸手,飯來張口,不來什麼,就都沒有。
本科教育結束之後,理論上來講,就應該把大部分時間用來讀學術文獻,很可惜,貌似在我們國家,根本就沒有這個概念。學術研究被翻譯成通俗讀物,這個時間滯後實在是太嚴重了。

最近也讀了一點關於大語言模型的論文,一方面感受到了李笑來老師說的 “剛開始有點害怕,沒過多久就覺得早該如此” 的感覺,論文確實是一個能了解關心的領域的前沿的快速有效的路徑,閱讀論文是一個值得養成的習慣。


Reference:

  1. ARTS 打卡活動
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。