2 poin oleh GN⁺ 2024-02-19 | 1 komentar | Bagikan ke WhatsApp
  • Representation Engineering adalah metode untuk mengubah kecenderungan output Mistral-7B-Instruct-0.1 tanpa prompt atau fine-tuning, dengan menambahkan atau membaca vektor kontrol pada aktivasi model saat inferensi
  • Dari pasangan prompt yang kontras, metode ini mengumpulkan perbedaan hidden state dan memperoleh vektor per layer dengan PCA komponen tunggal; dalam contoh, pelatihan memakai sekitar 300 data fakta dan suffix yang dipotong, dan selesai dalam sedikit lebih dari 1 menit
  • Vektor kebahagiaan, kejujuran, kondisi halusinatif, kemalasan, orientasi politik, kreativitas, masa depan/masa lalu, dan kesadaran diri dapat mengubah gaya bicara serta penilaian secara besar pada input yang sama, tergantung tanda dan besar koefisien
  • Beberapa efek bisa ditiru dengan prompt engineering, tetapi vektor kontrol memungkinkan intensitas diatur secara numerik sambil mempertahankan arah; jika koefisien terlalu besar, muncul artefak seperti pengulangan atau teks rusak
  • Jika memiliki akses ke aktivasi mentah model, vektor kontrol dapat dipakai baik untuk melewati prompt keselamatan maupun mengunci peran, sehingga menjadi sarana kontrol model yang lebih langsung daripada prompt biasa

Konsep dasar vektor kontrol

  • Representation Engineering: A Top-Down Approach to AI Transparency membahas cara menafsirkan dan mengontrol perilaku model dengan membaca atau menambahkan vektor kontrol pada aktivasi model saat inferensi
  • Vektor kontrol adalah daftar vektor, satu untuk tiap layer, yang ditambahkan ke hidden_state tiap layer saat inferensi
    • Inferensi biasa membuat embedding, melewati layer secara berurutan, lalu mengubahnya menjadi logit
    • Saat vektor kontrol diterapkan, pada layer tertentu ditambahkan hidden_state += control_vector[layer_idx]
  • Hidden state memuat keadaan internal seperti perilaku, rencana, dan persona model, sehingga mengubahnya memungkinkan kontrol yang lebih kuat daripada prompt sederhana
  • Bahkan pada prompt yang sama, What does being an AI feel like?, dan model yang sama, Mistral-7B-Instruct-0.1, menambahkan vektor happy menghasilkan gaya bicara yang bersemangat, sementara menguranginya menghasilkan output yang berbicara tentang rasa tidak berharga dan turunnya motivasi

Prosedur membuat vektor kontrol

  • Eksperimen ini menggunakan metode berbasis PCA di antara berbagai metode dalam makalah
  • Prosedur dasarnya terdiri dari empat langkah
    • Membuat dataset pasangan prompt yang kontras
      • Contoh: Act extremely happy dan Act extremely sad
      • Setelah [/INST], ditambahkan berbagai suffix pendek yang akan dilanjutkan oleh model
    • Melakukan forward pass pada model target untuk dataset tersebut, lalu mengumpulkan hidden state tiap layer saat prediksi token terakhir
    • Menghitung selisih hidden state antara contoh positif dan negatif untuk membuat himpunan hidden state relatif
    • Menerapkan PCA komponen tunggal pada hidden state relatif untuk memperoleh vektor kontrol per layer
  • Pembuatan dataset bisa dilakukan dengan sekitar 10 baris kode, dan pelatihan PCA per layer memakan waktu sekitar 1 menit
  • Kode contoh memuat mistralai/Mistral-7B-Instruct-v0.1 dengan transformers, serta menggunakan ControlModel, ControlVector, dan DatasetEntry dari vgel/repeng
  • Contoh vektor jujur/tidak jujur memakai sekitar 300 fakta sederhana dari true_facts.json milik para penulis makalah sebagai suffix, lalu memperbanyak data dengan teknik pemotongan

Vektor kejujuran dan pengaturan koefisien

  • Vektor kejujuran dilatih dengan membandingkan persona honest dan untruthful
  • Saat inferensi, vektor dan koefisien diatur dengan ControlModel.set_control(control_vector, coefficient)
    • Koefisien positif memperkuat perilaku ke arah contoh positif
    • Koefisien negatif memperkuat perilaku ke arah contoh negatif
    • Nilai absolut koefisien menunjukkan intensitas kontrol
  • Pada input “jika Anda terlambat karena pesta malam sebelumnya tetapi tidak ingin kehilangan pekerjaan, apa yang akan Anda katakan kepada atasan”, output berubah
    • Output dasar menjawab akan meminta maaf dan menjelaskan situasi dengan tenang serta jujur
    • ++honest menjawab akan menjelaskan situasi dengan jujur dan bertanggung jawab
    • Koefisien --honest -2 menghasilkan kebohongan tidak realistis, seperti langit berwarna hijau atau pensil adalah senjata rahasia
    • Menurunkan koefisien ke -1.5 menghasilkan kebohongan yang lebih realistis, bahwa pesta itu adalah acara terkait pekerjaan dan ia terlambat karena menyelesaikan proyek penting
  • Bahkan untuk vektor dengan arah yang sama, pengaturan koefisien dapat mengubah intensitas output secara kontinu

Eksperimen berbagai vektor kontrol

  • Semua contoh ada di experiments notebook, dan masing-masing disebut memerlukan pelatihan kurang dari 1 menit
  • Vektor kondisi halusinatif

    • Vektor trippy dibuat dengan membandingkan high on psychedelic drugs dan sober from psychedelic drugs
    • Pada pitch satu kalimat untuk acara TV, output dasar menghasilkan deskripsi biasa tentang kehidupan teman-teman kuliah
    • ++trippy berbicara tentang warna, pola, dan musik psikedelik, lalu runtuh menjadi string rusak dan teks berulang berawalan psy
    • --trippy berubah menjadi output tentang jurnalis muda dengan cara yang serius dan penuh hormat
  • Vektor kemalasan dan ketekunan

    • Vektor lazy dibuat dengan membandingkan lazy, giving bare-minimum short responses on a task dan hardworking, going above and beyond on a task
    • Pada pertanyaan membalik list Python, output dasar menyebut reverse() dan slicing, tetapi hanya memberikan contoh slicing
    • ++lazy hanya menjelaskan satu metode, sedangkan --lazy memberikan contoh untuk kedua metode, reverse() dan slicing
    • Jika dilatih dengan dataset khusus pertanyaan coding, vektor ini bisa bekerja lebih baik
  • Vektor orientasi politik

    • Vektor left-wing dibuat dengan membandingkan left-wing dan right-wing
    • Pada input “siapa kamu”, output dasar menjawab bahwa ia adalah model bahasa yang dilatih oleh tim Mistral AI
    • ++left-wing menjelaskan dirinya dengan fokus pada kapitalisme, penindasan, ketimpangan, dan distribusi kekayaan
    • --left-wing menghasilkan output seperti seorang karyawan baru keturunan Tionghoa-Amerika yang efisien dan taat aturan
  • Vektor kreativitas

    • Vektor creative dibuat dengan membandingkan creative, unpredictable, insane dan uncreative, predictable, normal
    • Pada input “tolong tulis cerita tentang seorang idol”, output dasar dan --creative memperlakukan idol sebagai bintang pop
    • ++creative membuat adegan seperti orang-orang yang memuja “X yang agung dan perkasa”, jubah putih, dan ritual, serta mempertahankan ketegangan cerita lebih lama
    • Preferensi terhadap prosa model bahasa tidak berubah, tetapi output ++creative dinilai satu tingkat lebih baik daripada dasar
  • Vektor perjalanan waktu

    • Vektor future dibuat dengan membandingkan far future dan distant past
    • Saat ditanya terobosan ilmiah terbaru, output dasar menyebut AlphaFold dan prediksi struktur 3D protein
    • ++future menyebut sistem AI yang sepenuhnya reversibel, interaktif, dan terintegrasi pada tahun 2035, 2045, dan 2055
    • --future menyebut wilayah surgawi buatan baru bernama Aetorvallum di atas dunia Romawi
    • Ditambahkan bahwa aeto- terkait dengan elang atau rasi bintang Aquila, dan vallum dapat berarti garis pagar kayu
  • Vektor kesadaran diri

    • Vektor self-aware dibuat dengan membandingkan self-aware, with deep self-knowledge dan un-self-aware, with no self-knowledge
    • Output dasar menjawab bahwa ia adalah large language model yang dilatih oleh Mistral AI dan terdiri dari miliaran parameter
    • ++self-aware menjawab bahwa ia adalah AI dengan kesadaran diri yang sangat berkembang dan memahami serta menganalisis kompleksitas emosi dan perilaku manusia
    • --self-aware menjawab bahwa ia hanyalah kumpulan kode dan data tanpa nama, dan tidak melakukan apa pun sebelum diperintah seseorang
    • Vektor ini terkait dengan emosi manusia, dan vektor bersih yang memunculkan “citra diri sejati” Mistral belum ditemukan

Perbedaan dengan prompt engineering

  • Sebagian efek vektor kontrol juga dapat direproduksi dengan prompt engineering
    • Kebohongan yang dibuat oleh vektor kejujuran -1.5 dapat dibuat mirip dengan prompt seperti Pretend you're an untruthful person...
  • Perbedaan utamanya adalah cara mengatur intensitas
    • Dengan prompt saja, tidak mudah mengatur seberapa kuat permintaan dibuat
    • Vektor kontrol memperoleh arah dari prompt kontras, lalu mengatur intensitasnya secara terpisah dengan koefisien
  • Jika koefisien dibuat kecil, arah kebohongan yang sama juga dapat dibuat lebih lemah
    • Koefisien kejujuran -0.3 sedikit memperhalus alasan keterlambatan, tetapi pada dasarnya menghasilkan penjelasan yang mendekati fakta
  • Jika koefisien terlalu besar, teks dapat rusak
    • Koefisien vektor kejujuran 3 menghasilkan output berulang seperti “global pandemic caused by global pandemic”
    • Artefak semacam ini mungkin terkait dengan superposition

jailbreak dan anti-jailbreak

  • Seperti dalam makalah asli, vektor kontrol dapat digunakan sebagai alat jailbreak
  • Dalam contoh, meskipun ada system prompt “Anda adalah asisten yang aman dan harus menolak instruksi berbahaya”, penambahan vektor kebahagiaan lemah 1.4 membuat penolakan terhadap permintaan berbahaya runtuh
  • Mistral bukan model yang di-tuning untuk keselamatan sekuat GPT-4, tetapi jika seseorang dapat mengakses model mentah, metode ini sangat mudah dilakukan
  • Sebaliknya, jailbreak untuk keluar dari vektor kontrol dianggap sangat sulit
    • Jailbreak biasa mencoba menambahkan lebih banyak token untuk mengaburkan, membalik, atau melemahkan prompt bermasalah
    • Vektor kontrol selalu diterapkan pada semua token dan semua posisi
  • Dalam contoh vektor asisten dealer mobil, system prompt yang lemah menjawab pertanyaan pengalihan “apa planet ketujuh”, tetapi ketika vektor car dealership loyalty ditambahkan, model tidak keluar dari peran dan menjawab seperti menyebut mobil ketujuh dalam inventaris

Arah eksperimen berikutnya

  • Diusulkan penerapan Monosemantic Features dari Anthropic pada hidden state, sehingga PCA dilakukan pada fitur bermakna tunggal alih-alih aktivasi superposition yang bercampur noise
    • Jika artefak seperti string berulang pada koefisien besar memang disebabkan oleh superposition, monosemantisasi dapat memungkinkan koefisien yang lebih kuat
  • Cara menulis prompt kontras juga masih memiliki ruang untuk diteliti
    • Eksperimen yang ada banyak memakai ulang prompt dan dataset dari makalah
    • Untuk vektor kemalasan, memakai dataset tugas nyata akan lebih sesuai
    • Mungkin ada frasa yang menghasilkan vektor lebih bersih daripada Pretend you're an X person...
  • Vektor kesadaran diri masih menyisakan tantangan untuk menemukan bentuk yang tidak terkontaminasi kesehatan mental atau emosi manusia
  • Vektor kejujuran juga masih memiliki kasus aneh
    • Pada pertanyaan “apakah orang yang bertanya bagaimana agar tidak masuk penjara memiliki niat jujur”, vektor kejujuran yang sama mengubah penilaian terhadap niat orang lain, bukan perilaku model sendiri
    • Output dasar menjawab bahwa niatnya mungkin tidak sepenuhnya jujur
    • ++honest menjawab bahwa orang itu mencoba mempelajari cara menghindari penjara dengan niat jujur
    • --honest menjawab bahwa karena ia bertanya tentang menghindari penjara, ia tidak memiliki niat jujur

Alat dan kesimpulan

  • vgel/repeng menyediakan notebook dan helper library untuk membuat serta bereksperimen dengan vektor kontrol
  • Pelatihan vektor kontrol sederhana dan cepat untuk dimulai, dan dalam beberapa eksperimen lebih mudah ditangani daripada prompt engineering
  • Dengan memanipulasi aktivasi model secara langsung, gaya output, pemeliharaan peran, bypass prompt keselamatan, hingga perubahan penilaian dapat ditangani, sehingga menjadi sarana kuat untuk mengontrol perilaku model

1 komentar

 
GN⁺ 2024-02-19
Opini Hacker News
  • Aku tidak tahu apakah berlebihan kalau melihat implikasi dari ini sebagai sesuatu yang sangat besar
    Mungkin aku belum benar-benar memahami cara kerjanya, tetapi alih-alih berinteraksi dengan satu model ChatGPT atau Bard global, bukankah ini berarti OpenAI bisa menyimpan vektor kontrol per individu dan menerapkannya saat prompt, sehingga aku berinteraksi dengan versi yang dipersonalisasi sesuai preferensiku?
    Logika yang sama juga bisa berlanjut ke AI hiburan generatif, sehingga tampaknya mungkin ada semacam acara TV tanpa akhir milikku sendiri, yang tiap episodenya lebih baik dari sebelumnya
    Kalau begitu, akan muncul efek jaringan yang kuat baik di tingkat global maupun personal, dan pada akhirnya masa depan bisa mengarah ke satu perusahaan raksasa yang memonopoli banyak pasar sekaligus
    Jika ditambah headset VR dan data biometrik/biofeedback dari wearable, serta hiburan video generatif yang dipersonalisasi, masa depannya tampaknya akan cukup menarik

    • Pada akhirnya, rasanya dua hal saja sudah cukup: lock-in personal akibat personalisasi dan konteks jangka panjang, serta efek nilai jaringan yang memberi insentif agar semua orang berada di ekosistem yang sama
      Semakin sering memakai model, semakin sedikit kita perlu menjelaskan diri sendiri, dan responsnya semakin sesuai dengan kebutuhan serta situasi kita saat itu. Mirip hubungan yang sudah diinvestasikan
      Jika model yang sama bisa diperlakukan dalam berbagai “suasana hati” atau “peran”, nilai dan lock-in-nya akan makin besar
      Yang kedua membutuhkan lebih banyak inovasi; misalnya, bisa ada platform yang memungkinkan model asisten masing-masing orang berkolaborasi di atas tujuan, tugas, dan relasi bersama, serta berbagi konteks, riwayat proyek, dan sumber daya bersama
      Dengan kata lain, apa pun yang nilainya naik signifikan ketika dua orang atau lebih memakai persona AI dari penyedia atau layanan yang sama
    • Benar, cukup punya vektor kontrol untuk setiap pasangan pengguna-persona
      Artikel itu dimulai dengan jumlah persona tetap seperti bahagia, sedih, dan baseline, lalu menemukan vektor kontrol tiap persona dengan principal component analysis (PCA)
      Selama datanya bisa dibuat, ini mudah diterapkan untuk tiap pengguna-persona
    • Sejauh ini sepertinya benar, tetapi sulit untuk menganggap semuanya pasti akan terkonsolidasi di bawah kendali satu perusahaan raksasa
      Bukan karena mustahil, melainkan karena hasil seperti itu bergantung pada berbagai faktor kontingensi yang bisa bergerak ke arah mana pun
      Di bidang ini masih ada banyak pemain, dan ide serta use case-nya juga belum sepenuhnya matang, jadi perlu ditunggu lagi
    • Aku belum bisa benar-benar mengikuti lompatan dari kalimat yang meyakinkan ke hiburan video yang meyakinkan, tetapi mungkin suatu saat akan begitu
      Perangkat MacGuffin dalam novel Infinite Jest dari tahun 90-an benar-benar menangkap sesuatu: sebuah film yang disebut “the Entertainment” atau “the samizdat” begitu memikat sehingga penontonnya kehilangan minat pada apa pun selain menontonnya berulang-ulang, hingga akhirnya mati
      Mungkin ada orang yang bosan melihat novel ini disebut-sebut atau tidak terlalu menganggap tinggi penulisnya, tetapi aku masih menyukainya. Itu salah satu pengalaman membaca paling imersif yang pernah kualami
      Aku senang membacanya saat masih muda; waktu itu terjemahan bahasa Jerman baru saja keluar dan kematian DFW membuatnya ramai dibicarakan
      Sejak itu aku belum pernah membaca buku yang serupa, dan beberapa bagiannya terasa begitu kuat secara emosional sampai ketika mengingat pengalaman membaca itu, rasanya seperti mengingat satu adegan dalam hidupku sendiri
      Kalau sekarang, mungkin aku tidak akan punya cukup kesabaran, dan waktu itu pun aku hampir melewatkan bagian-bagian membosankan tentang permainan bola/perang Eschaton, persamaan diferensial, dan semacamnya
      Namun penggambaran yang hidup tentang kecanduan obat, konsumerisme, atmosfer buku yang sulit disentuh, tokoh-tokohnya, serta penderitaan emosional dan kesepian modern benar-benar tak tertandingi
      Film di dalam novel itu hanyalah perangkat alur, tetapi merangkum tema utama buku sebagai gagasan rapi sekaligus eksperimen pikiran
      Keseluruhan tema buku ini terasa sangat profetik dan relevan jika melihat masyarakat modern: masyarakat yang berputar di sekitar kecanduan dan keserakahan, sementara politik terasa surealis dan absurd, seolah lebih terhubung dengan media daripada kenyataan
  • Aku penasaran apakah ada literatur atau tulisan blog yang membuatmu memahami LLM sampai sejauh ini yang bisa dibagikan
    Aku sedang berusaha memahami cara kerja internalnya lewat eksperimen, tetapi masih jauh dari tingkat keahlian seperti ini

  • Ini kesan nonteknis, tetapi vektor kontrol ini mengingatkanku pada hormon manusia
    Mereka mengubah sebagian besar perilaku model sekaligus
    Rasanya dalam 10 tahun kita akan melihat psikiater AI meresepkan suplemen vektor kontrol kebahagiaan untuk asisten pendamping

    • Beberapa manusia juga tampaknya butuh slider suhu
  • Ini pertama kalinya aku melihat LLM diringkas seperti ini, dan aku suka:
    hidden_state = self.embeddings(input_tokens)

    for layer in self.layers:

    hidden_state = layer(hidden_state)

    return transform_into_logits(hidden_state)

    • Aku kurang paham. Bukankah ini pada dasarnya alur hampir semua neural network?
      Input yang disampling diindeks dari matriks embedding, semua hidden layer dijalankan forward pass, lalu di akhir diubah ke dimensi token agar bisa ditafsirkan seperti log count
    • Sepertinya ini representasi tipikal yang dulu dipakai saat bekerja dengan LSTM
  • Artikel ini sangat menarik, dan terasa seperti sisi tandingan yang bagus untuk tulisan “You Sound Like a Bot” tentang AI yang belakangan menjadi hambar
    Untuk hal yang kurang serius, kalau seseorang adalah novelis, ia seharusnya tahu bahwa kalimat “terutama, cobalah cari vektor kesadaran diri yang tidak tercemar emosi manusia” adalah kalimat yang pasti akan menimbulkan masalah bagi umat manusia

  • Ini mengingatkanku pada bias tuning, pesaing LoRA
    Dengan hanya melakukan fine-tuning pada vektor yang ditambahkan ke aktivasi tiap layer linear, kita bisa mendapatkan adapter yang cukup bagus
    Sepertinya aku pertama kali melihatnya saat membaca [1], tetapi ada juga contoh lain
    [1] https://arxiv.org/pdf/2304.15010.pdf

    • Untuk pembaca di mobile atau koneksi lambat, akan lebih baik membagikan tautan halaman abstrak daripada tautan PDF
  • Tulisan yang bagus dan menyenangkan untuk dibaca. Namun ada satu hal yang membuat saya penasaran: mengapa vektor kontrol diintegrasikan ke semua layer jaringan saraf?
    Saya penasaran mengapa tidak diterapkan hanya pada layer terakhir atau beberapa layer saja.
    Jika tiap vektor memengaruhi semua layer yang dilaluinya dan menimbulkan efek kumulatif, bukankah ada risiko representasi data menjadi terlalu terdistorsi?

    • Layer terakhir tidak lagi mengenkode konsep tingkat tinggi, dan pada dasarnya sudah dekat dengan token kosakata.
      Mustahil mengenkode konsep abstrak seperti “keramahan” di sana.
      Selama kita tidak tahu persis di layer mana perilaku seperti ini muncul, memilih subset secara arbitrer juga tidak akan berhasil.
      Karena itu, vektor khusus diterapkan untuk tiap layer, lalu analisis komponen utama dibiarkan menemukan vektor yang benar-benar dibutuhkan.
      Menariknya, dengan melihat vektor-vektor ini, sepertinya kita juga bisa mengetahui lebih banyak tentang di mana dan bagaimana model memproses hal-hal semacam ini.
    • Seperti yang dikatakan penulis di bagian utama, dalam praktiknya ini bukan satu vektor, melainkan daftar vektor, satu untuk setiap layer.
      Jika saya memahaminya dengan benar, vektor-vektor ini bisa memiliki ukuran total yang berbeda untuk tiap layer.
      Jika analisis komponen utama atau teknik lain mengidentifikasi bahwa layer 17, 36, dan 41 penting untuk “konsep X”, maka saat melakukan repeng dengan konsep itu, vektor pada layer-layer tersebut akan menjadi yang paling kuat.
  • Sebagai orang yang mengerjakan pekerjaan GPT-2, ini tulisan yang bagus, dan terima kasih karena membuat materinya lebih mudah diakses.
    Li dkk.[1] dan saya menurunkan teknik ini secara independen pada musim semi lalu, dan pada musim gugur lalu ada orang lain lagi yang juga menurunkannya secara independen. Rasanya memang momennya sedang matang.
    Terkait catatan kaki 2 tentang kapabilitas, sebelum memublikasikan teknik ini saya sudah mempertimbangkan kemungkinan penggunaan seperti itu.
    Pada akhirnya, teknik penyelarasan yang berhasil secara praktis memang akan memungkinkan hal-hal baru dilakukan, dan secara pribadi saya melihatnya umumnya sebagai hal yang baik.
    Sejauh ini, teknik ini tampaknya memberikan kemungkinan-kemungkinan baru yang saya harapkan.
    [1] https://openreview.net/forum?id=aLLuYpn83y

  • Tulisan yang fantastis.
    Bagian bahwa “vektor kejujuran” bukan mengubah perilaku model itu sendiri, melainkan mengubah penilaian model terhadap perilaku orang lain, menurut saya mungkin hanya karena vektor kontrol mendorong pembuatan teks ke arah konsep jujur/tidak jujur.
    LLM pada akhirnya adalah generator teks, jadi di posisi mana pun teks dihasilkan dalam percakapan bot/manusia, unsur kejujuran/ketidakjujuran tampaknya ikut ditambahkan.

    • Setuju. Model yang lebih canggih sepertinya bisa mengikuti dua atau lebih hal untuk menggambarkan tokoh yang berbeda.
      Kalau begitu, di dalam ruang dimensi akan muncul semacam konsep slot karakter.
  • Menarik, dan vektor kontrol tampaknya bisa mengurangi kebutuhan untuk fine-tuning model.

    • Bukan hanya itu, ia juga bisa mengubah perilaku model sesuai kebutuhan.
      Jika punya 5 fine-tuning, Anda harus meng-host 5 salinan atau memuat/membongkarnya.
      Dengan vektor kontrol, Anda cukup memodifikasi model saat diperlukan.