

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Algoritma SageMaker AI bawaan untuk Data Teks
<a name="algorithms-text"></a>

SageMaker AI menyediakan algoritma yang disesuaikan dengan analisis dokumen tekstual yang digunakan dalam pemrosesan bahasa alami, klasifikasi atau ringkasan dokumen, pemodelan atau klasifikasi topik, dan transkripsi atau terjemahan bahasa.
+ [BlazingText algoritma](blazingtext.md)—implementasi yang sangat dioptimalkan dari Word2vec dan algoritma klasifikasi teks yang menskalakan ke kumpulan data besar dengan mudah. Ini berguna untuk banyak tugas pemrosesan bahasa alami hilir (NLP).
+ [Algoritma Alokasi Dirichlet Laten (LDA)](lda.md)Sebuah algoritma yang cocok untuk menentukan topik dalam satu set dokumen. Ini adalah *algoritma tanpa pengawasan*, yang berarti tidak menggunakan data contoh dengan jawaban selama pelatihan.
+ [Algoritma Model Topik Saraf (NTM)](ntm.md)—teknik lain yang tidak diawasi untuk menentukan topik dalam satu set dokumen, menggunakan pendekatan jaringan saraf.
+ [Algoritma Object2Vec](object2vec.md)—algoritma penyematan saraf tujuan umum yang dapat digunakan untuk sistem rekomendasi, klasifikasi dokumen, dan penyematan kalimat.
+ [Sequence-to-Sequence Algoritma](seq-2-seq.md)—algoritma yang diawasi yang biasa digunakan untuk terjemahan mesin saraf. 
+ [Klasifikasi Teks - TensorFlow](text-classification-tensorflow.md)—algoritma yang diawasi yang mendukung pembelajaran transfer dengan model terlatih yang tersedia untuk klasifikasi teks. 


| Nama algoritma | Nama saluran | Mode masukan pelatihan | Tipe file | Kelas instans | Dapat diparalelkan | 
| --- | --- | --- | --- | --- | --- | 
| BlazingText | melatih | File atau Pipa | File teks (satu kalimat per baris dengan token yang dipisahkan spasi)  | GPU (hanya satu contoh) atau CPU | Tidak | 
| LDA | melatih dan (opsional) tes | File atau Pipa | Recordio-protobuf atau CSV | CPU (hanya satu contoh) | Tidak | 
| Model Topik Saraf | melatih dan (opsional) validasi, tes, atau keduanya | File atau Pipa | Recordio-protobuf atau CSV | GPU atau CPU | Ya | 
| Object2Vec | melatih dan (opsional) validasi, tes, atau keduanya | File | Garis JSON  | GPU atau CPU (hanya satu contoh) | Tidak | 
| Pemodelan Seq2Seq | melatih, validasi, dan vocab | File | Protobuf Recordio | GPU (hanya satu contoh) | Tidak | 
| Klasifikasi Teks - TensorFlow | pelatihan dan validasi | File | CSV | CPU atau GPU | Ya (hanya di beberapa GPUs pada satu instance) | 

# BlazingText algoritma
<a name="blazingtext"></a>

 BlazingText Algoritma Amazon SageMaker AI menyediakan implementasi Word2vec dan algoritma klasifikasi teks yang sangat dioptimalkan. Algoritma Word2vec berguna untuk banyak tugas pemrosesan bahasa alami hilir (NLP), seperti analisis sentimen, pengenalan entitas bernama, terjemahan mesin, dll. Klasifikasi teks adalah tugas penting untuk aplikasi yang melakukan pencarian web, pengambilan informasi, peringkat, dan klasifikasi dokumen.

Algoritma Word2vec memetakan kata-kata ke vektor terdistribusi berkualitas tinggi. Representasi vektor yang dihasilkan dari sebuah kata disebut *penyematan kata*. Kata-kata yang secara semantik mirip sesuai dengan vektor yang berdekatan. Dengan begitu, penyematan kata menangkap hubungan semantik antar kata. 

Banyak aplikasi natural language processing (NLP) mempelajari penyematan kata dengan melatih koleksi dokumen yang besar. Representasi vektor yang telah dilatih sebelumnya ini memberikan informasi tentang semantik dan distribusi kata yang biasanya meningkatkan generalisasi model lain yang kemudian dilatih pada jumlah data yang lebih terbatas. Sebagian besar implementasi algoritma Word2vec tidak dioptimalkan untuk arsitektur CPU multi-core. Ini membuatnya sulit untuk menskalakan ke kumpulan data besar. 

Dengan BlazingText algoritme, Anda dapat menskalakan ke kumpulan data besar dengan mudah. Mirip dengan Word2VEC, ia menyediakan arsitektur pelatihan Skip-gram dan berkelanjutan bag-of-words (CBOW). BlazingText[implementasi algoritma klasifikasi teks multi-kelas dan multi-label yang diawasi memperluas pengklasifikasi teks FastText untuk menggunakan akselerasi GPU dengan kernel CUDA khusus.](https://docs.nvidia.com/cuda/index.html) Anda dapat melatih model pada lebih dari satu miliar kata dalam beberapa menit menggunakan CPU multi-core atau GPU. Dan, Anda mencapai kinerja yang setara dengan algoritma klasifikasi teks pembelajaran state-of-the-art mendalam.

 BlazingText Algoritma tidak dapat diparalelkan. Untuk informasi selengkapnya tentang parameter yang terkait dengan pelatihan, lihat [Docker Registry Paths for SageMaker Built-in Algorithms](https://docs.aws.amazon.com/en_us/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html).

 BlazingText Algoritma SageMaker AI menyediakan fitur-fitur berikut:
+ Pelatihan yang dipercepat dari pengklasifikasi teks FastText pada CPUs multi-core atau GPU dan GPUs Word2Vec tentang penggunaan kernel CUDA yang sangat dioptimalkan. Untuk informasi selengkapnya, lihat [BlazingText: Menskalakan dan Mempercepat Word2Vec](https://dl.acm.org/citation.cfm?doid=3146347.3146354) menggunakan Multiple. GPUs
+ [Vektor Kata yang Diperkaya dengan Informasi Subword dengan](https://arxiv.org/abs/1607.04606) mempelajari representasi vektor untuk karakter n-gram. Pendekatan ini memungkinkan BlazingText untuk menghasilkan vektor yang bermakna untuk kata-kata out-of-vocabulary (OOV) dengan mewakili vektornya sebagai jumlah karakter n-gram (subkata) vektor.
+ A `batch_skipgram` `mode` untuk algoritma Word2Vec yang memungkinkan pelatihan lebih cepat dan komputasi terdistribusi di beberapa node CPU. Mereka `batch_skipgram` `mode` melakukan mini-batching menggunakan strategi Berbagi Sampel Negatif untuk mengubah operasi BLAS level-1 menjadi operasi BLAS level-3. Ini secara efisien memanfaatkan instruksi multiply-add dari arsitektur modern. Untuk informasi selengkapnya, lihat [Parallelizing Word2Vec di](https://arxiv.org/pdf/1604.04661.pdf) Memori Bersama dan Terdistribusi.

Untuk meringkas, mode berikut didukung oleh BlazingText pada berbagai jenis instance:


| Modus |  Word2Vec (Pembelajaran Tanpa Pengawasan)  |  Klasifikasi Teks (Pembelajaran yang Diawasi)  | 
| --- | --- | --- | 
|  Contoh CPU tunggal  |  `cbow` `Skip-gram` `Batch Skip-gram`  |  `supervised`  | 
|  Instans GPU tunggal (dengan 1 atau lebih GPUs)  |  `cbow` `Skip-gram`  |  `supervised`dengan satu GPU  | 
|  Beberapa contoh CPU  | Batch Skip-gram  | Tidak ada | 

Untuk informasi lebih lanjut tentang matematika di belakang BlazingText, lihat [BlazingText: Menskalakan dan Mempercepat Word2Vec](https://dl.acm.org/citation.cfm?doid=3146347.3146354) menggunakan Multiple. GPUs

**Topics**
+ [Antarmuka Input/Output untuk Algoritma BlazingText](#bt-inputoutput)
+ [Rekomendasi Instans EC2 untuk Algoritma BlazingText](#blazingtext-instances)
+ [BlazingText Contoh Notebook](#blazingtext-sample-notebooks)
+ [BlazingText Hiperparameter](blazingtext_hyperparameters.md)
+ [Menyetel BlazingText Model](blazingtext-tuning.md)

## Antarmuka Input/Output untuk Algoritma BlazingText
<a name="bt-inputoutput"></a>

 BlazingText Algoritma mengharapkan satu file teks yang telah diproses sebelumnya dengan token yang dipisahkan spasi. Setiap baris dalam file harus berisi satu kalimat. Jika Anda perlu melatih beberapa file teks, gabungkan menjadi satu file dan unggah file di saluran masing-masing.

### Format Data Pelatihan dan Validasi
<a name="blazingtext-data-formats"></a>

#### Format Data Pelatihan dan Validasi untuk Algoritma Word2Vec
<a name="blazingtext-data-formats-word2vec"></a>

*Untuk pelatihan Word2Vec, unggah file di bawah saluran kereta.* Tidak ada saluran lain yang didukung. File harus berisi kalimat pelatihan per baris.

#### Format Data Pelatihan dan Validasi untuk Algoritma Klasifikasi Teks
<a name="blazingtext-data-formats-text-class"></a>

Untuk mode yang diawasi, Anda dapat berlatih dengan mode file atau dengan format teks manifes yang ditambah.

##### Berlatih dengan Mode File
<a name="blazingtext-data-formats-text-class-file-mode"></a>

Untuk `supervised` mode, training/validation file harus berisi kalimat pelatihan per baris bersama dengan label. Label adalah kata-kata yang diawali dengan string *\$1\$1label\$1\$1*. Berikut adalah contoh training/validation file:

```
__label__4  linux ready for prime time , intel says , despite all the linux hype , the open-source movement has yet to make a huge splash in the desktop market . that may be about to change , thanks to chipmaking giant intel corp .

__label__2  bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly as the indian skippers return to international cricket was short lived .
```

**catatan**  
Urutan label dalam kalimat tidak masalah. 

Unggah file pelatihan di bawah saluran kereta api, dan secara opsional unggah file validasi di bawah saluran validasi.

##### Berlatih dengan Format Teks Augmented Manifest
<a name="blazingtext-data-formats-text-class-augmented-manifest"></a>

Mode yang diawasi untuk instance CPU juga mendukung format manifes tambahan, yang memungkinkan Anda melakukan pelatihan dalam mode pipa tanpa perlu membuat file RecorDio. Saat menggunakan format, file manifes S3 perlu dibuat yang berisi daftar kalimat dan label yang sesuai. Format file manifes harus dalam format [JSON Lines](http://jsonlines.org/) di mana setiap baris mewakili satu sampel. Kalimat ditentukan menggunakan `source` tag dan label dapat ditentukan menggunakan `label` tag. Kedua `source` dan `label` tag harus disediakan di bawah nilai `AttributeNames` parameter seperti yang ditentukan dalam permintaan.

```
{"source":"linux ready for prime time , intel says , despite all the linux hype", "label":1}
{"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label":2}
```

Pelatihan multi-label juga didukung dengan menentukan array label JSON.

```
{"source":"linux ready for prime time , intel says , despite all the linux hype", "label": [1, 3]}
{"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label": [2, 4, 5]}
```

Untuk informasi selengkapnya tentang file manifes tambahan, lihat[Augmented Manifest Files untuk Pekerjaan Pelatihan](augmented-manifest.md).

### Artefak Model dan Inferensi
<a name="blazingtext-artifacts-inference"></a>

#### Artefak Model untuk Algoritma Word2Vec
<a name="blazingtext--artifacts-inference-word2vec"></a>

Untuk pelatihan Word2Vec, artefak model terdiri dari *vectors.txt*, yang berisi words-to-vectors pemetaan, dan *vectors.bin*, biner yang digunakan oleh BlazingText untuk hosting, inferensi, atau keduanya. *vectors.txt* menyimpan vektor dalam format yang kompatibel dengan alat lain seperti Gensim dan Spacy. Misalnya, pengguna Gensim dapat menjalankan perintah berikut untuk memuat file vectors.txt:

```
from gensim.models import KeyedVectors
word_vectors = KeyedVectors.load_word2vec_format('vectors.txt', binary=False)
word_vectors.most_similar(positive=['woman', 'king'], negative=['man'])
word_vectors.doesnt_match("breakfast cereal dinner lunch".split())
```

Jika parameter evaluasi diatur ke`True`, file tambahan, *eval.json*, dibuat. File ini berisi hasil evaluasi kesamaan (menggunakan koefisien korelasi peringkat Spearman) pada dataset WS-353. Jumlah kata dari dataset WS-353 yang tidak ada di korpus pelatihan dilaporkan.

Untuk permintaan inferensi, model menerima file JSON yang berisi daftar string dan mengembalikan daftar vektor. Jika kata tersebut tidak ditemukan dalam kosakata, inferensi mengembalikan vektor nol. Jika subkata disetel ke `True` selama pelatihan, model dapat menghasilkan vektor untuk kata-kata out-of-vocabulary (OOV).

##### Contoh Permintaan JSON
<a name="word2vec-json-request"></a>

Tipe MIME: ` application/json`

```
{
"instances": ["word1", "word2", "word3"]
}
```

#### Artefak Model untuk Algoritma Klasifikasi Teks
<a name="blazingtext-artifacts-inference-text-class"></a>

Pelatihan dengan output yang diawasi membuat file *model.bin* yang dapat dikonsumsi oleh BlazingText hosting. Untuk inferensi, BlazingText model menerima file JSON yang berisi daftar kalimat dan mengembalikan daftar label prediksi dan skor probabilitas yang sesuai. Setiap kalimat diharapkan menjadi string dengan token, kata, atau keduanya yang dipisahkan spasi.

##### Contoh Permintaan JSON
<a name="text-class-json-request"></a>

Tipe MIME: ` application/json`

```
{
 "instances": ["the movie was excellent", "i did not like the plot ."]
}
```

Secara default, server hanya mengembalikan satu prediksi, yang dengan probabilitas tertinggi. Untuk mengambil prediksi *k* teratas, Anda dapat mengatur *k* dalam konfigurasi, sebagai berikut:

```
{
 "instances": ["the movie was excellent", "i did not like the plot ."],
 "configuration": {"k": 2}
}
```

Untuk BlazingText, `accept` parameter ` content-type` dan harus sama. Untuk transformasi batch, keduanya harus`application/jsonlines`. Jika mereka berbeda, `Accept` bidang diabaikan. Format untuk masukan berikut:

```
content-type: application/jsonlines

{"source": "source_0"}
{"source": "source_1"}

if you need to pass the value of k for top-k, then you can do it in the following way:

{"source": "source_0", "k": 2}
{"source": "source_1", "k": 3}
```

Format untuk output berikut:

```
accept: application/jsonlines


{"prob": [prob_1], "label": ["__label__1"]}
{"prob": [prob_1], "label": ["__label__1"]}

If you have passed the value of k to be more than 1, then response will be in this format:

{"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]}
{"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]}
```

Untuk mode yang diawasi (klasifikasi teks) dan tidak diawasi (Word2Vec), binari (*\$1.bin*) yang dihasilkan oleh dapat BlazingText dikonsumsi silang oleh FastText dan sebaliknya. Anda dapat menggunakan binari yang diproduksi BlazingText oleh FastText. Demikian juga, Anda dapat meng-host binari model yang dibuat dengan FastText menggunakan. BlazingText

Berikut adalah contoh cara menggunakan model yang dihasilkan BlazingText dengan FastText:

```
#Download the model artifact from S3
aws s3 cp s3://<YOUR_S3_BUCKET>/<PREFIX>/model.tar.gz model.tar.gz

#Unzip the model archive
tar -xzf model.tar.gz

#Use the model archive with fastText
fasttext predict ./model.bin test.txt
```

Namun, binari hanya didukung saat pelatihan pada CPU dan GPU tunggal; pelatihan tentang multi-GPU tidak akan menghasilkan binari.

## Rekomendasi Instans EC2 untuk Algoritma BlazingText
<a name="blazingtext-instances"></a>

Untuk `cbow` dan `skipgram` mode, BlazingText mendukung CPU tunggal dan instance GPU tunggal. Kedua mode ini mendukung pembelajaran `subwords` penyematan. Untuk mencapai kecepatan tertinggi tanpa mengurangi akurasi, kami sarankan Anda menggunakan instance ml.p3.2xlarge. 

Untuk `batch_skipgram` mode, BlazingText mendukung instance CPU tunggal atau beberapa. Saat melatih beberapa instance, tetapkan nilai `S3DataDistributionType` bidang [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html)objek yang Anda [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)kirimkan`FullyReplicated`. BlazingTextmengurus distribusi data di seluruh mesin.

Untuk mode klasifikasi teks yang diawasi, instance C5 direkomendasikan jika kumpulan data pelatihan kurang dari 2 GB. Untuk kumpulan data yang lebih besar, gunakan instance dengan satu GPU. BlazingText mendukung instance P2, P3, G4dn, dan G5 untuk pelatihan dan inferensi.

## BlazingText Contoh Notebook
<a name="blazingtext-sample-notebooks"></a>

Untuk contoh buku catatan yang melatih dan menerapkan BlazingText algoritme SageMaker AI untuk menghasilkan vektor kata, lihat [Mempelajari Representasi Kata Word2Vec](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/blazingtext_word2vec_text8/blazingtext_word2vec_text8.html) menggunakan. BlazingText Untuk petunjuk untuk membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh di SageMaker AI, lihat. [Instans SageMaker notebook Amazon](nbi.md) Setelah membuat dan membuka instance notebook, pilih tab **Contoh SageMaker AI** untuk melihat daftar semua contoh SageMaker AI. Contoh buku catatan pemodelan topik yang menggunakan Teks Berkobar terletak di bagian **Pengantar algoritma Amazon**. Untuk membuka buku catatan, pilih tab **Use**, lalu pilih **Buat salinan**.

# BlazingText Hiperparameter
<a name="blazingtext_hyperparameters"></a>

Saat Anda memulai pekerjaan pelatihan dengan `CreateTrainingJob` permintaan, Anda menentukan algoritma pelatihan. Anda juga dapat menentukan hyperparameter khusus algoritme sebagai peta. string-to-string Hiperparameter untuk BlazingText algoritme bergantung pada mode mana yang Anda gunakan: Word2Vec (tanpa pengawasan) dan Klasifikasi Teks (diawasi).

## Hyperparameter Word2Vec
<a name="blazingtext_hyperparameters_word2vec"></a>

Tabel berikut mencantumkan hyperparameters untuk algoritma pelatihan BlazingText Word2Vec yang disediakan oleh Amazon AI. SageMaker 


| Nama Parameter | Deskripsi | 
| --- | --- | 
| mode |  Arsitektur Word2vec digunakan untuk pelatihan. **Diperlukan** Nilai valid: `batch_skipgram`, `skipgram`, atau `cbow`  | 
| batch\$1size |  Ukuran setiap batch saat `mode` diatur ke`batch_skipgram`. Setel ke angka antara 10 dan 20. **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 11  | 
| buckets |  Jumlah bucket hash yang digunakan untuk subkata. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 2000000  | 
| epochs |  Jumlah lintasan lengkap melalui data pelatihan. **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 5  | 
| evaluation |  Apakah model terlatih dievaluasi menggunakan Tes [WordSimilarity-353](http://www.gabrilovich.com/resources/data/wordsim353/wordsim353.html). **Opsional** Nilai yang valid: (Boolean) `True` atau `False` Nilai default: `True`  | 
| learning\$1rate |  Ukuran langkah yang digunakan untuk pembaruan parameter. **Opsional** Nilai yang valid: Float positif Nilai default: 0,05  | 
| min\$1char |  Jumlah minimum karakter yang digunakan untuk subkata/karakter n-gram. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 3  | 
| min\$1count |  Kata-kata yang muncul kurang dari `min_count` kali dibuang. **Opsional** Nilai yang valid: Bilangan bulat non-negatif Nilai default: 5  | 
| max\$1char |  Jumlah maksimum karakter yang akan digunakan untuk subkata/karakter n-gram **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 6  | 
| negative\$1samples |  Jumlah sampel negatif untuk strategi berbagi sampel negatif. **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 5  | 
| sampling\$1threshold |  Ambang batas untuk terjadinya kata-kata. Kata-kata yang muncul dengan frekuensi lebih tinggi dalam data pelatihan diambil sampelnya secara acak. **Opsional** Nilai yang valid: Fraksi positif. Rentang yang disarankan adalah (0, 1e-3] Nilai default: 0,0001  | 
| subwords |  Apakah akan mempelajari penyematan subkata pada tidak. **Opsional** Nilai yang valid: (Boolean) `True` atau `False` Nilai default: `False`  | 
| vector\$1dim |  Dimensi kata vektor yang dipelajari algoritma. **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 100  | 
| window\$1size |  Ukuran jendela konteks. Jendela konteks adalah jumlah kata yang mengelilingi kata target yang digunakan untuk pelatihan. **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 5  | 

## Klasifikasi Teks Hyperparameters
<a name="blazingtext_hyperparameters_text_class"></a>

Tabel berikut mencantumkan hyperparameters untuk algoritma pelatihan Klasifikasi Teks yang disediakan oleh Amazon SageMaker AI.

**catatan**  
Meskipun beberapa parameter umum antara mode Klasifikasi Teks dan Word2Vec, mereka mungkin memiliki arti yang berbeda tergantung pada konteksnya.


| Nama Parameter | Deskripsi | 
| --- | --- | 
| mode |  Mode pelatihan. **Diperlukan** Nilai yang valid: `supervised`  | 
| buckets |  Jumlah ember hash yang digunakan untuk kata n-gram. **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 2000000  | 
| early\$1stopping |  Apakah akan menghentikan pelatihan jika akurasi validasi tidak membaik setelah `patience` sejumlah zaman. Perhatikan bahwa saluran validasi diperlukan jika penghentian awal digunakan. **Opsional** Nilai yang valid: (Boolean) `True` atau `False` Nilai default: `False`  | 
| epochs |  Jumlah maksimum lintasan lengkap melalui data pelatihan. **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 5  | 
| learning\$1rate |  Ukuran langkah yang digunakan untuk pembaruan parameter. **Opsional** Nilai yang valid: Float positif Nilai default: 0,05  | 
| min\$1count |  Kata-kata yang muncul kurang dari `min_count` kali dibuang. **Opsional** Nilai yang valid: Bilangan bulat non-negatif Nilai default: 5  | 
| min\$1epochs |  Jumlah minimum zaman untuk dilatih sebelum logika penghentian awal dipanggil. **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 5  | 
| patience |  Jumlah epoch yang harus menunggu sebelum menerapkan penghentian awal ketika tidak ada kemajuan yang dibuat pada set validasi. Digunakan hanya ketika `early_stopping` itu`True`. **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 4  | 
| vector\$1dim |  Dimensi lapisan embedding. **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 100  | 
| word\$1ngrams |  Jumlah fitur kata n-gram yang digunakan. **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 2  | 

# Menyetel BlazingText Model
<a name="blazingtext-tuning"></a>

*Penyetelan model otomatis*, juga dikenal sebagai tuning hyperparameter, menemukan versi terbaik dari model dengan menjalankan banyak pekerjaan yang menguji berbagai hiperparameter pada kumpulan data Anda. Anda memilih hyperparameters yang dapat disetel, rentang nilai untuk masing-masing, dan metrik objektif. Anda memilih metrik objektif dari metrik yang dihitung algoritme. Penyetelan model otomatis mencari hiperparameter yang dipilih untuk menemukan kombinasi nilai yang menghasilkan model yang mengoptimalkan metrik objektif.

Untuk informasi selengkapnya tentang penyetelan model, lihat[Penyetelan model otomatis dengan AI SageMaker](automatic-model-tuning.md).

## Metrik yang Dihitung oleh Algoritma BlazingText
<a name="blazingtext-metrics"></a>

Algoritma BlazingText Word2Vec (`skipgram`,`cbow`, dan `batch_skipgram` mode) melaporkan satu metrik selama pelatihan:. `train:mean_rho` Metrik ini dihitung pada kumpulan data kesamaan [kata WS-353](https://aclweb.org/aclwiki/WordSimilarity-353_Test_Collection_(State_of_the_art)). Saat menyetel nilai hyperparameter untuk algoritma Word2Vec, gunakan metrik ini sebagai tujuannya.

Algoritma Klasifikasi BlazingText Teks (`supervised`mode), juga melaporkan satu metrik selama pelatihan:`validation:accuracy`. Saat menyetel nilai hyperparameter untuk algoritma klasifikasi teks, gunakan metrik ini sebagai tujuannya.


| Nama Metrik | Deskripsi | Arah Optimasi | 
| --- | --- | --- | 
| train:mean\$1rho |  [Rho rata-rata (koefisien korelasi peringkat Spearman) pada kumpulan data kesamaan kata WS-353](http://alfonseca.org/pubs/ws353simrel.tar.gz)  |  Maksimalkan  | 
| validation:accuracy |  Akurasi klasifikasi pada kumpulan data validasi yang ditentukan pengguna  |  Maksimalkan  | 

## Hiperparameter yang dapat disetel BlazingText
<a name="blazingtext-tunable-hyperparameters"></a>

### Hiperparameter yang dapat disetel untuk Algoritma Word2Vec
<a name="blazingtext-tunable-hyperparameters-word2vec"></a>

Setel model Amazon SageMaker AI BlazingText Word2Vec dengan hyperparameter berikut. Hiperparameter yang memiliki dampak terbesar pada metrik objektif Word2Vec adalah:`mode`,,,, ` learning_rate` dan. `window_size` `vector_dim` `negative_samples`


| Nama Parameter | Jenis Parameter | Rentang atau Nilai yang Direkomendasikan | 
| --- | --- | --- | 
| batch\$1size |  `IntegerParameterRange`  |  [8-32]  | 
| epochs |  `IntegerParameterRange`  |  [5-15]  | 
| learning\$1rate |  `ContinuousParameterRange`  |  MinValue: 0,005, MaxValue: 0,01  | 
| min\$1count |  `IntegerParameterRange`  |  [0-100]  | 
| mode |  `CategoricalParameterRange`  |  [`'batch_skipgram'`, `'skipgram'`, `'cbow'`]  | 
| negative\$1samples |  `IntegerParameterRange`  |  [5-25]  | 
| sampling\$1threshold |  `ContinuousParameterRange`  |  MinValue: 0,0001, MaxValue: 0,001  | 
| vector\$1dim |  `IntegerParameterRange`  |  [32-300]  | 
| window\$1size |  `IntegerParameterRange`  |  [1-10]  | 

### Hiperparameter yang dapat disetel untuk Algoritma Klasifikasi Teks
<a name="blazingtext-tunable-hyperparameters-text_class"></a>

Sesuaikan model klasifikasi BlazingText teks Amazon SageMaker AI dengan hyperparameter berikut.


| Nama Parameter | Jenis Parameter | Rentang atau Nilai yang Direkomendasikan | 
| --- | --- | --- | 
| buckets |  `IntegerParameterRange`  |  [1000000-10000000]  | 
| epochs |  `IntegerParameterRange`  |  [5-15]  | 
| learning\$1rate |  `ContinuousParameterRange`  |  MinValue: 0,005, MaxValue: 0,01  | 
| min\$1count |  `IntegerParameterRange`  |  [0-100]  | 
| vector\$1dim |  `IntegerParameterRange`  |  [32-300]  | 
| word\$1ngrams |  `IntegerParameterRange`  |  [1-3]  | 

# Algoritma Alokasi Dirichlet Laten (LDA)
<a name="lda"></a>

Algoritma Amazon SageMaker AI Latent Dirichlet Allocation (LDA) adalah algoritma pembelajaran tanpa pengawasan yang mencoba menggambarkan serangkaian pengamatan sebagai campuran dari kategori yang berbeda. LDA paling sering digunakan untuk menemukan sejumlah topik yang ditentukan pengguna yang dibagikan oleh dokumen dalam korpus teks. Di sini setiap pengamatan adalah dokumen, fitur-fiturnya adalah keberadaan (atau jumlah kejadian) dari setiap kata, dan kategorinya adalah topiknya. Karena metode ini tidak diawasi, topiknya tidak ditentukan di muka, dan tidak dijamin selaras dengan bagaimana manusia secara alami dapat mengkategorikan dokumen. Topik dipelajari sebagai distribusi probabilitas atas kata-kata yang muncul di setiap dokumen. Setiap dokumen, pada gilirannya, digambarkan sebagai campuran topik.

Konten yang tepat dari dua dokumen dengan campuran topik serupa tidak akan sama. Namun secara keseluruhan, Anda akan mengharapkan dokumen-dokumen ini lebih sering menggunakan subset kata bersama, daripada jika dibandingkan dengan dokumen dari campuran topik yang berbeda. Hal ini memungkinkan LDA untuk menemukan kelompok kata ini dan menggunakannya untuk membentuk topik. Sebagai contoh yang sangat sederhana, mengingat serangkaian dokumen di mana satu-satunya kata yang muncul di dalamnya adalah: *makan*, *tidur*, *bermain*, *mengeong*, dan *menggonggong*, LDA mungkin menghasilkan topik seperti berikut:


| **Topik** | *makan* | *tidur*  | *bermain* | *mengeong* | *kulit kayu* | 
| --- | --- | --- | --- | --- | --- | 
| Topik 1  | 0.1  | 0,3  | 0.2  | 0,4  | 0.0  | 
| Topik 2  | 0.2  | 0.1 | 0,4  | 0.0  | 0,3  | 

Anda dapat menyimpulkan bahwa dokumen yang lebih mungkin masuk ke Topik 1 adalah tentang kucing (yang lebih cenderung *mengeong* dan *tidur*), dan dokumen yang termasuk dalam Topik 2 adalah tentang anjing-kucing (yang lebih suka *bermain* dan *menggonggong*). Topik-topik ini dapat ditemukan meskipun kata-kata dog and cat tidak pernah muncul di salah satu teks. 

**Topics**
+ [Memilih antara Alokasi Dirichlet Laten (LDA) dan Model Topik Saraf (NTM)](#lda-or-ntm)
+ [Antarmuka Input/Output untuk Algoritma LDA](#lda-inputoutput)
+ [EC2 Rekomendasi Instance untuk Algoritma LDA](#lda-instances)
+ [Notebook Contoh LDA](#LDA-sample-notebooks)
+ [Bagaimana LDA Bekerja](lda-how-it-works.md)
+ [Hiperparameter LDA](lda_hyperparameters.md)
+ [Menyetel Model LDA](lda-tuning.md)

## Memilih antara Alokasi Dirichlet Laten (LDA) dan Model Topik Saraf (NTM)
<a name="lda-or-ntm"></a>

Model topik biasanya digunakan untuk menghasilkan topik dari mayat yang (1) secara koheren merangkum makna semantik dan (2) menggambarkan dokumen dengan baik. Dengan demikian, model topik bertujuan untuk meminimalkan kebingungan dan memaksimalkan koherensi topik. 

Kebingung adalah metrik evaluasi pemodelan bahasa intrinsik yang mengukur kebalikan dari kemungkinan rata-rata geometris per kata dalam data pengujian Anda. Skor kebingungan yang lebih rendah menunjukkan kinerja generalisasi yang lebih baik. Penelitian telah menunjukkan bahwa kemungkinan yang dihitung per kata seringkali tidak selaras dengan penilaian manusia, dan dapat sepenuhnya tidak berkorelasi, sehingga koherensi topik telah diperkenalkan. Setiap topik yang disimpulkan dari model Anda terdiri dari kata-kata, dan koherensi topik dihitung ke N kata teratas untuk topik tertentu dari model Anda. Ini sering didefinisikan sebagai rata-rata atau median skor kesamaan kata berpasangan dari kata-kata dalam topik itu misalnya, Pointwise Mutual Information (PMI). Model yang menjanjikan menghasilkan topik atau topik yang koheren dengan skor koherensi topik yang tinggi. 

Sementara tujuannya adalah untuk melatih model topik yang meminimalkan kebingungan dan memaksimalkan koherensi topik, sering ada tradeoff dengan LDA dan NTM. Penelitian terbaru oleh Amazon, Dinget et al., 2018 telah menunjukkan bahwa NTM menjanjikan untuk mencapai koherensi topik yang tinggi tetapi LDA yang dilatih dengan pengambilan sampel Gibbs yang runtuh mencapai kebingungan yang lebih baik. Ada tradeoff antara kebingungan dan koherensi topik. Dari sudut pandang kepraktisan mengenai perangkat keras dan daya komputasi, perangkat keras SageMaker NTM lebih fleksibel daripada LDA dan dapat menskalakan lebih baik karena NTM dapat berjalan pada CPU dan GPU dan dapat diparalelkan di beberapa instance GPU, sedangkan LDA hanya mendukung pelatihan CPU satu instance. 

**Topics**
+ [Memilih antara Alokasi Dirichlet Laten (LDA) dan Model Topik Saraf (NTM)](#lda-or-ntm)
+ [Antarmuka Input/Output untuk Algoritma LDA](#lda-inputoutput)
+ [EC2 Rekomendasi Instance untuk Algoritma LDA](#lda-instances)
+ [Notebook Contoh LDA](#LDA-sample-notebooks)
+ [Bagaimana LDA Bekerja](lda-how-it-works.md)
+ [Hiperparameter LDA](lda_hyperparameters.md)
+ [Menyetel Model LDA](lda-tuning.md)

## Antarmuka Input/Output untuk Algoritma LDA
<a name="lda-inputoutput"></a>

LDA mengharapkan data disediakan di saluran kereta api, dan secara opsional mendukung saluran uji, yang dinilai oleh model akhir. LDA mendukung format `recordIO-wrapped-protobuf` (padat dan jarang) dan `CSV` file. Sebab`CSV`, data harus padat dan memiliki dimensi yang sama dengan *jumlah catatan\$1 ukuran kosakata*. LDA dapat dilatih dalam mode File atau Pipa saat menggunakan protobuf yang dibungkus Recordio, tetapi hanya dalam mode File untuk format. `CSV`

Untuk inferensi,`text/csv`,`application/json`, dan jenis `application/x-recordio-protobuf` konten didukung. Data yang jarang juga dapat diteruskan untuk `application/json` dan`application/x-recordio-protobuf`. Pengembalian inferensi LDA `application/json` atau `application/x-recordio-protobuf` *prediksi*, yang mencakup `topic_mixture` vektor untuk setiap pengamatan.

Silakan lihat [Notebook Contoh LDA](#LDA-sample-notebooks) untuk detail lebih lanjut tentang format pelatihan dan inferensi.

## EC2 Rekomendasi Instance untuk Algoritma LDA
<a name="lda-instances"></a>

LDA saat ini hanya mendukung pelatihan CPU single-instance. Instans CPU direkomendasikan untuk hosting/inferensi.

## Notebook Contoh LDA
<a name="LDA-sample-notebooks"></a>

[Untuk contoh notebook yang menunjukkan cara melatih algoritme Alokasi Dirichlet Laten SageMaker AI pada kumpulan data dan kemudian cara menerapkan model terlatih untuk melakukan kesimpulan tentang campuran topik dalam dokumen input, lihat Pengantar AI LDA. SageMaker ](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/lda_topic_modeling/LDA-Introduction.html) Untuk petunjuk cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh di SageMaker AI, lihat. [Instans SageMaker notebook Amazon](nbi.md) Setelah Anda membuat instance notebook dan membukanya, pilih tab **Contoh SageMaker AI** untuk melihat daftar semua sampel SageMaker AI. Contoh buku catatan pemodelan topik menggunakan algoritme NTM terletak di bagian Pengantar Algoritma **Amazon**. Untuk membuka buku catatan, klik tab **Use** dan pilih **Create copy**.

# Bagaimana LDA Bekerja
<a name="lda-how-it-works"></a>

Amazon SageMaker AI LDA adalah algoritma pembelajaran tanpa pengawasan yang mencoba menggambarkan serangkaian pengamatan sebagai campuran dari berbagai kategori. Kategori-kategori ini sendiri merupakan distribusi probabilitas atas fitur. LDA adalah model probabilitas generatif, yang berarti mencoba menyediakan model untuk distribusi output dan input berdasarkan variabel laten. Ini bertentangan dengan model diskriminatif, yang mencoba mempelajari bagaimana input memetakan ke output.

Anda dapat menggunakan LDA untuk berbagai tugas, mulai dari pengelompokan pelanggan berdasarkan pembelian produk hingga analisis harmonik otomatis dalam musik. Namun, ini paling sering dikaitkan dengan pemodelan topik dalam korpus teks. Pengamatan disebut sebagai dokumen. Set fitur disebut sebagai kosakata. Sebuah fitur disebut sebagai kata. Dan kategori yang dihasilkan disebut sebagai topik.

**catatan**  
Lemmatisasi secara signifikan meningkatkan kinerja dan akurasi algoritma. Pertimbangkan pra-pemrosesan data teks input apa pun. Untuk informasi lebih lanjut, lihat [Stemming dan lemmatisasi](https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html).

Model LDA didefinisikan oleh dua parameter:
+ α—Perkiraan sebelumnya tentang probabilitas topik (dengan kata lain, frekuensi rata-rata setiap topik dalam dokumen tertentu terjadi). 
+ β—kumpulan topik k di mana setiap topik diberi distribusi probabilitas atas kosakata yang digunakan dalam korpus dokumen, juga disebut “distribusi topik-kata.”

LDA adalah model bag-of-words "", yang berarti bahwa urutan kata tidak masalah. LDA adalah model generatif di mana setiap dokumen dihasilkan word-by-word dengan memilih campuran topik θ Dirichlet (α). 

 Untuk setiap kata dalam dokumen: 
+  Pilih topik z ∼ Multinomial (θ) 
+  Pilih distribusi topik-kata yang sesuai β\$1z. 
+  Gambarlah sebuah kata w ∼ Multinomial (β\$1z). 

Saat melatih model, tujuannya adalah untuk menemukan parameter α dan β, yang memaksimalkan probabilitas bahwa korpus teks dihasilkan oleh model.

Metode yang paling populer untuk memperkirakan model LDA menggunakan teknik Gibbs sampling atau Expectation Maximization (EM). Amazon SageMaker AI LDA menggunakan dekomposisi spektral tensor. Ini memberikan beberapa keuntungan:
+  **Jaminan teoritis pada hasil**. Metode EM standar dijamin hanya menyatu dengan optima lokal, yang seringkali berkualitas buruk. 
+  **Memalukan diparalelkan.** Pekerjaan dapat dibagi secara sepele atas dokumen input baik dalam pelatihan maupun inferensi. Pendekatan EM-Method dan Gibbs Sampling dapat diparalelkan, tetapi tidak semudah itu. 
+  **Cepat**. Meskipun metode EM memiliki biaya iterasi yang rendah, metode ini cenderung memperlambat tingkat konvergensi. Gibbs Sampling juga tunduk pada tingkat konvergensi yang lambat dan juga membutuhkan sejumlah besar sampel. 

Pada tingkat tinggi, algoritma dekomposisi tensor mengikuti proses ini:

1.  Tujuannya adalah untuk menghitung dekomposisi spektral tensor **V x V** **x **V****, yang merangkum momen dokumen dalam korpus kita. **V** adalah ukuran kosakata (dengan kata lain, jumlah kata yang berbeda dalam semua dokumen). Komponen spektral tensor ini adalah parameter LDA α dan β, yang memaksimalkan kemungkinan keseluruhan korpus dokumen. Namun, karena ukuran kosakata cenderung besar, tensor **V x **V**** x **V** ini sangat besar untuk disimpan dalam memori. 

1.  **Sebaliknya, ia menggunakan matriks momen **V** **x V**, yang merupakan analog dua dimensi tensor dari langkah 1, untuk menemukan matriks pemutih dimensi **V** x k.** Matriks ini dapat digunakan untuk mengubah matriks momen **V** **x V** menjadi matriks identitas **k** **x k**. **k** adalah jumlah topik dalam model. 

1.  Matriks pemutih yang sama ini kemudian dapat digunakan untuk menemukan tensor **k x k** x ****k**** yang lebih kecil. **Ketika didekomposisi secara spektral, tensor ini memiliki komponen yang memiliki hubungan sederhana dengan komponen tensor **V x V** x **V**.** 

1.  *Bolak-balik Kuadrat* **Terkecil digunakan untuk menguraikan tensor **k x k x *k*** yang lebih kecil.** Ini memberikan peningkatan besar dalam konsumsi dan kecepatan memori. Parameter α dan β dapat ditemukan dengan “tidak memutihkan” keluaran ini dalam dekomposisi spektral. 

Setelah parameter model LDA ditemukan, Anda dapat menemukan campuran topik untuk setiap dokumen. Anda menggunakan penurunan gradien stokastik untuk memaksimalkan fungsi kemungkinan mengamati campuran topik tertentu yang sesuai dengan data ini.

Kualitas topik dapat ditingkatkan dengan meningkatkan jumlah topik yang harus dicari dalam pelatihan dan kemudian menyaring topik berkualitas buruk. Ini sebenarnya dilakukan secara otomatis di SageMaker AI LDA: 25% lebih banyak topik dihitung dan hanya topik dengan prioritas Dirichlet terkait terbesar yang dikembalikan. Untuk melakukan pemfilteran dan analisis topik lebih lanjut, Anda dapat meningkatkan jumlah topik dan memodifikasi model LDA yang dihasilkan sebagai berikut:

```
> import mxnet as mx
> alpha, beta = mx.ndarray.load(‘model.tar.gz’)
> # modify alpha and beta
> mx.nd.save(‘new_model.tar.gz’, [new_alpha, new_beta])
> # upload to S3 and create new SageMaker model using the console
```

Untuk informasi selengkapnya tentang algoritme untuk LDA dan implementasi SageMaker AI, lihat berikut ini:
+ Animashree Anandkumar, Rong Ge, Daniel Hsu, Sham M Kakade, dan Matus Telgarsky. *Dekomposisi Tensor untuk Mempelajari Model Variabel Laten*, Jurnal Penelitian Machine Learning, 15:2773 —2832, 2014.
+  David M Blei, Andrew Y Ng, dan Michael I Yordania. *Alokasi Dirichlet Laten*. Jurnal Penelitian Machine Learning, 3 (Jan) :993—1022, 2003.
+  Thomas L Griffiths dan Mark Steyvers. *Menemukan Topik Ilmiah*. Prosiding National Academy of Sciences, 101 (suppl 1) :5228—5235, 2004. 
+  Tamara G Kolda dan Brett W Bader. *Dekomposisi dan Aplikasi Tensor*. Ulasan SIAM, 51 (3) :455—500, 2009. 

# Hiperparameter LDA
<a name="lda_hyperparameters"></a>

Dalam `CreateTrainingJob` permintaan, Anda menentukan algoritma pelatihan. Anda juga dapat menentukan hyperparameter khusus algoritme sebagai peta. string-to-string Tabel berikut mencantumkan hyperparameters untuk algoritma pelatihan LDA yang disediakan oleh Amazon SageMaker AI. Untuk informasi selengkapnya, lihat [Bagaimana LDA Bekerja](lda-how-it-works.md).


| Nama Parameter | Deskripsi | 
| --- | --- | 
| num\$1topics |  Jumlah topik untuk LDA untuk menemukan dalam data. **Diperlukan** Nilai yang valid: bilangan bulat positif  | 
| feature\$1dim |  Ukuran kosakata korpus dokumen masukan. **Diperlukan** Nilai yang valid: bilangan bulat positif  | 
| mini\$1batch\$1size |  Jumlah total dokumen dalam korpus dokumen input. **Diperlukan** Nilai yang valid: bilangan bulat positif  | 
| alpha0 |  Tebakan awal untuk parameter konsentrasi: jumlah elemen Dirichlet sebelumnya. Nilai kecil lebih cenderung menghasilkan campuran topik yang jarang dan nilai besar (lebih besar dari 1,0) menghasilkan campuran yang lebih seragam.  **Opsional** Nilai yang valid: Float positif Nilai default: 1.0  | 
| max\$1restarts |  Jumlah restart untuk dilakukan selama fase dekomposisi spektral Alternating Least Squares (ALS) dari algoritma. Dapat digunakan untuk menemukan minima lokal berkualitas lebih baik dengan mengorbankan perhitungan tambahan, tetapi biasanya tidak boleh disesuaikan.  **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 10  | 
| max\$1iterations |  Jumlah maksimum iterasi yang harus dilakukan selama fase ALS dari algoritma. Dapat digunakan untuk menemukan kualitas minimum yang lebih baik dengan mengorbankan perhitungan tambahan, tetapi biasanya tidak boleh disesuaikan.  **Opsional** Nilai yang valid: Bilangan bulat positif Nilai default: 1000  | 
| tol |  Target toleransi kesalahan untuk fase ALS dari algoritma. Dapat digunakan untuk menemukan kualitas minimum yang lebih baik dengan mengorbankan perhitungan tambahan, tetapi biasanya tidak boleh disesuaikan.  **Opsional** Nilai yang valid: Float positif Nilai default: 1e-8  | 

# Menyetel Model LDA
<a name="lda-tuning"></a>

*Penyetelan model otomatis*, juga dikenal sebagai tuning hyperparameter, menemukan versi terbaik dari model dengan menjalankan banyak pekerjaan yang menguji berbagai hiperparameter pada kumpulan data Anda. Anda memilih hyperparameters yang dapat disetel, rentang nilai untuk masing-masing, dan metrik objektif. Anda memilih metrik objektif dari metrik yang dihitung algoritme. Penyetelan model otomatis mencari hiperparameter yang dipilih untuk menemukan kombinasi nilai yang menghasilkan model yang mengoptimalkan metrik objektif.

LDA adalah algoritma pemodelan topik tanpa pengawasan yang mencoba menggambarkan serangkaian pengamatan (dokumen) sebagai campuran dari berbagai kategori (topik). Metrik “kemungkinan log per kata” (PWLL) mengukur kemungkinan bahwa serangkaian topik yang dipelajari (model LDA) secara akurat menggambarkan kumpulan data dokumen uji. Nilai PWLL yang lebih besar menunjukkan bahwa data uji lebih mungkin dijelaskan oleh model LDA.

Untuk informasi selengkapnya tentang penyetelan model, lihat[Penyetelan model otomatis dengan AI SageMaker](automatic-model-tuning.md).

## Metrik yang Dihitung oleh Algoritma LDA
<a name="lda-metrics"></a>

Algoritma LDA melaporkan satu metrik selama pelatihan:`test:pwll`. Saat menyetel model, pilih metrik ini sebagai metrik objektif.


| Nama Metrik | Deskripsi | Arah Optimasi | 
| --- | --- | --- | 
| test:pwll | Kemungkinan log per kata pada kumpulan data pengujian. Kemungkinan bahwa kumpulan data pengujian dijelaskan secara akurat oleh model LDA yang dipelajari. | Maksimalkan | 

## Hiperparameter LDA yang dapat disetel
<a name="lda-tunable-hyperparameters"></a>

Anda dapat menyetel hyperparameters berikut untuk algoritma LDA. Kedua hiperparameter, `alpha0` dan`num_topics`, dapat mempengaruhi metrik objektif LDA ()`test:pwll`. Jika Anda belum mengetahui nilai optimal untuk hiperparameter ini, yang memaksimalkan kemungkinan log per kata dan menghasilkan model LDA yang akurat, penyetelan model otomatis dapat membantu menemukannya.


| Nama Parameter | Jenis Parameter | Rentang yang Direkomendasikan | 
| --- | --- | --- | 
| alpha0 | ContinuousParameterRanges | MinValue: 0.1, MaxValue: 10 | 
| num\$1topics | IntegerParameterRanges | MinValue: 1, MaxValue: 150 | 

# Algoritma Model Topik Saraf (NTM)
<a name="ntm"></a>

Amazon SageMaker AI NTM adalah algoritma pembelajaran tanpa pengawasan yang digunakan untuk mengatur kumpulan dokumen ke dalam *topik* yang berisi pengelompokan kata berdasarkan distribusi statistiknya. Dokumen yang sering berisi kata-kata seperti “sepeda”, “mobil”, “kereta”, “jarak tempuh”, dan “kecepatan” cenderung berbagi topik tentang “transportasi” misalnya. Pemodelan topik dapat digunakan untuk mengklasifikasikan atau meringkas dokumen berdasarkan topik yang terdeteksi atau untuk mengambil informasi atau merekomendasikan konten berdasarkan kesamaan topik. Topik dari dokumen yang dipelajari NTM dicirikan sebagai *representasi laten* karena topik disimpulkan dari distribusi kata yang diamati di korpus. Semantik topik biasanya disimpulkan dengan memeriksa kata-kata peringkat teratas yang dikandungnya. Karena metode ini tidak diawasi, hanya jumlah topik, bukan topik itu sendiri, yang ditentukan sebelumnya. Selain itu, topik tidak dijamin selaras dengan bagaimana manusia secara alami dapat mengkategorikan dokumen.

Pemodelan topik menyediakan cara untuk memvisualisasikan isi korpus dokumen besar dalam hal topik yang dipelajari. Dokumen yang relevan untuk setiap topik dapat diindeks atau dicari berdasarkan label topik lunak mereka. Representasi laten dokumen juga dapat digunakan untuk menemukan dokumen serupa di ruang topik. Anda juga dapat menggunakan representasi laten dokumen yang dipelajari model topik untuk masukan ke algoritme lain yang diawasi seperti pengklasifikasi dokumen. Karena representasi laten dokumen diharapkan untuk menangkap semantik dari dokumen yang mendasarinya, algoritme yang sebagian didasarkan pada representasi ini diharapkan berkinerja lebih baik daripada yang didasarkan pada fitur leksikal saja.

Meskipun Anda dapat menggunakan algoritme Amazon SageMaker AI NTM dan LDA untuk pemodelan topik, mereka adalah algoritme yang berbeda dan dapat diharapkan menghasilkan hasil yang berbeda pada data input yang sama.

Untuk informasi lebih lanjut tentang matematika di balik NTM, lihat [Inferensi Variasi Saraf](https://arxiv.org/pdf/1511.06038.pdf) untuk Pemrosesan Teks.

**Topics**
+ [Antarmuka Input/Output untuk Algoritma NTM](#NTM-inputoutput)
+ [Rekomendasi Instans EC2 untuk Algoritma NTM](#NTM-instances)
+ [NTM Contoh Notebook](#NTM-sample-notebooks)
+ [Hiperparameter NTM](ntm_hyperparameters.md)
+ [Menyetel Model NTM](ntm-tuning.md)
+ [Format Respons NTM](ntm-in-formats.md)

## Antarmuka Input/Output untuk Algoritma NTM
<a name="NTM-inputoutput"></a>

Amazon SageMaker AI Neural Topic Model mendukung empat saluran data: train, validasi, test, dan auxiliary. Saluran data validasi, pengujian, dan tambahan bersifat opsional. Jika Anda menentukan salah satu saluran opsional ini, atur nilai `S3DataDistributionType` parameternya`FullyReplicated`. Jika Anda memberikan data validasi, kerugian pada data ini dicatat di setiap zaman, dan model menghentikan pelatihan segera setelah mendeteksi bahwa kehilangan validasi tidak membaik. Jika Anda tidak memberikan data validasi, algoritme berhenti lebih awal berdasarkan data pelatihan, tetapi ini bisa kurang efisien. Jika Anda memberikan data pengujian, algoritme melaporkan kehilangan pengujian dari model akhir. 

Saluran data kereta, validasi, dan uji untuk NTM mendukung format `recordIO-wrapped-protobuf` (padat dan jarang) dan file. `CSV` Untuk `CSV` format, setiap baris harus diwakili secara padat dengan jumlah nol untuk kata-kata yang tidak ada dalam dokumen yang sesuai, dan memiliki dimensi yang sama dengan: (jumlah catatan) \$1 (ukuran kosakata). Anda dapat menggunakan mode File atau mode Pipa untuk melatih model pada data yang diformat sebagai `recordIO-wrapped-protobuf` atau sebagai`CSV`. Saluran bantu digunakan untuk menyediakan file teks yang berisi kosakata. Dengan menyediakan file kosakata, pengguna dapat melihat kata-kata teratas untuk setiap topik yang dicetak di log alih-alih bilangan bulat mereka. IDs Memiliki file kosakata juga memungkinkan NTM untuk menghitung skor Word Embedding Topic Coherence (WETC), metrik baru yang ditampilkan dalam log yang menangkap kesamaan di antara kata-kata teratas di setiap topik secara efektif. `ContentType`Untuk saluran bantu adalah`text/plain`, dengan setiap baris berisi satu kata, dalam urutan yang sesuai dengan bilangan bulat yang IDs disediakan dalam data. File kosakata harus diberi nama `vocab.txt` dan saat ini hanya pengkodean UTF-8 yang didukung. 

Untuk inferensi,`text/csv`,`application/json`,,`application/jsonlines`, dan jenis `application/x-recordio-protobuf` konten didukung. Data yang jarang juga dapat diteruskan untuk `application/json` dan`application/x-recordio-protobuf`. Pengembalian `application/json` atau `application/x-recordio-protobuf` *prediksi* inferensi NTM, yang mencakup `topic_weights` vektor untuk setiap pengamatan.

Lihat [posting blog](https://aws.amazon.com/blogs/machine-learning/amazon-sagemaker-neural-topic-model-now-supports-auxiliary-vocabulary-channel-new-topic-evaluation-metrics-and-training-subsampling/) untuk detail lebih lanjut tentang penggunaan saluran tambahan dan skor WETC. Untuk informasi lebih lanjut tentang cara menghitung skor WETC, lihat [Coherence-Aware](https://arxiv.org/pdf/1809.02687.pdf) Neural Topic Modeling. Kami menggunakan WETC berpasangan yang dijelaskan dalam paper ini untuk Amazon SageMaker AI Neural Topic Model.

Untuk informasi lebih lanjut tentang format file input dan output, lihat [Format Respons NTM](ntm-in-formats.md) untuk inferensi dan file. [NTM Contoh Notebook](#NTM-sample-notebooks)

## Rekomendasi Instans EC2 untuk Algoritma NTM
<a name="NTM-instances"></a>

Pelatihan NTM mendukung jenis instans GPU dan CPU. Kami merekomendasikan instans GPU, tetapi untuk beban kerja tertentu, instans CPU dapat mengakibatkan biaya pelatihan yang lebih rendah. Instans CPU harus cukup untuk inferensi. Pelatihan NTM mendukung keluarga instance GPU P2, P3, G4dn, dan G5 untuk pelatihan dan inferensi.

## NTM Contoh Notebook
<a name="NTM-sample-notebooks"></a>

Untuk contoh notebook yang menggunakan algoritme SageMaker AI NTM untuk mengungkap topik dalam dokumen dari sumber data sintetis tempat distribusi topik diketahui, lihat [Pengantar Fungsi Dasar](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/ntm_synthetic/ntm_synthetic.html) NTM. Untuk petunjuk cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh di SageMaker AI, lihat. [Instans SageMaker notebook Amazon](nbi.md) Setelah Anda membuat instance notebook dan membukanya, pilih tab **Contoh SageMaker AI** untuk melihat daftar semua sampel SageMaker AI. Contoh buku catatan pemodelan topik menggunakan algoritme NTM terletak di bagian Pengantar Algoritma **Amazon**. Untuk membuka buku catatan, klik tab **Use** dan pilih **Create copy**.

# Hiperparameter NTM
<a name="ntm_hyperparameters"></a>

Tabel berikut mencantumkan hiperparameter yang dapat Anda atur untuk algoritme Amazon SageMaker AI Neural Topic Model (NTM).


| Nama Parameter | Deskripsi | 
| --- | --- | 
|  `feature_dim`  |  Ukuran kosakata dari dataset. **Diperlukan** Nilai yang valid: Bilangan bulat positif (min: 1, maks: 1.000.000)  | 
| num\$1topics |  Jumlah topik yang diperlukan. **Diperlukan** Nilai yang valid: Bilangan bulat positif (min: 2, maks: 1000)  | 
| batch\$1norm |  Apakah akan menggunakan normalisasi batch selama pelatihan. **Opsional** Nilai yang valid: *benar* atau *salah* Nilai default: *false*  | 
| clip\$1gradient |  Besarnya maksimum untuk setiap komponen gradien. **Opsional** Nilai yang valid: Float (min: 1e-3) Nilai default: Infinity  | 
| encoder\$1layers |  Jumlah lapisan dalam encoder dan ukuran output dari setiap lapisan. Ketika diatur ke *auto*, algoritma menggunakan dua lapisan ukuran 3 x `num_topics` dan 2 x `num_topics` masing-masing.  **Opsional** *Nilai yang valid: Daftar bilangan bulat positif atau auto yang dipisahkan koma* Nilai default: *auto*  | 
| encoder\$1layers\$1activation |  Fungsi aktivasi untuk digunakan dalam lapisan encoder. **Opsional** Nilai valid:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/ntm_hyperparameters.html) Nilai default: `sigmoid`  | 
| epochs |  Jumlah maksimum lintasan atas data pelatihan. **Opsional** Nilai yang valid: Bilangan bulat positif (min: 1) Nilai default: 50  | 
| learning\$1rate |  Tingkat pembelajaran untuk pengoptimal. **Opsional** Nilai yang valid: Float (min: 1e-6, maks: 1.0) Nilai default: 0,001  | 
| mini\$1batch\$1size |  Jumlah contoh di setiap batch mini. **Opsional** Nilai yang valid: Bilangan bulat positif (min: 1, maks: 10000) Nilai default: 256  | 
| num\$1patience\$1epochs |  Jumlah zaman berturut-turut di mana kriteria penghentian awal dievaluasi. Penghentian awal dipicu ketika perubahan fungsi kerugian turun di bawah yang ditentukan `tolerance` dalam `num_patience_epochs` jumlah epoch terakhir. Untuk menonaktifkan penghentian awal, atur `num_patience_epochs` ke nilai yang lebih besar dari`epochs`. **Opsional** Nilai yang valid: Bilangan bulat positif (min: 1) Nilai default: 3  | 
| optimizer |  Pengoptimal untuk digunakan untuk pelatihan. **Opsional** Nilai valid: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/ntm_hyperparameters.html) Nilai default: `adadelta`  | 
| rescale\$1gradient |  Faktor penskalaan ulang untuk gradien. **Opsional** Nilai yang valid: float (min: 1e-3, maks: 1.0) Nilai default: 1.0  | 
| sub\$1sample |  Fraksi data pelatihan untuk sampel untuk pelatihan per zaman. **Opsional** Nilai yang valid: Float (min: 0.0, max: 1.0) Nilai default: 1.0  | 
| tolerance |  Perubahan relatif maksimum dalam fungsi kerugian. Penghentian awal dipicu ketika perubahan fungsi kerugian turun di bawah nilai ini dalam `num_patience_epochs` jumlah zaman terakhir. **Opsional** Nilai yang valid: Float (min: 1e-6, maks: 0.1) Nilai default: 0,001  | 
| weight\$1decay |   Koefisien peluruhan berat. Menambahkan regularisasi L2. **Opsional** Nilai yang valid: Float (min: 0.0, max: 1.0) Nilai default: 0.0  | 

# Menyetel Model NTM
<a name="ntm-tuning"></a>

*Penyetelan model otomatis*, juga dikenal sebagai tuning hyperparameter, menemukan versi terbaik dari model dengan menjalankan banyak pekerjaan yang menguji berbagai hiperparameter pada kumpulan data Anda. Anda memilih hyperparameters yang dapat disetel, rentang nilai untuk masing-masing, dan metrik objektif. Anda memilih metrik objektif dari metrik yang dihitung oleh algoritme. Penyetelan model otomatis mencari hiperparameter yang dipilih untuk menemukan kombinasi nilai yang menghasilkan model yang mengoptimalkan metrik objektif.

Amazon SageMaker AI NTM adalah algoritma pembelajaran tanpa pengawasan yang mempelajari representasi laten dari koleksi besar data diskrit, seperti kumpulan dokumen. Representasi laten menggunakan variabel yang disimpulkan yang tidak diukur secara langsung untuk memodelkan pengamatan dalam kumpulan data. Penyetelan model otomatis pada NTM membantu Anda menemukan model yang meminimalkan kerugian atas data pelatihan atau validasi. *Kehilangan pelatihan* mengukur seberapa baik model sesuai dengan data pelatihan. *Kehilangan validasi* mengukur seberapa baik model dapat menggeneralisasi ke data yang tidak dilatih. Kehilangan pelatihan yang rendah menunjukkan bahwa model cocok dengan data pelatihan. Kehilangan validasi yang rendah menunjukkan bahwa suatu model tidak terlalu sesuai dengan data pelatihan sehingga harus dapat memodelkan dokumen dengan sukses yang belum dilatih. Biasanya, lebih baik jika kedua kerugian itu kecil. Namun, meminimalkan kehilangan pelatihan terlalu banyak dapat mengakibatkan overfitting dan meningkatkan kehilangan validasi, yang akan mengurangi keumuman model. 

Untuk informasi selengkapnya tentang penyetelan model, lihat[Penyetelan model otomatis dengan AI SageMaker](automatic-model-tuning.md).

## Metrik yang Dihitung oleh Algoritma NTM
<a name="ntm-metrics"></a>

Algoritma NTM melaporkan satu metrik yang dihitung selama pelatihan:. `validation:total_loss` Kerugian total adalah jumlah dari kerugian rekonstruksi dan divergensi Kullback-Leibler. Saat menyetel nilai hyperparameter, pilih metrik ini sebagai tujuannya.


| Nama Metrik | Deskripsi | Arah Optimasi | 
| --- | --- | --- | 
| validation:total\$1loss |  Total Kerugian pada set validasi  |  Minimalkan  | 

## Hiperparameter NTM yang dapat disetel
<a name="ntm-tunable-hyperparameters"></a>

Anda dapat menyetel hyperparameters berikut untuk algoritma NTM. Biasanya menetapkan `learning_rate` nilai rendah `mini_batch_size` dan kecil menghasilkan kerugian validasi yang lebih rendah, meskipun mungkin perlu waktu lebih lama untuk dilatih. Kerugian validasi yang rendah tidak selalu menghasilkan topik yang lebih koheren seperti yang ditafsirkan oleh manusia. Pengaruh hiperparameter lain pada pelatihan dan kehilangan validasi dapat bervariasi dari kumpulan data ke kumpulan data. Untuk melihat nilai mana yang kompatibel, lihat[Hiperparameter NTM](ntm_hyperparameters.md).


| Nama Parameter | Jenis Parameter | Rentang yang Direkomendasikan | 
| --- | --- | --- | 
| encoder\$1layers\$1activation |  CategoricalParameterRanges  |  ['sigmoid', 'tanh', 'relu']  | 
| learning\$1rate |  ContinuousParameterRange  |  MinValue: 1e-4, MaxValue: 0,1  | 
| mini\$1batch\$1size |  IntegerParameterRanges  |  MinValue: 16 MaxValue ,:2048  | 
| optimizer |  CategoricalParameterRanges  |  ['sgd', 'adam', 'adadelta']  | 
| rescale\$1gradient |  ContinuousParameterRange  |  MinValue: 0,1, MaxValue: 1,0  | 
| weight\$1decay |  ContinuousParameterRange  |  MinValue: 0.0, MaxValue: 1.0  | 

# Format Respons NTM
<a name="ntm-in-formats"></a>

Semua algoritme bawaan Amazon SageMaker AI mematuhi format inferensi input umum yang dijelaskan dalam [Format Data Umum -](https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html) Inferensi. Topik ini berisi daftar format output yang tersedia untuk algoritma SageMaker AI NTM.

## Format Respons JSON
<a name="ntm-json"></a>

```
{
    "predictions":    [
        {"topic_weights": [0.02, 0.1, 0,...]},
        {"topic_weights": [0.25, 0.067, 0,...]}
    ]
}
```

## Format Respons JSONLINES
<a name="ntm-jsonlines"></a>

```
{"topic_weights": [0.02, 0.1, 0,...]}
{"topic_weights": [0.25, 0.067, 0,...]}
```

## Format Respons RECORDIO
<a name="ntm-recordio"></a>

```
[
    Record = {
        features = {},
        label = {
            'topic_weights': {
                keys: [],
                values: [0.25, 0.067, 0, ...]  # float32
            }
        }
    },
    Record = {
        features = {},
        label = {
            'topic_weights': {
                keys: [],
                values: [0.25, 0.067, 0, ...]  # float32
            }
        }
    }  
]
```

# Algoritma Object2Vec
<a name="object2vec"></a>

Algoritma Amazon SageMaker AI Object2Vec adalah algoritma penyematan saraf tujuan umum yang sangat dapat disesuaikan. Ia dapat mempelajari penyematan padat dimensi rendah dari objek dimensi tinggi. Embeddings dipelajari dengan cara yang mempertahankan semantik hubungan antara pasangan objek di ruang asli di ruang embedding. Anda dapat menggunakan embeddings yang dipelajari untuk secara efisien menghitung tetangga terdekat objek dan untuk memvisualisasikan kelompok alami objek terkait dalam ruang dimensi rendah, misalnya. Anda juga dapat menggunakan embeddings sebagai fitur dari objek yang sesuai dalam tugas yang diawasi hilir, seperti klasifikasi atau regresi. 

Object2Vec menggeneralisasi teknik penyematan Word2Vec yang terkenal untuk kata-kata yang dioptimalkan dalam AI. SageMaker [BlazingText algoritma](blazingtext.md) [Untuk posting blog yang membahas cara menerapkan Object2Vec ke beberapa kasus penggunaan praktis, lihat Pengantar Amazon AI Object2Vec. SageMaker ](https://aws.amazon.com/blogs/machine-learning/introduction-to-amazon-sagemaker-object2vec/) 

**Topics**
+ [Antarmuka I/O untuk Algoritma Object2Vec](#object2vec-inputoutput)
+ [Rekomendasi Instans EC2 untuk Algoritma Object2Vec](#object2vec--instances)
+ [Notebook Contoh Object2Vec](#object2vec-sample-notebooks)
+ [Bagaimana Object2Vec Bekerja](object2vec-howitworks.md)
+ [Hiperparameter Object2Vec](object2vec-hyperparameters.md)
+ [Menyetel Model Object2Vec](object2vec-tuning.md)
+ [Format Data untuk Pelatihan Object2Vec](object2vec-training-formats.md)
+ [Format Data untuk Inferensi Object2Vec](object2vec-inference-formats.md)
+ [Embeddings Encoder untuk Object2Vec](object2vec-encoder-embeddings.md)

## Antarmuka I/O untuk Algoritma Object2Vec
<a name="object2vec-inputoutput"></a>

Anda dapat menggunakan Object2Vec pada banyak tipe data input, termasuk contoh berikut.


| Tipe Data Masukan | Contoh | 
| --- | --- | 
|  Pasangan kalimat-kalimat  | “Pertandingan sepak bola dengan banyak pria bermain.” dan “Beberapa pria sedang bermain olahraga.” | 
|  Label - pasangan urutan  | Tag genre film “Titanic”, seperti “Romance” dan “Drama”, dan deskripsi singkatnya: “Titanic karya James Cameron adalah romansa epik dan penuh aksi yang bertentangan dengan pelayaran perdananya yang naas dari R.M.S. Titanic. Dia adalah kapal paling mewah di zamannya, sebuah kapal impian, yang akhirnya membawa lebih dari 1.500 orang sampai mati di perairan es dingin Atlantik Utara pada dini hari tanggal 15 April 1912. | 
|  Pasangan pelanggan-pelanggan  |  ID pelanggan Jane dan ID pelanggan Jackie.  | 
|  Pasangan produk-produk  |  ID produk sepak bola dan ID produk bola basket.  | 
|  Ulasan item pasangan item-pengguna  |  ID pengguna dan barang yang dia beli, seperti apel, pir, dan jeruk.  | 

Untuk mengubah data input ke dalam format yang didukung, Anda harus memprosesnya terlebih dahulu. Saat ini, Object2Vec secara native mendukung dua jenis input: 
+ Token diskrit, yang direpresentasikan sebagai daftar tunggal`integer-id`. Misalnya, `[10]`.
+ Urutan token diskrit, yang direpresentasikan sebagai daftar. `integer-ids` Misalnya, `[0,12,10,13]`.

Objek di setiap pasangan bisa asimetris. Misalnya, pasangan dapat berupa (token, urutan) atau (token, token) atau (urutan, urutan). Untuk input token, algoritme mendukung penyematan sederhana sebagai encoder yang kompatibel. Untuk urutan vektor token, algoritme mendukung yang berikut ini sebagai encoder:
+  Penyematan gabungan rata-rata
+  Jaringan saraf konvolusional hierarkis (), CNNs
+  Memori jangka pendek panjang dua arah berlapis-lapis (Bi) LSTMs 

Label input untuk setiap pasangan dapat berupa salah satu dari yang berikut:
+ Label kategoris yang mengekspresikan hubungan antara objek dalam pasangan 
+ Skor yang mengekspresikan kekuatan kesamaan antara dua objek 

Untuk label kategoris yang digunakan dalam klasifikasi, algoritme mendukung fungsi kehilangan entropi silang. Untuk label berbasis rating/skor yang digunakan dalam regresi, algoritme mendukung fungsi kerugian mean squared error (MSE). Tentukan fungsi kerugian ini dengan `output_layer` hyperparameter saat Anda membuat pekerjaan pelatihan model.

## Rekomendasi Instans EC2 untuk Algoritma Object2Vec
<a name="object2vec--instances"></a>

Jenis instans Amazon Elastic Compute Cloud (Amazon EC2) yang Anda gunakan bergantung pada apakah Anda melatih atau menjalankan inferensi. 

Saat melatih model menggunakan algoritma Object2Vec pada CPU, mulailah dengan instance ml.m5.2xlarge. Untuk pelatihan tentang GPU, mulailah dengan instance ml.p2.xlarge. Jika pelatihan memakan waktu terlalu lama pada contoh ini, Anda dapat menggunakan instance yang lebih besar. Saat ini, algoritma Object2Vec hanya dapat melatih pada satu mesin. Namun, itu memang menawarkan dukungan untuk beberapa GPUs. Object2Vec mendukung keluarga instance GPU P2, P3, G4dn, dan G5 untuk pelatihan dan inferensi.

Untuk inferensi dengan model Object2Vec terlatih yang memiliki jaringan saraf dalam, sebaiknya gunakan instance GPU ml.p3.2xlarge. Karena kelangkaan memori GPU, variabel `INFERENCE_PREFERRED_MODE` lingkungan dapat ditentukan untuk mengoptimalkan apakah jaringan [Optimasi GPU: Embeddings Encoder](object2vec-encoder-embeddings.md#object2vec-inference-gpu-optimize-encoder-embeddings) inferensi [Optimasi GPU: Klasifikasi atau Regresi](object2vec-inference-formats.md#object2vec-inference-gpu-optimize-classification) atau dimuat ke dalam GPU.

## Notebook Contoh Object2Vec
<a name="object2vec-sample-notebooks"></a>
+ [Menggunakan Object2Vec untuk Mengkodekan Kalimat menjadi Embeddings Panjang Tetap](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/object2vec_sentence_similarity/object2vec_sentence_similarity.html)

# Bagaimana Object2Vec Bekerja
<a name="object2vec-howitworks"></a>

Saat menggunakan algoritma Amazon SageMaker AI Object2Vec, Anda mengikuti alur kerja standar: memproses data, melatih model, dan menghasilkan kesimpulan. 

**Topics**
+ [Langkah 1: Proses Data](#object2vec-step-1-data-preprocessing)
+ [Langkah 2: Latih Model](#object2vec-step-2-training-model)
+ [Langkah 3: Menghasilkan Inferensi](#object2vec-step-3-inference)

## Langkah 1: Proses Data
<a name="object2vec-step-1-data-preprocessing"></a>

Selama pra-pemrosesan, konversi data ke format file teks [JSON Lines](http://jsonlines.org/) yang ditentukan dalam. [Format Data untuk Pelatihan Object2Vec](object2vec-training-formats.md) Untuk mendapatkan akurasi tertinggi selama pelatihan, acak juga data secara acak sebelum memasukkannya ke dalam model. Bagaimana Anda menghasilkan permutasi acak tergantung pada bahasa. Untuk python, Anda bisa menggunakan`np.random.shuffle`; untuk Unix,. `shuf`

## Langkah 2: Latih Model
<a name="object2vec-step-2-training-model"></a>

Algoritma SageMaker AI Object2Vec memiliki komponen utama berikut:
+ **Dua saluran input — Saluran** input mengambil sepasang objek dari jenis yang sama atau berbeda sebagai input, dan meneruskannya ke encoder independen dan dapat disesuaikan.
+ **Dua encoder** — Dua encoder, enc0 dan enc1, mengubah setiap objek menjadi vektor embedding dengan panjang tetap. Embeddings yang dikodekan dari benda-benda dalam pasangan kemudian diteruskan ke komparator.
+ **Komparator** — Komparator membandingkan embeddings dengan cara yang berbeda dan menghasilkan skor yang menunjukkan kekuatan hubungan antara objek yang dipasangkan. Dalam skor output untuk pasangan kalimat. Misalnya, 1 menunjukkan hubungan yang kuat antara pasangan kalimat, dan 0 mewakili hubungan yang lemah. 

Selama pelatihan, algoritme menerima pasangan objek dan label atau skor hubungannya sebagai input. Objek di setiap pasangan dapat dari jenis yang berbeda, seperti yang dijelaskan sebelumnya. Jika input ke kedua encoder terdiri dari unit tingkat token yang sama, Anda dapat menggunakan lapisan penyematan token bersama dengan menyetel `tied_token_embedding_weight` hyperparameter saat Anda membuat pekerjaan pelatihan. `True` Ini dimungkinkan, misalnya, ketika membandingkan kalimat yang keduanya memiliki satuan tingkat token kata. Untuk menghasilkan sampel negatif pada tingkat tertentu, atur `negative_sampling_rate` hiperparameter ke rasio sampel negatif dan positif yang diinginkan. Hiperparameter ini mempercepat pembelajaran bagaimana membedakan antara sampel positif yang diamati dalam data pelatihan dan sampel negatif yang tidak mungkin diamati. 

Pasangan objek dilewatkan melalui encoder independen dan dapat disesuaikan yang kompatibel dengan jenis input objek yang sesuai. Encoder mengubah setiap objek berpasangan menjadi vektor penyematan dengan panjang tetap dengan panjang yang sama. Pasangan vektor diteruskan ke operator komparator, yang merakit vektor menjadi satu vektor menggunakan nilai yang ditentukan dalam hyperparameter he. `comparator_list` Vektor yang dirakit kemudian melewati lapisan multilayer perceptron (MLP), yang menghasilkan output yang dibandingkan fungsi kerugian dengan label yang Anda berikan. Perbandingan ini mengevaluasi kekuatan hubungan antara objek dalam pasangan seperti yang diprediksi oleh model. Gambar berikut menunjukkan alur kerja ini.

![\[Arsitektur Algoritma Object2Vec dari Input Data ke Skor\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/object2vec-training-image.png)


## Langkah 3: Menghasilkan Inferensi
<a name="object2vec-step-3-inference"></a>

Setelah model dilatih, Anda dapat menggunakan encoder terlatih untuk memproses objek input atau untuk melakukan dua jenis inferensi:
+ Untuk mengubah objek masukan tunggal menjadi embeddings dengan panjang tetap menggunakan encoder yang sesuai
+ Untuk memprediksi label hubungan atau skor antara sepasang objek masukan

Server inferensi secara otomatis mencari tahu jenis mana yang diminta berdasarkan data input. Untuk mendapatkan embeddings sebagai output, berikan hanya satu input. Untuk memprediksi label hubungan atau skor, berikan kedua input dalam pasangan.

# Hiperparameter Object2Vec
<a name="object2vec-hyperparameters"></a>

Dalam `CreateTrainingJob` permintaan, Anda menentukan algoritma pelatihan. Anda juga dapat menentukan hyperparameter khusus algoritme sebagai peta. string-to-string Tabel berikut mencantumkan hyperparameters untuk algoritma pelatihan Object2Vec.


| Nama Parameter | Deskripsi | 
| --- | --- | 
| enc0\$1max\$1seq\$1len |  Panjang urutan maksimum untuk encoder enc0. **Diperlukan** Nilai yang valid: 1 ≤ bilangan bulat ≤ 5000  | 
| enc0\$1vocab\$1size |  Ukuran kosakata token enc0. **Diperlukan** Nilai yang valid: 2 ≤ integer ≤ 3000000  | 
| bucket\$1width |  Perbedaan yang diizinkan antara panjang urutan data saat bucketing diaktifkan. Untuk mengaktifkan bucketing, tentukan nilai bukan nol untuk parameter ini. **Opsional** Nilai yang valid: 0 ≤ bilangan bulat ≤ 100 Nilai default: 0 (tidak ada ember)  | 
| comparator\$1list |  Daftar yang digunakan untuk menyesuaikan cara di mana dua embeddings dibandingkan. Lapisan operator komparator Object2Vec mengambil pengkodean dari kedua encoder sebagai input dan output satu vektor. Vektor ini adalah rangkaian subvektor. Nilai string yang diteruskan ke `comparator_list` dan urutan di mana mereka dilewatkan menentukan bagaimana subvektor ini dirakit. Misalnya, jika`comparator_list="hadamard, concat"`, maka operator komparator membangun vektor dengan menggabungkan produk Hadamard dari dua pengkodean dan penggabungan dua pengkodean. Jika, di sisi lain`comparator_list="hadamard"`, maka operator komparator membangun vektor sebagai produk hadamard dari hanya dua pengkodean.  **Opsional** Nilai yang valid: Sebuah string yang berisi kombinasi dari nama-nama dari tiga operator biner:`hadamard`,`concat`, atau`abs_diff`. Algoritma Object2Vec saat ini mensyaratkan bahwa dua pengkodean vektor memiliki dimensi yang sama. Operator ini menghasilkan subvektor sebagai berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/object2vec-hyperparameters.html) Nilai default: `"hadamard, concat, abs_diff"`  | 
| dropout |  Probabilitas putus sekolah untuk lapisan jaringan. *Putus sekolah* adalah bentuk regularisasi yang digunakan dalam jaringan saraf yang mengurangi overfitting dengan memangkas neuron kodependen. **Opsional** Nilai yang valid: 0.0 ≤ float ≤ 1.0 Nilai default: 0.0  | 
| early\$1stopping\$1patience |  Jumlah zaman berturut-turut tanpa perbaikan diperbolehkan sebelum penghentian awal diterapkan. Perbaikan didefinisikan oleh dengan `early_stopping_tolerance` hyperparameter. **Opsional** Nilai yang valid: 1 ≤ bilangan bulat ≤ 5 Nilai default: 3  | 
| early\$1stopping\$1tolerance |  Pengurangan fungsi kerugian yang harus dicapai oleh suatu algoritma antara zaman berurutan untuk menghindari penghentian awal setelah jumlah zaman berturut-turut yang ditentukan dalam hyperparameter disimpulkan. `early_stopping_patience` **Opsional** Nilai yang valid: 0,000001 ≤ float ≤ 0,1 Nilai default: 0,01  | 
| enc\$1dim |  Dimensi output dari lapisan embedding. **Opsional** Nilai yang valid: 4 ≤ bilangan bulat ≤ 10000 Nilai default: 4096  | 
| enc0\$1network |  Model jaringan untuk encoder enc0. **Opsional** Nilai valid: `hcnn`, `bilstm`, atau `pooled_embedding` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/object2vec-hyperparameters.html) Nilai default: `hcnn`  | 
| enc0\$1cnn\$1filter\$1width |  Lebar filter encoder convolutional neural network (CNN) enc0. **Bersyarat** Nilai yang valid: 1 ≤ bilangan bulat ≤ 9 Nilai default: 3  | 
| enc0\$1freeze\$1pretrained\$1embedding |  Apakah akan membekukan bobot penyematan enc0 yang telah dilatih sebelumnya. **Bersyarat** Nilai yang valid: `True` or `False` Nilai default: `True`  | 
| enc0\$1layers  |  Jumlah lapisan dalam encoder enc0. **Bersyarat** Nilai yang valid: `auto` atau 1 ≤ bilangan bulat ≤ 4 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/object2vec-hyperparameters.html) Nilai default: `auto`  | 
| enc0\$1pretrained\$1embedding\$1file |  Nama file file embedding token enc0 yang telah dilatih sebelumnya di saluran data tambahan. **Bersyarat** Nilai yang valid: String dengan karakter alfanumerik, garis bawah, atau titik. [A-ZA-Z0-9\$1.\$1 \$1]  Nilai default: “” (string kosong)  | 
| enc0\$1token\$1embedding\$1dim |  Dimensi output dari layer embedding token enc0. **Bersyarat** Nilai yang valid: 2 ≤ bilangan bulat ≤ 1000 Nilai default: 300  | 
| enc0\$1vocab\$1file |  File kosakata untuk memetakan vektor penyematan token enc0 yang telah dilatih sebelumnya ke kosakata numerik. IDs **Bersyarat** Nilai yang valid: String dengan karakter alfanumerik, garis bawah, atau titik. [A-ZA-Z0-9\$1.\$1 \$1]  Nilai default: “” (string kosong)  | 
| enc1\$1network |  Model jaringan untuk encoder enc1. Jika Anda ingin encoder enc1 menggunakan model jaringan yang sama dengan enc0, termasuk nilai hyperparameter, tetapkan nilainya ke. `enc0`   Bahkan ketika jaringan encoder enc0 dan enc1 memiliki arsitektur simetris, Anda tidak dapat berbagi nilai parameter untuk jaringan ini.  **Opsional** Nilai yang benar: `enc0`, `hcnn`, `bilstm`, atau `pooled_embedding` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/object2vec-hyperparameters.html) Nilai default: `enc0`  | 
| enc1\$1cnn\$1filter\$1width |  Lebar filter encoder CNN enc1. **Bersyarat** Nilai yang valid: 1 ≤ bilangan bulat ≤ 9 Nilai default: 3  | 
| enc1\$1freeze\$1pretrained\$1embedding |  Apakah akan membekukan bobot penyematan enc1 yang telah dilatih sebelumnya. **Bersyarat** Nilai yang valid: `True` or `False` Nilai default: `True`  | 
| enc1\$1layers  |  Jumlah lapisan dalam encoder enc1. **Bersyarat** Nilai yang valid: `auto` atau 1 ≤ bilangan bulat ≤ 4 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/object2vec-hyperparameters.html) Nilai default: `auto`  | 
| enc1\$1max\$1seq\$1len |  Panjang urutan maksimum untuk encoder enc1. **Bersyarat** Nilai yang valid: 1 ≤ bilangan bulat ≤ 5000  | 
| enc1\$1pretrained\$1embedding\$1file |  Nama file embedding token enc1 yang telah dilatih sebelumnya di saluran data tambahan. **Bersyarat** Nilai yang valid: String dengan karakter alfanumerik, garis bawah, atau titik. [A-ZA-Z0-9\$1.\$1 \$1]  Nilai default: “” (string kosong)  | 
| enc1\$1token\$1embedding\$1dim |  Dimensi output dari layer embedding token enc1. **Bersyarat** Nilai yang valid: 2 ≤ bilangan bulat ≤ 1000 Nilai default: 300  | 
| enc1\$1vocab\$1file |  File kosakata untuk memetakan embeddings token enc1 yang telah dilatih sebelumnya ke kosakata. IDs **Bersyarat** Nilai yang valid: String dengan karakter alfanumerik, garis bawah, atau titik. [A-ZA-Z0-9\$1.\$1 \$1]  Nilai default: “” (string kosong)  | 
| enc1\$1vocab\$1size |  Ukuran kosakata token enc0. **Bersyarat** Nilai yang valid: 2 ≤ integer ≤ 3000000  | 
| epochs |  Jumlah zaman yang harus dijalankan untuk pelatihan.  **Opsional** Nilai yang valid: 1 ≤ bilangan bulat ≤ 100 Nilai default: 30  | 
| learning\$1rate |  Tingkat pembelajaran untuk pelatihan. **Opsional** Nilai yang valid: 1.0E-6 ≤ float ≤ 1.0 Nilai default: 0,0004  | 
| mini\$1batch\$1size |  Ukuran batch tempat kumpulan data dibagi menjadi `optimizer` selama pelatihan. **Opsional** Nilai yang valid: 1 ≤ bilangan bulat ≤ 10000 Nilai default: 32  | 
| mlp\$1activation |  Jenis fungsi aktivasi untuk lapisan multilayer perceptron (MLP). **Opsional** Nilai valid: `tanh`, `relu`, atau `linear` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/object2vec-hyperparameters.html) Nilai default: `linear`  | 
| mlp\$1dim |  Dimensi output dari lapisan MLP. **Opsional** Nilai yang valid: 2 ≤ bilangan bulat ≤ 10000 Nilai default: 512  | 
| mlp\$1layers |  Jumlah lapisan MLP dalam jaringan. **Opsional** Nilai yang valid: 0 ≤ bilangan bulat ≤ 10 Nilai default: 2  | 
| negative\$1sampling\$1rate |  Rasio sampel negatif, yang dihasilkan untuk membantu melatih algoritme, dengan sampel positif yang disediakan oleh pengguna. Sampel negatif mewakili data yang tidak mungkin terjadi dalam kenyataan dan diberi label negatif untuk pelatihan. Mereka memfasilitasi pelatihan model untuk membedakan antara sampel positif yang diamati dan sampel negatif yang tidak. Untuk menentukan rasio sampel negatif terhadap sampel positif yang digunakan untuk pelatihan, tetapkan nilainya ke bilangan bulat positif. Misalnya, jika Anda melatih algoritme pada data input di mana semua sampel positif dan disetel `negative_sampling_rate` ke 2, algoritma Object2Vec secara internal menghasilkan dua sampel negatif per sampel positif. Jika Anda tidak ingin menghasilkan atau menggunakan sampel negatif selama pelatihan, tetapkan nilainya ke 0.  **Opsional** Nilai yang valid: 0 ≤ integer Nilai default: 0 (off)  | 
| num\$1classes |  Jumlah kelas untuk pelatihan klasifikasi. Amazon SageMaker AI mengabaikan hyperparameter ini untuk masalah regresi. **Opsional** Nilai yang valid: 2 ≤ bilangan bulat ≤ 30 Nilai default: 2  | 
| optimizer |  Jenis pengoptimal. **Opsional** Nilai yang valid:`adadelta`,`adagrad`,`adam`,`sgd`, atau`rmsprop`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/object2vec-hyperparameters.html) Nilai default: `adam`  | 
| output\$1layer |  Jenis lapisan keluaran tempat Anda menentukan bahwa tugasnya adalah regresi atau klasifikasi. **Opsional** Nilai yang valid: `softmax` atau `mean_squared_error` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/object2vec-hyperparameters.html) Nilai default: `softmax`  | 
| tied\$1token\$1embedding\$1weight |  Apakah akan menggunakan layer embedding bersama untuk kedua encoder. Jika input ke kedua encoder menggunakan unit tingkat token yang sama, gunakan layer embedding token bersama. Misalnya, untuk kumpulan dokumen, jika satu encoder mengkodekan kalimat dan yang lain mengkodekan seluruh dokumen, Anda dapat menggunakan lapisan penyematan token bersama. Itu karena kalimat dan dokumen terdiri dari token kata dari kosakata yang sama. **Opsional** Nilai yang valid: `True` or `False` Nilai default: `False`  | 
| token\$1embedding\$1storage\$1type |  Mode pembaruan gradien yang digunakan selama pelatihan: ketika `dense` mode digunakan, pengoptimal menghitung matriks gradien penuh untuk lapisan penyematan token meskipun sebagian besar baris gradien bernilai nol. Saat `sparse` mode digunakan, pengoptimal hanya menyimpan baris gradien yang sebenarnya digunakan dalam batch mini. Jika Anda ingin algoritme melakukan pembaruan gradien malas, yang menghitung gradien hanya di baris bukan nol dan yang mempercepat pelatihan, tentukan. `row_sparse` Menyetel nilai untuk `row_sparse` membatasi nilai yang tersedia untuk hiperparameter lainnya, sebagai berikut:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/object2vec-hyperparameters.html) **Opsional** Nilai yang valid: `dense` or `row_sparse` Nilai default: `dense`  | 
| weight\$1decay |  Parameter peluruhan berat yang digunakan untuk optimasi. **Opsional** Nilai yang valid: 0 ≤ float ≤ 10000 Nilai default: 0 (tidak ada pembusukan)  | 

# Menyetel Model Object2Vec
<a name="object2vec-tuning"></a>

*Penyetelan model otomatis*, juga dikenal sebagai tuning hyperparameter, menemukan versi terbaik dari model dengan menjalankan banyak pekerjaan yang menguji berbagai hiperparameter pada kumpulan data Anda. Anda memilih hyperparameters yang dapat disetel, rentang nilai untuk masing-masing, dan metrik objektif. Untuk metrik objektif, Anda menggunakan salah satu metrik yang dihitung oleh algoritme. Penyetelan model otomatis mencari hiperparameter yang dipilih untuk menemukan kombinasi nilai yang menghasilkan model yang mengoptimalkan metrik objektif.

Untuk informasi lebih lanjut tentang penyetelan model, lihat[Penyetelan model otomatis dengan AI SageMaker](automatic-model-tuning.md).

## Metrik Dihitung oleh Algoritma Object2Vec
<a name="object2vec-metrics"></a>

Algoritma Object2Vec memiliki metrik klasifikasi dan regresi. `output_layer`Jenis menentukan metrik mana yang dapat Anda gunakan untuk penyetelan model otomatis. 

### Metrik Regressor Dihitung oleh Algoritma Object2Vec
<a name="object2vec-regressor-metrics"></a>

Algoritma melaporkan metrik regressor kesalahan kuadrat rata-rata, yang dihitung selama pengujian dan validasi. Saat menyetel model untuk tugas regresi, pilih metrik ini sebagai tujuannya.


| Nama Metrik | Deskripsi | Arah Optimasi | 
| --- | --- | --- | 
| test:mean\$1squared\$1error | Kesalahan Persegi Rata-Rata | Minimalkan | 
| validation:mean\$1squared\$1error | Kesalahan Persegi Rata-Rata | Minimalkan | 

### Metrik Klasifikasi Dihitung oleh Algoritma Object2Vec
<a name="object2vec-classification-metrics"></a>

Algoritma Object2Vec melaporkan akurasi dan metrik klasifikasi lintas entropi, yang dihitung selama pengujian dan validasi. Saat menyetel model untuk tugas klasifikasi, pilih salah satunya sebagai tujuan.


| Nama Metrik | Deskripsi | Arah Optimasi | 
| --- | --- | --- | 
| test:accuracy | Akurasi | Maksimalkan | 
| test:cross\$1entropy | Entropi silang | Minimalkan | 
| validation:accuracy | Akurasi | Maksimalkan | 
| validation:cross\$1entropy | Entropi silang | Minimalkan | 

## Hiperparameter Objek 2Vec yang Dapat Disetel
<a name="object2vec-tunable-hyperparameters"></a>

Anda dapat menyetel hyperparameters berikut untuk algoritma Object2Vec.


| Nama Hyperparameter | Jenis Hyperparameter | Rentang dan Nilai yang Direkomendasikan | 
| --- | --- | --- | 
| dropout | ContinuousParameterRange | MinValue: 0.0, MaxValue: 1.0 | 
| early\$1stopping\$1patience | IntegerParameterRange | MinValue: 1, MaxValue: 5 | 
| early\$1stopping\$1tolerance | ContinuousParameterRange | MinValue: 0,001, MaxValue: 0,1 | 
| enc\$1dim | IntegerParameterRange | MinValue: 4, MaxValue: 4096 | 
| enc0\$1cnn\$1filter\$1width | IntegerParameterRange | MinValue: 1, MaxValue: 5 | 
| enc0\$1layers | IntegerParameterRange | MinValue: 1, MaxValue: 4 | 
| enc0\$1token\$1embedding\$1dim | IntegerParameterRange | MinValue: 5, MaxValue: 300 | 
| enc1\$1cnn\$1filter\$1width | IntegerParameterRange | MinValue: 1, MaxValue: 5 | 
| enc1\$1layers | IntegerParameterRange | MinValue: 1, MaxValue: 4 | 
| enc1\$1token\$1embedding\$1dim | IntegerParameterRange | MinValue: 5, MaxValue: 300 | 
| epochs | IntegerParameterRange | MinValue: 4, MaxValue: 20 | 
| learning\$1rate | ContinuousParameterRange | MinValue: 1e-6, MaxValue: 1.0 | 
| mini\$1batch\$1size | IntegerParameterRange | MinValue: 1, MaxValue: 8192 | 
| mlp\$1activation | CategoricalParameterRanges |  [`tanh`, `relu`, `linear`]  | 
| mlp\$1dim | IntegerParameterRange | MinValue: 16, MaxValue: 1024 | 
| mlp\$1layers | IntegerParameterRange | MinValue: 1, MaxValue: 4 | 
| optimizer | CategoricalParameterRanges | [`adagrad`, `adam`, `rmsprop`, `sgd`, `adadelta`] | 
| weight\$1decay | ContinuousParameterRange | MinValue: 0.0, MaxValue: 1.0 | 

# Format Data untuk Pelatihan Object2Vec
<a name="object2vec-training-formats"></a>

Saat berlatih dengan algoritma Object2Vec, pastikan bahwa data input dalam permintaan Anda dalam format JSON Lines, di mana setiap baris mewakili satu titik data.

## Masukan: Format Permintaan Garis JSON
<a name="object2vec-in-training-data-jsonlines"></a>

Jenis konten: aplikasi/jsonlines

```
{"label": 0, "in0": [6, 17, 606, 19, 53, 67, 52, 12, 5, 10, 15, 10178, 7, 33, 652, 80, 15, 69, 821, 4], "in1": [16, 21, 13, 45, 14, 9, 80, 59, 164, 4]}
{"label": 1, "in0": [22, 1016, 32, 13, 25, 11, 5, 64, 573, 45, 5, 80, 15, 67, 21, 7, 9, 107, 4], "in1": [22, 32, 13, 25, 1016, 573, 3252, 4]}
{"label": 1, "in0": [774, 14, 21, 206], "in1": [21, 366, 125]}
```

“in0" dan “in1" adalah input untuk encoder0 dan encoder1, masing-masing. Format yang sama berlaku untuk masalah klasifikasi dan regresi. Untuk regresi, bidang `"label"` dapat menerima input bernilai riil.

# Format Data untuk Inferensi Object2Vec
<a name="object2vec-inference-formats"></a>

Halaman berikut menjelaskan permintaan input dan format respons output untuk mendapatkan inferensi penilaian dari model Amazon SageMaker AI Object2Vec.

## Optimasi GPU: Klasifikasi atau Regresi
<a name="object2vec-inference-gpu-optimize-classification"></a>

Karena kelangkaan memori GPU, variabel `INFERENCE_PREFERRED_MODE` lingkungan dapat ditentukan untuk mengoptimalkan apakah klasifikasi/regresi atau jaringan inferensi dimuat ke dalam [Keluaran: Embeddings Encoder](object2vec-encoder-embeddings.md#object2vec-out-encoder-embeddings-data) GPU. Jika sebagian besar inferensi Anda adalah untuk klasifikasi atau regresi, tentukan. `INFERENCE_PREFERRED_MODE=classification` Berikut ini adalah contoh Transformasi Batch menggunakan 4 instance p3.2xlarge yang mengoptimalkan inferensi: classification/regression 

```
transformer = o2v.transformer(instance_count=4,
                              instance_type="ml.p2.xlarge",
                              max_concurrent_transforms=2,
                              max_payload=1,  # 1MB
                              strategy='MultiRecord',
                              env={'INFERENCE_PREFERRED_MODE': 'classification'},  # only useful with GPU
                              output_path=output_s3_path)
```

## Masukan: Format Permintaan Klasifikasi atau Regresi
<a name="object2vec-in-inference-data"></a>

Tipe konten: aplikasi/json

```
{
  "instances" : [
    {"in0": [6, 17, 606, 19, 53, 67, 52, 12, 5, 10, 15, 10178, 7, 33, 652, 80, 15, 69, 821, 4], "in1": [16, 21, 13, 45, 14, 9, 80, 59, 164, 4]},
    {"in0": [22, 1016, 32, 13, 25, 11, 5, 64, 573, 45, 5, 80, 15, 67, 21, 7, 9, 107, 4], "in1": [22, 32, 13, 25, 1016, 573, 3252, 4]},
    {"in0": [774, 14, 21, 206], "in1": [21, 366, 125]}
  ]
}
```

Jenis konten: aplikasi/jsonlines

```
{"in0": [6, 17, 606, 19, 53, 67, 52, 12, 5, 10, 15, 10178, 7, 33, 652, 80, 15, 69, 821, 4], "in1": [16, 21, 13, 45, 14, 9, 80, 59, 164, 4]}
{"in0": [22, 1016, 32, 13, 25, 11, 5, 64, 573, 45, 5, 80, 15, 67, 21, 7, 9, 107, 4], "in1": [22, 32, 13, 25, 1016, 573, 3252, 4]}
{"in0": [774, 14, 21, 206], "in1": [21, 366, 125]}
```

Untuk masalah klasifikasi, panjang vektor skor sesuai dengan`num_classes`. Untuk masalah regresi, panjangnya adalah 1.

## Keluaran: Klasifikasi atau Format Respons Regresi
<a name="object2vec-out-inference-data"></a>

Terima: aplikasi/json

```
{
    "predictions": [
        {
            "scores": [
                0.6533935070037842,
                0.07582679390907288,
                0.2707797586917877
            ]
        },
        {
            "scores": [
                0.026291321963071823,
                0.6577019095420837,
                0.31600672006607056
            ]
        }
    ]
}
```

Terima: aplikasi/jsonlines

```
{"scores":[0.195667684078216,0.395351558923721,0.408980727195739]}
{"scores":[0.251988261938095,0.258233487606048,0.489778339862823]}
{"scores":[0.280087798833847,0.368331134319305,0.351581096649169]}
```

Dalam format klasifikasi dan regresi, skor berlaku untuk masing-masing label. 

# Embeddings Encoder untuk Object2Vec
<a name="object2vec-encoder-embeddings"></a>

Halaman berikut mencantumkan format permintaan input dan respons keluaran untuk mendapatkan inferensi penyematan encoder dari model Amazon SageMaker AI Object2Vec.

## Optimasi GPU: Embeddings Encoder
<a name="object2vec-inference-gpu-optimize-encoder-embeddings"></a>

Embedding adalah pemetaan dari objek diskrit, seperti kata-kata, ke vektor bilangan real.

Karena kelangkaan memori GPU, variabel `INFERENCE_PREFERRED_MODE` lingkungan dapat ditentukan untuk mengoptimalkan apakah jaringan inferensi penyematan encoder [Format Data untuk Inferensi Object2Vec](object2vec-inference-formats.md) atau dimuat ke dalam GPU. Jika sebagian besar inferensi Anda adalah untuk penyematan encoder, tentukan. `INFERENCE_PREFERRED_MODE=embedding` Berikut ini adalah contoh Transformasi Batch menggunakan 4 instance p3.2xlarge yang mengoptimalkan inferensi penyematan encoder:

```
transformer = o2v.transformer(instance_count=4,
                              instance_type="ml.p2.xlarge",
                              max_concurrent_transforms=2,
                              max_payload=1,  # 1MB
                              strategy='MultiRecord',
                              env={'INFERENCE_PREFERRED_MODE': 'embedding'},  # only useful with GPU
                              output_path=output_s3_path)
```

## Masukan: Embeddings Encoder
<a name="object2vec-in-encoder-embeddings-data"></a>

<FWD-LENGTH>Tipe konten: aplikasi/json; infer\$1max\$1seqlens=, <BCK-LENGTH>

Dimana <FWD-LENGTH>dan <BCK-LENGTH>merupakan bilangan bulat dalam rentang [1.5000] dan tentukan panjang urutan maksimum untuk encoder maju dan mundur.

```
{
  "instances" : [
    {"in0": [6, 17, 606, 19, 53, 67, 52, 12, 5, 10, 15, 10178, 7, 33, 652, 80, 15, 69, 821, 4]},
    {"in0": [22, 1016, 32, 13, 25, 11, 5, 64, 573, 45, 5, 80, 15, 67, 21, 7, 9, 107, 4]},
    {"in0": [774, 14, 21, 206]}
  ]
}
```

<FWD-LENGTH>Tipe konten: aplikasi/jsonlines; infer\$1max\$1seqlens=, <BCK-LENGTH>

Dimana <FWD-LENGTH>dan <BCK-LENGTH>merupakan bilangan bulat dalam rentang [1.5000] dan tentukan panjang urutan maksimum untuk encoder maju dan mundur.

```
{"in0": [6, 17, 606, 19, 53, 67, 52, 12, 5, 10, 15, 10178, 7, 33, 652, 80, 15, 69, 821, 4]}
{"in0": [22, 1016, 32, 13, 25, 11, 5, 64, 573, 45, 5, 80, 15, 67, 21, 7, 9, 107, 4]}
{"in0": [774, 14, 21, 206]}
```

Dalam kedua format ini, Anda hanya menentukan satu jenis input: `“in0”` atau `“in1.”` Layanan inferensi kemudian memanggil encoder yang sesuai dan mengeluarkan embeddings untuk setiap instance. 

## Keluaran: Embeddings Encoder
<a name="object2vec-out-encoder-embeddings-data"></a>

Tipe konten: aplikasi/json

```
{
  "predictions": [
    {"embeddings":[0.057368703186511,0.030703511089086,0.099890425801277,0.063688032329082,0.026327300816774,0.003637571120634,0.021305780857801,0.004316598642617,0.0,0.003397724591195,0.0,0.000378780066967,0.0,0.0,0.0,0.007419463712722]},
    {"embeddings":[0.150190666317939,0.05145975202322,0.098204270005226,0.064249359071254,0.056249320507049,0.01513972133398,0.047553978860378,0.0,0.0,0.011533712036907,0.011472506448626,0.010696629062294,0.0,0.0,0.0,0.008508535102009]}
  ]
}
```

Jenis konten: aplikasi/jsonlines

```
{"embeddings":[0.057368703186511,0.030703511089086,0.099890425801277,0.063688032329082,0.026327300816774,0.003637571120634,0.021305780857801,0.004316598642617,0.0,0.003397724591195,0.0,0.000378780066967,0.0,0.0,0.0,0.007419463712722]}
{"embeddings":[0.150190666317939,0.05145975202322,0.098204270005226,0.064249359071254,0.056249320507049,0.01513972133398,0.047553978860378,0.0,0.0,0.011533712036907,0.011472506448626,0.010696629062294,0.0,0.0,0.0,0.008508535102009]}
```

Panjang vektor output embeddings oleh layanan inferensi sama dengan nilai salah satu hyperparameter berikut yang Anda tentukan pada waktu pelatihan:,, atau. `enc0_token_embedding_dim` `enc1_token_embedding_dim` `enc_dim`

# Sequence-to-Sequence Algoritma
<a name="seq-2-seq"></a>

Amazon SageMaker AI Sequence to Sequence adalah algoritma pembelajaran yang diawasi di mana input adalah urutan token (misalnya, teks, audio) dan output yang dihasilkan adalah urutan token lainnya. Contoh aplikasi meliputi: terjemahan mesin (masukan kalimat dari satu bahasa dan prediksi apa kalimat itu dalam bahasa lain), ringkasan teks (masukkan string kata yang lebih panjang dan prediksi string kata yang lebih pendek yang merupakan ringkasan), speech-to-text (klip audio diubah menjadi kalimat keluaran dalam token). Baru-baru ini, masalah dalam domain ini telah berhasil dimodelkan dengan jaringan saraf dalam yang menunjukkan peningkatan kinerja yang signifikan dibandingkan metodologi sebelumnya. Amazon SageMaker AI seq2seq menggunakan model Recurrent Neural Networks (RNNs) dan Convolutional Neural Network (CNN) dengan perhatian sebagai arsitektur encoder-decoder. 

**Topics**
+ [Antarmuka Input/Output untuk Algoritma Sequence-to-Sequence](#s2s-inputoutput)
+ [Rekomendasi Instans EC2 untuk Algoritma Sequence-to-Sequence](#s2s-instances)
+ [Sequence-to-Sequence Contoh Notebook](#seq-2-seq-sample-notebooks)
+ [Cara Kerja Sequence-to-Sequence](seq-2-seq-howitworks.md)
+ [Sequence-to-Sequence Hiperparameter](seq-2-seq-hyperparameters.md)
+ [Menyetel Sequence-to-Sequence Model](seq-2-seq-tuning.md)

## Antarmuka Input/Output untuk Algoritma Sequence-to-Sequence
<a name="s2s-inputoutput"></a>

**Pelatihan**

SageMaker AI seq2seq mengharapkan data dalam format Recordio-Protobuf. Namun, token diharapkan sebagai bilangan bulat, bukan sebagai floating point, seperti biasanya.

[Skrip untuk mengonversi data dari file teks tokenized ke format protobuf disertakan dalam notebook contoh seq2seq.](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/seq2seq_translation_en-de/SageMaker-Seq2Seq-Translation-English-German.html) Secara umum, ini mengemas data ke dalam tensor bilangan bulat 32-bit dan menghasilkan file kosakata yang diperlukan, yang diperlukan untuk perhitungan metrik dan inferensi.

Setelah preprocessing selesai, algoritma dapat dipanggil untuk pelatihan. Algoritma mengharapkan tiga saluran:
+ `train`: Ini harus berisi data pelatihan (misalnya, `train.rec` file yang dihasilkan oleh skrip preprocessing).
+ `validation`: Ini harus berisi data validasi (misalnya, `val.rec` file yang dihasilkan oleh skrip preprocessing).
+ `vocab`: Ini harus berisi dua file kosakata (`vocab.src.json`dan) `vocab.trg.json` 

Jika algoritme tidak menemukan data di salah satu dari ketiga saluran ini, pelatihan menghasilkan kesalahan.

**Inferensi**

Untuk titik akhir yang dihosting, inferensi mendukung dua format data. Untuk melakukan inferensi menggunakan token teks yang dipisahkan spasi, gunakan `application/json` formatnya. Jika tidak, gunakan `recordio-protobuf` format untuk bekerja dengan data yang dikodekan integer. Kedua mode mendukung batch data input. `application/json`format juga memungkinkan Anda untuk memvisualisasikan matriks perhatian.
+ `application/json`: Mengharapkan input dalam format JSON dan mengembalikan output dalam format JSON. Baik jenis konten dan penerimaan harus`application/json`. Setiap urutan diharapkan menjadi string dengan token terpisah spasi. Format ini direkomendasikan ketika jumlah urutan sumber dalam batch kecil. Ini juga mendukung opsi konfigurasi tambahan berikut:

  `configuration`: \$1`attention_matrix`:`true`\$1: Mengembalikan matriks perhatian untuk urutan input tertentu.
+ `application/x-recordio-protobuf`: Mengharapkan input dalam `recordio-protobuf` format dan mengembalikan output dalam`recordio-protobuf format`. Baik jenis konten dan penerimaan harus`applications/x-recordio-protobuf`. Untuk format ini, urutan sumber harus diubah menjadi daftar bilangan bulat untuk pengkodean protobuf berikutnya. Format ini direkomendasikan untuk inferensi massal.

Untuk transformasi batch, inferensi mendukung format JSON Lines. Transformasi Batch mengharapkan input dalam format JSON Lines dan mengembalikan output dalam format JSON Lines. Baik jenis konten dan penerimaan harus`application/jsonlines`. Format untuk input adalah sebagai berikut:

```
content-type: application/jsonlines

{"source": "source_sequence_0"}
{"source": "source_sequence_1"}
```

Format tanggapan adalah sebagai berikut:

```
accept: application/jsonlines

{"target": "predicted_sequence_0"}
{"target": "predicted_sequence_1"}
```

Untuk detail tambahan tentang cara membuat serial dan deserialisasi input dan output ke format tertentu untuk inferensi, lihat. [Sequence-to-Sequence Contoh Notebook](#seq-2-seq-sample-notebooks)

## Rekomendasi Instans EC2 untuk Algoritma Sequence-to-Sequence
<a name="s2s-instances"></a>

Algoritma Amazon SageMaker AI seq2seq hanya mendukung pada jenis instans GPU dan hanya dapat berlatih pada satu mesin. Namun, Anda dapat menggunakan instance dengan beberapa GPUs. Algoritma seq2seq mendukung keluarga instance GPU P2, P3, G4dn, dan G5.

## Sequence-to-Sequence Contoh Notebook
<a name="seq-2-seq-sample-notebooks"></a>

Untuk contoh buku catatan yang menunjukkan cara menggunakan algoritme SageMaker AI Sequence to Sequence untuk melatih model terjemahan Inggris-Jerman, lihat Contoh Bahasa Inggris-Jerman [Terjemahan Mesin Menggunakan AI Seq2Seq](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/seq2seq_translation_en-de/SageMaker-Seq2Seq-Translation-English-German.html). SageMaker Untuk petunjuk cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh di SageMaker AI, lihat. [Instans SageMaker notebook Amazon](nbi.md) Setelah Anda membuat instance notebook dan membukanya, pilih tab **Contoh SageMaker AI** untuk melihat daftar semua sampel SageMaker AI. Contoh buku catatan pemodelan topik menggunakan algoritme NTM terletak di bagian Pengantar Algoritma **Amazon**. Untuk membuka buku catatan, klik tab **Use** dan pilih **Create copy**.

# Cara Kerja Sequence-to-Sequence
<a name="seq-2-seq-howitworks"></a>

Biasanya, jaringan saraf untuk sequence-to-sequence pemodelan terdiri dari beberapa lapisan, termasuk: 
+ **Lapisan penyematan**. Di lapisan ini, matriks input, yang merupakan token input yang dikodekan dengan cara yang jarang (misalnya, dikodekan satu panas) dipetakan ke lapisan fitur padat. Ini diperlukan karena vektor fitur dimensi tinggi lebih mampu menyandikan informasi mengenai token tertentu (kata untuk teks corpora) daripada vektor sederhana. one-hot-encoded Ini juga merupakan praktik standar untuk menginisialisasi lapisan penyematan ini dengan vektor kata pra-terlatih seperti [FastText](https://fasttext.cc/)atau [Sarung Tangan](https://nlp.stanford.edu/projects/glove/) atau untuk menginisialisasi secara acak dan mempelajari parameter selama pelatihan. 
+ **Lapisan encoder**. Setelah token input dipetakan ke dalam ruang fitur dimensi tinggi, urutan dilewatkan melalui lapisan encoder untuk mengompres semua informasi dari lapisan penyematan input (dari seluruh urutan) menjadi vektor fitur panjang tetap. Biasanya, encoder terbuat dari jaringan tipe RNN seperti memori jangka pendek panjang (LSTM) atau unit berulang terjaga keamanannya (GRU). ([Blog Cola](http://colah.github.io/posts/2015-08-Understanding-LSTMs/) menjelaskan LSTM dengan sangat rinci.) 
+ Lapisan **decoder**. Lapisan decoder mengambil vektor fitur yang dikodekan ini dan menghasilkan urutan output token. Lapisan ini juga biasanya dibangun dengan arsitektur RNN (LSTM dan GRU). 

Seluruh model dilatih bersama untuk memaksimalkan probabilitas urutan target yang diberikan urutan sumber. Model ini pertama kali diperkenalkan oleh [Sutskever et](https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf) al. pada tahun 2014. 

**Mekanisme perhatian**. Kerugian dari kerangka encoder-decoder adalah bahwa kinerja model menurun ketika dan ketika panjang urutan sumber meningkat karena batas berapa banyak informasi yang dapat dikandung oleh vektor fitur yang disandikan dengan panjang tetap. [Untuk mengatasi masalah ini, pada tahun 2015, Bahdanau et al. mengusulkan mekanisme perhatian.](https://arxiv.org/pdf/1409.0473.pdf) Dalam mekanisme perhatian, decoder mencoba menemukan lokasi dalam urutan encoder di mana informasi yang paling penting dapat ditemukan dan menggunakan informasi itu dan kata-kata yang sebelumnya diterjemahkan untuk memprediksi token berikutnya dalam urutan. 

Untuk lebih jelasnya, lihat whitepaper [Pendekatan Efektif untuk Terjemahan Mesin Saraf Berbasis Perhatian oleh Luong, dkk. yang menjelaskan dan menyederhanakan perhitungan untuk berbagai mekanisme perhatian](https://arxiv.org/abs/1508.04025). Selain itu, whitepaper [Sistem Terjemahan Mesin Neural Google: Menjembatani Kesenjangan antara Terjemahan Manusia dan Mesin oleh Wu, dkk.](https://arxiv.org/abs/1609.08144) menjelaskan arsitektur Google untuk terjemahan mesin, yang menggunakan koneksi lewati antara lapisan encoder dan decoder.

# Sequence-to-Sequence Hiperparameter
<a name="seq-2-seq-hyperparameters"></a>

Tabel berikut mencantumkan hyperparameters yang dapat Anda atur saat berlatih dengan algoritma Amazon SageMaker AI Sequence-to-Sequence (seq2seq).


| Nama Parameter | Deskripsi | 
| --- | --- | 
| batch\$1size | Ukuran batch mini untuk penurunan gradien. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 64 | 
| beam\$1size | Panjang balok untuk pencarian balok. Digunakan selama pelatihan untuk komputasi `bleu` dan digunakan selama inferensi. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 5 | 
| bleu\$1sample\$1size | Jumlah instance untuk dipilih dari kumpulan data validasi untuk memecahkan kode dan menghitung `bleu` skor selama pelatihan. Setel ke -1 untuk menggunakan set validasi lengkap (jika `bleu` dipilih sebagai`optimized_metric`). **Opsional** Nilai yang valid: integer Nilai default: 0 | 
| bucket\$1width | Mengembalikan (sumber, target) ember hingga (`max_seq_len_source`,`max_seq_len_target`). Sisi data yang lebih panjang menggunakan langkah-langkah `bucket_width` sementara sisi yang lebih pendek menggunakan langkah-langkah yang diperkecil dengan rasio target/source panjang rata-rata. Jika satu sisi mencapai panjang maksimum sebelum yang lain, lebar ember ekstra di sisi itu tetap ke sisi itu. `max_len` **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 10 | 
| bucketing\$1enabled | Setel `false` untuk menonaktifkan bucketing, buka gulungan ke panjang maksimum. **Opsional** Nilai yang valid: `true` or `false` Nilai default: `true` | 
| checkpoint\$1frequency\$1num\$1batches | Checkpoint dan evaluasi setiap x batch. Hyperparameter checkpointing ini diteruskan ke algoritme seq2seq SageMaker AI untuk menghentikan lebih awal dan mengambil model terbaik. Checkpointing algoritme berjalan secara lokal di wadah pelatihan algoritme dan tidak kompatibel dengan SageMaker checkpointing AI. Algoritma untuk sementara menyimpan pos pemeriksaan ke jalur lokal dan menyimpan artefak model terbaik ke jalur keluaran model di S3 setelah pekerjaan pelatihan dihentikan. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 1000 | 
| checkpoint\$1threshold | Jumlah maksimum model pos pemeriksaan diizinkan untuk tidak meningkatkan dataset validasi sebelum pelatihan dihentikan. `optimized_metric` Hyperparameter checkpointing ini diteruskan ke algoritme seq2seq SageMaker AI untuk menghentikan lebih awal dan mengambil model terbaik. Checkpointing algoritme berjalan secara lokal di wadah pelatihan algoritme dan tidak kompatibel dengan SageMaker checkpointing AI. Algoritma untuk sementara menyimpan pos pemeriksaan ke jalur lokal dan menyimpan artefak model terbaik ke jalur keluaran model di S3 setelah pekerjaan pelatihan dihentikan. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 3 | 
| clip\$1gradient | Klip nilai gradien absolut lebih besar dari ini. Setel ke negatif untuk menonaktifkan. **Opsional** Nilai yang valid: float Nilai default: 1 | 
| cnn\$1activation\$1type | Jenis `cnn` aktivasi yang akan digunakan. **Opsional** Nilai yang valid: String. Salah satu`glu`,`relu`,`softrelu`,`sigmoid`, atau`tanh`. Nilai default: `glu` | 
| cnn\$1hidden\$1dropout | Probabilitas putus sekolah untuk putus sekolah di antara lapisan konvolusi. **Opsional** Nilai yang valid: Float. Rentang di [0,1]. Nilai default: 0 | 
| cnn\$1kernel\$1width\$1decoder | Lebar kernel untuk `cnn` decoder. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 5 | 
| cnn\$1kernel\$1width\$1encoder | Lebar kernel untuk `cnn` encoder. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 3 | 
| cnn\$1num\$1hidden | Jumlah unit `cnn` tersembunyi untuk encoder dan decoder. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 512 | 
| decoder\$1type | Jenis decoder. **Opsional** Nilai yang valid: String. Baik `rnn` atau `cnn`. Nilai default: *rnn* | 
| embed\$1dropout\$1source | Probabilitas putus sekolah untuk penyematan sisi sumber. **Opsional** Nilai yang valid: Float. Rentang di [0,1]. Nilai default: 0 | 
| embed\$1dropout\$1target | Probabilitas putus sekolah untuk penyematan sisi target. **Opsional** Nilai yang valid: Float. Rentang di [0,1]. Nilai default: 0 | 
| encoder\$1type | Jenis encoder. `rnn`Arsitektur didasarkan pada mekanisme perhatian oleh Bahdanau et al. dan arsitektur *cnn* didasarkan pada Gehring et al. **Opsional** Nilai yang valid: String. Baik `rnn` atau `cnn`. Nilai default: `rnn` | 
| fixed\$1rate\$1lr\$1half\$1life | Waktu paruh untuk tingkat pembelajaran dalam hal jumlah pos pemeriksaan untuk `fixed_rate_` \$1 penjadwal. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 10 | 
| learning\$1rate | Tingkat pembelajaran awal. **Opsional** Nilai yang valid: float Nilai default: 0,0003 | 
| loss\$1type | Fungsi kerugian untuk pelatihan. **Opsional** Nilai yang valid: String. `cross-entropy` Nilai default: `cross-entropy` | 
| lr\$1scheduler\$1type | Jenis penjadwal tingkat pembelajaran. `plateau_reduce`berarti mengurangi tingkat pembelajaran setiap kali `optimized_metric` di `validation_accuracy` dataran tinggi. `inv_t`adalah peluruhan waktu terbalik. `learning_rate`/(`decay_rate`1\$1\$1t) **Opsional** Nilai yang valid: String. Salah satu`plateau_reduce`,`fixed_rate_inv_t`, atau`fixed_rate_inv_sqrt_t`. Nilai default: `plateau_reduce` | 
| max\$1num\$1batches | Jumlah maksimum updates/batches untuk diproses. -1 untuk tak terbatas. **Opsional** Nilai yang valid: integer Nilai default: -1 | 
| max\$1num\$1epochs | Jumlah maksimum epoch untuk melewati data pelatihan sebelum pemasangan dihentikan. Pelatihan berlanjut hingga jumlah zaman ini bahkan jika akurasi validasi tidak membaik jika parameter ini dilewatkan. Diabaikan jika tidak dilewati. **Opsional** Nilai yang valid: Bilangan bulat positif dan kurang dari atau sama dengan max\$1num\$1epochs. Nilai default: tidak ada. | 
| max\$1seq\$1len\$1source | Panjang maksimum untuk panjang urutan sumber. Urutan yang lebih panjang dari panjang ini terpotong hingga panjang ini. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 100  | 
| max\$1seq\$1len\$1target | Panjang maksimum untuk panjang urutan target. Urutan yang lebih panjang dari panjang ini terpotong hingga panjang ini. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 100 | 
| min\$1num\$1epochs | Jumlah minimum epoch pelatihan harus dijalankan sebelum dihentikan melalui `early_stopping` kondisi. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 0 | 
| momentum | Konstanta momentum digunakan untuk`sgd`. Jangan lewatkan parameter ini jika Anda menggunakan `adam` atau`rmsprop`. **Opsional** Nilai yang valid: float Nilai default: tidak ada. | 
| num\$1embed\$1source | Ukuran penyematan untuk token sumber. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 512 | 
| num\$1embed\$1target | Ukuran penyematan untuk token target. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 512 | 
| num\$1layers\$1decoder | *Jumlah lapisan untuk Decoder *rnn* atau cnn.* **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 1 | 
| num\$1layers\$1encoder | Jumlah lapisan untuk Encoder `rnn` atau. `cnn` **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 1 | 
| optimized\$1metric | Metrik untuk dioptimalkan dengan penghentian awal. **Opsional** Nilai yang valid: String. Salah satu`perplexity`,`accuracy`, atau`bleu`. Nilai default: `perplexity` | 
| optimizer\$1type | Optimizer untuk dipilih. **Opsional** Nilai yang valid: String. Salah satu`adam`,`sgd`, atau`rmsprop`. Nilai default: `adam` | 
| plateau\$1reduce\$1lr\$1factor | Faktor untuk melipatgandakan tingkat pembelajaran dengan (untuk`plateau_reduce`). **Opsional** Nilai yang valid: float Nilai default: 0,5 | 
| plateau\$1reduce\$1lr\$1threshold | Untuk `plateau_reduce` penjadwal, kalikan tingkat pembelajaran dengan faktor pengurangan jika `optimized_metric` tidak ditingkatkan untuk banyak pos pemeriksaan ini. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 3 | 
| rnn\$1attention\$1in\$1upper\$1layers | Berikan perhatian ke lapisan atas *rnn, seperti  Google NMT* paper. Hanya berlaku jika lebih dari satu lapisan digunakan. **Opsional** Nilai yang valid: boolean (`true`atau`false`) Nilai default: `true` | 
| rnn\$1attention\$1num\$1hidden | Jumlah unit tersembunyi untuk lapisan perhatian. default ke. `rnn_num_hidden` **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: `rnn_num_hidden` | 
| rnn\$1attention\$1type | Model perhatian untuk encoder. `mlp`mengacu pada concat dan bilinear mengacu pada umum dari Luong et al. paper. **Opsional** Nilai yang valid: String. Salah satu`dot`,`fixed`,`mlp`, atau`bilinear`. Nilai default: `mlp` | 
| rnn\$1cell\$1type | Jenis `rnn` arsitektur tertentu. **Opsional** Nilai yang valid: String. Baik `lstm` atau `gru`. Nilai default: `lstm` | 
| rnn\$1decoder\$1state\$1init | Cara menginisialisasi status `rnn` decoder dari encoder. **Opsional** Nilai yang valid: String. Salah satu`last`,`avg`, atau`zero`. Nilai default: `last` | 
| rnn\$1first\$1residual\$1layer | Lapisan *rnn* pertama yang memiliki koneksi residual, hanya berlaku jika jumlah lapisan dalam encoder atau decoder lebih dari 1. **Opsional** Nilai yang valid: bilangan bulat positif Nilai default: 2 | 
| rnn\$1num\$1hidden | Jumlah unit tersembunyi *rnn* untuk encoder dan decoder. Ini harus kelipatan 2 karena algoritme menggunakan Memori Jangka Pendek Jangka Panjang (LSTM) bi-directional secara default. **Opsional** Nilai yang valid: bilangan bulat genap positif Nilai default: 1024 | 
| rnn\$1residual\$1connections | *Tambahkan koneksi sisa ke rnn bertumpuk.* Jumlah lapisan harus lebih dari 1. **Opsional** Nilai yang valid: boolean (`true`atau`false`) Nilai default: `false` | 
| rnn\$1decoder\$1hidden\$1dropout | Probabilitas putus sekolah untuk keadaan tersembunyi yang menggabungkan konteks dengan status tersembunyi *rnn* di decoder. **Opsional** Nilai yang valid: Float. Rentang di [0,1]. Nilai default: 0 | 
| training\$1metric | Metrik untuk melacak pelatihan tentang data validasi. **Opsional** Nilai yang valid: String. Baik `perplexity` atau `accuracy`. Nilai default: `perplexity` | 
| weight\$1decay | Konstanta peluruhan berat badan. **Opsional** Nilai yang valid: float Nilai default: 0 | 
| weight\$1init\$1scale | Skala inisialisasi berat (untuk `uniform` dan `xavier` inisialisasi).  **Opsional** Nilai yang valid: float Nilai default: 2.34 | 
| weight\$1init\$1type | Jenis inisialisasi berat badan.  **Opsional** Nilai yang valid: String. Baik `uniform` atau `xavier`. Nilai default: `xavier` | 
| xavier\$1factor\$1type | Jenis faktor Xavier. **Opsional** Nilai yang valid: String. Salah satu`in`,`out`, atau`avg`. Nilai default: `in` | 

# Menyetel Sequence-to-Sequence Model
<a name="seq-2-seq-tuning"></a>

*Penyetelan model otomatis*, juga dikenal sebagai tuning hyperparameter, menemukan versi terbaik dari model dengan menjalankan banyak pekerjaan yang menguji berbagai hiperparameter pada kumpulan data Anda. Anda memilih hyperparameters yang dapat disetel, rentang nilai untuk masing-masing, dan metrik objektif. Anda memilih metrik objektif dari metrik yang dihitung oleh algoritme. Penyetelan model otomatis mencari hiperparameter yang dipilih untuk menemukan kombinasi nilai yang menghasilkan model yang mengoptimalkan metrik objektif.

Untuk informasi selengkapnya tentang penyetelan model, lihat[Penyetelan model otomatis dengan AI SageMaker](automatic-model-tuning.md).

## Metrik yang Dihitung oleh Algoritma Sequence-to-Sequence
<a name="seq-2-seq-metrics"></a>

Algoritma urutan ke urutan melaporkan tiga metrik yang dihitung selama pelatihan. Pilih salah satunya sebagai tujuan untuk mengoptimalkan saat menyetel nilai hyperparameter.


| Nama Metrik | Deskripsi | Arah Optimasi | 
| --- | --- | --- | 
| validation:accuracy |  Akurasi dihitung pada dataset validasi.  |  Maksimalkan  | 
| validation:bleu |  Skor [Bleu](https://en.wikipedia.org/wiki/BLEU) dihitung pada dataset validasi. Karena komputasi BLEU mahal, Anda dapat memilih untuk menghitung BLEU pada subsampel acak dari kumpulan data validasi untuk mempercepat proses pelatihan secara keseluruhan. Gunakan `bleu_sample_size` parameter untuk menentukan subsampel.  |  Maksimalkan  | 
| validation:perplexity |  [Perplexity](https://en.wikipedia.org/wiki/Perplexity), adalah fungsi kerugian yang dihitung pada dataset validasi. Kebingungan mengukur entropi silang antara sampel empiris dan distribusi yang diprediksi oleh model dan dengan demikian memberikan ukuran seberapa baik model memprediksi nilai sampel, Model yang pandai memprediksi sampel memiliki kebingungan yang rendah.  |  Minimalkan  | 

## Hiperparameter yang dapat disetel Sequence-to-Sequence
<a name="seq-2-seq-tunable-hyperparameters"></a>

Anda dapat menyetel hyperparameter berikut untuk algoritma SageMaker AI Sequence to Sequence. Hiperparameter yang memiliki dampak terbesar pada metrik objektif urutan ke urutan adalah:`batch_size`,,, `optimizer_type` `learning_rate``num_layers_encoder`, dan. `num_layers_decoder`


| Nama Parameter | Jenis Parameter | Rentang yang Direkomendasikan | 
| --- | --- | --- | 
| num\$1layers\$1encoder |  IntegerParameterRange  |  [1-10]  | 
| num\$1layers\$1decoder |  IntegerParameterRange  |  [1-10]  | 
| batch\$1size |  CategoricalParameterRange  |  [16,32,64,128,256,512,1024,2048]  | 
| optimizer\$1type |  CategoricalParameterRange  |  ['adam', 'sgd', 'rmsprop']  | 
| weight\$1init\$1type |  CategoricalParameterRange  |  ['xavier', 'seragam']  | 
| weight\$1init\$1scale |  ContinuousParameterRange  |  Untuk tipe xavier: MinValue: 2.0, MaxValue: 3.0 Untuk tipe seragam: MinValue: -1.0, MaxValue: 1.0  | 
| learning\$1rate |  ContinuousParameterRange  |  MinValue: 0.00005, MaxValue: 0.2  | 
| weight\$1decay |  ContinuousParameterRange  |  MinValue: 0.0, MaxValue: 0.1  | 
| momentum |  ContinuousParameterRange  |  MinValue: 0,5, MaxValue: 0,9  | 
| clip\$1gradient |  ContinuousParameterRange  |  MinValue: 1.0, MaxValue: 5.0  | 
| rnn\$1num\$1hidden |  CategoricalParameterRange  |  Hanya berlaku untuk jaringan saraf berulang (RNNs). [128,256,512,1024,2048]   | 
| cnn\$1num\$1hidden |  CategoricalParameterRange  |  Hanya berlaku untuk jaringan saraf convolutional (). CNNs [128,256,512,1024,2048]   | 
| num\$1embed\$1source |  IntegerParameterRange  |  [256-512]  | 
| num\$1embed\$1target |  IntegerParameterRange  |  [256-512]  | 
| embed\$1dropout\$1source |  ContinuousParameterRange  |  MinValue: 0.0, MaxValue: 0.5  | 
| embed\$1dropout\$1target |  ContinuousParameterRange  |  MinValue: 0.0, MaxValue: 0.5  | 
| rnn\$1decoder\$1hidden\$1dropout |  ContinuousParameterRange  |  MinValue: 0.0, MaxValue: 0.5  | 
| cnn\$1hidden\$1dropout |  ContinuousParameterRange  |  MinValue: 0.0, MaxValue: 0.5  | 
| lr\$1scheduler\$1type |  CategoricalParameterRange  |  ['plateau\$1reduce', 'fixed\$1rate\$1inv\$1t', 'fixed\$1rate\$1inv\$1sqrt\$1t']  | 
| plateau\$1reduce\$1lr\$1factor |  ContinuousParameterRange  |  MinValue: 0,1, MaxValue: 0,5  | 
| plateau\$1reduce\$1lr\$1threshold |  IntegerParameterRange  |  [1-5]  | 
| fixed\$1rate\$1lr\$1half\$1life |  IntegerParameterRange  |  [10-30]  | 

# Klasifikasi Teks - TensorFlow
<a name="text-classification-tensorflow"></a>

[Algoritma Amazon SageMaker AI Text Classification - adalah TensorFlow algoritma pembelajaran yang diawasi yang mendukung pembelajaran transfer dengan banyak model yang telah dilatih sebelumnya dari Hub. TensorFlow ](https://tfhub.dev/) Gunakan pembelajaran transfer untuk menyempurnakan salah satu model terlatih yang tersedia pada kumpulan data Anda sendiri, meskipun sejumlah besar data teks tidak tersedia. Algoritma klasifikasi teks mengambil string teks sebagai input dan menghasilkan probabilitas untuk masing-masing label kelas. Kumpulan data pelatihan harus dalam format CSV. Halaman ini mencakup informasi tentang rekomendasi instans Amazon EC2 dan contoh buku catatan untuk Klasifikasi Teks -. TensorFlow

**Topics**
+ [Cara menggunakan Klasifikasi Teks SageMaker AI - TensorFlow algoritma](text-classification-tensorflow-how-to-use.md)
+ [Antarmuka input dan output untuk Klasifikasi Teks - TensorFlow algoritma](text-classification-tensorflow-inputoutput.md)
+ [Rekomendasi instans Amazon EC2 untuk Klasifikasi Teks - algoritma TensorFlow](#text-classification-tensorflow-instances)
+ [Klasifikasi Teks - TensorFlow contoh buku catatan](#text-classification-tensorflow-sample-notebooks)
+ [Bagaimana Klasifikasi Teks - TensorFlow Bekerja](text-classification-tensorflow-HowItWorks.md)
+ [TensorFlow Model Hub](text-classification-tensorflow-Models.md)
+ [Klasifikasi Teks - TensorFlow Hyperparameters](text-classification-tensorflow-Hyperparameter.md)
+ [Menyetel Klasifikasi Teks - TensorFlow model](text-classification-tensorflow-tuning.md)

# Cara menggunakan Klasifikasi Teks SageMaker AI - TensorFlow algoritma
<a name="text-classification-tensorflow-how-to-use"></a>

Anda dapat menggunakan Klasifikasi Teks - TensorFlow sebagai algoritma bawaan Amazon SageMaker AI. Bagian berikut menjelaskan cara menggunakan Klasifikasi Teks - TensorFlow dengan SageMaker AI Python SDK. Untuk informasi tentang cara menggunakan Klasifikasi Teks - TensorFlow dari Amazon SageMaker Studio Classic UI, lihat[SageMaker JumpStart model terlatih](studio-jumpstart.md).

Klasifikasi Teks - TensorFlow algoritma mendukung pembelajaran transfer menggunakan salah satu TensorFlow model pra-terlatih yang kompatibel. Untuk daftar semua model terlatih yang tersedia, lihat[TensorFlow Model Hub](text-classification-tensorflow-Models.md). Setiap model yang telah dilatih sebelumnya memiliki keunikan`model_id`. Contoh berikut menggunakan BERT Base Uncased (`model_id`:`tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2`) untuk menyempurnakan dataset kustom. Model yang telah dilatih sebelumnya semuanya telah diunduh sebelumnya dari TensorFlow Hub dan disimpan dalam bucket Amazon S3 sehingga pekerjaan pelatihan dapat berjalan dalam isolasi jaringan. Gunakan artefak pelatihan model yang dibuat sebelumnya ini untuk membangun AI Estimator. SageMaker 

Pertama, ambil URI image Docker, URI skrip pelatihan, dan URI model yang telah dilatih sebelumnya. Kemudian, ubah hyperparameters sesuai keinginan Anda. Anda dapat melihat kamus Python dari semua hyperparameters yang tersedia dan nilai defaultnya dengan. `hyperparameters.retrieve_default` Untuk informasi selengkapnya, lihat [Klasifikasi Teks - TensorFlow Hyperparameters](text-classification-tensorflow-Hyperparameter.md). Gunakan nilai-nilai ini untuk membangun SageMaker AI Estimator.

**catatan**  
Nilai hyperparameter default berbeda untuk model yang berbeda. Misalnya, untuk model yang lebih besar, ukuran batch default lebih kecil. 

Contoh ini menggunakan [https://www.tensorflow.org/datasets/catalog/glue#gluesst2](https://www.tensorflow.org/datasets/catalog/glue#gluesst2)kumpulan data, yang berisi ulasan film positif dan negatif. Kami mengunduh dataset sebelumnya dan membuatnya tersedia dengan Amazon S3. Untuk menyempurnakan model Anda, hubungi `.fit` menggunakan lokasi Amazon S3 dari kumpulan data pelatihan Anda. Bucket S3 apa pun yang digunakan dalam notebook harus berada di AWS Region yang sama dengan instance notebook yang mengaksesnya.

```
from sagemaker import image_uris, model_uris, script_uris, hyperparameters
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*"
training_instance_type = "ml.p3.2xlarge"

# Retrieve the Docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)

# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")

# Retrieve the pretrained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

# Retrieve the default hyperparameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/SST2/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tc-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

# Create an Estimator instance
tf_tc_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
)

# Launch a training job
tf_tc_estimator.fit({"training": training_dataset_s3_path}, logs=True)
```

Untuk informasi selengkapnya tentang cara menggunakan TensorFlow algoritma Klasifikasi SageMaker Teks - untuk pembelajaran transfer pada kumpulan data kustom, lihat buku catatan [Pengantar JumpStart - Klasifikasi Teks](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/jumpstart_text_classification/Amazon_JumpStart_Text_Classification.ipynb).

# Antarmuka input dan output untuk Klasifikasi Teks - TensorFlow algoritma
<a name="text-classification-tensorflow-inputoutput"></a>

Masing-masing model terlatih yang tercantum dalam Model TensorFlow Hub dapat disetel dengan baik ke kumpulan data apa pun yang terdiri dari kalimat teks dengan sejumlah kelas. Model yang telah dilatih sebelumnya melampirkan lapisan klasifikasi ke model Text Embedding dan menginisialisasi parameter lapisan ke nilai acak. Dimensi output dari lapisan klasifikasi ditentukan berdasarkan jumlah kelas yang terdeteksi dalam data input. 

Perhatikan cara memformat data pelatihan Anda untuk masukan ke TensorFlow model Klasifikasi Teks.
+ **Format input data pelatihan:** Direktori yang berisi `data.csv` file. Setiap baris kolom pertama harus memiliki label kelas integer antara 0 dan jumlah kelas. Setiap baris kolom kedua harus memiliki data teks yang sesuai.

Berikut ini adalah contoh file CSV input. Perhatikan bahwa file tersebut seharusnya tidak memiliki header apa pun. File harus di-host di bucket Amazon S3 dengan jalur yang mirip dengan berikut ini:. `s3://bucket_name/input_directory/` Perhatikan bahwa trailing `/` diperlukan.

```
|   |  |
|---|---|
|0 |hide new secretions from the parental units|
|0 |contains no wit , only labored gags|
|1 |that loves its characters and communicates something rather beautiful about human nature|
|...|...|
```

## Pelatihan tambahan
<a name="text-classification-tensorflow-incremental-training"></a>

Anda dapat menyemai pelatihan model baru dengan artefak dari model yang Anda latih sebelumnya dengan SageMaker AI. Pelatihan tambahan menghemat waktu pelatihan ketika Anda ingin melatih model baru dengan data yang sama atau serupa.

**catatan**  
Anda hanya dapat menyemai Klasifikasi Teks SageMaker AI - TensorFlow model dengan Klasifikasi Teks lain - TensorFlow model yang dilatih dalam SageMaker AI. 

Anda dapat menggunakan kumpulan data apa pun untuk pelatihan tambahan, selama kumpulan kelas tetap sama. Langkah pelatihan inkremental mirip dengan langkah fine-tuning, tetapi alih-alih memulai dengan model yang telah dilatih sebelumnya, Anda mulai dengan model fine-tuning yang ada. 

Untuk informasi selengkapnya tentang penggunaan pelatihan tambahan dengan TensorFlow algoritma Klasifikasi Teks SageMaker AI, lihat buku catatan contoh [Pengantar JumpStart - Klasifikasi Teks](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/jumpstart_text_classification/Amazon_JumpStart_Text_Classification.ipynb).

## Inferensi dengan Klasifikasi Teks - algoritma TensorFlow
<a name="text-classification-tensorflow-inference"></a>

Anda dapat meng-host model yang disetel dengan baik yang dihasilkan dari pelatihan Klasifikasi TensorFlow Teks Anda untuk inferensi. Setiap format teks mentah untuk inferensi harus berupa tipe `application/x-text` konten.

Menjalankan inferensi menghasilkan nilai probabilitas, label kelas untuk semua kelas, dan label prediksi yang sesuai dengan indeks kelas dengan probabilitas tertinggi yang dikodekan dalam format JSON. Klasifikasi Teks - TensorFlow model memproses satu string per permintaan dan hanya menghasilkan satu baris. Berikut ini adalah contoh respons format JSON:

```
accept: application/json;verbose

{"probabilities": [prob_0, prob_1, prob_2, ...],
"labels": [label_0, label_1, label_2, ...],
"predicted_label": predicted_label}
```

Jika `accept` diatur ke`application/json`, maka model hanya menghasilkan probabilitas. 

## Rekomendasi instans Amazon EC2 untuk Klasifikasi Teks - algoritma TensorFlow
<a name="text-classification-tensorflow-instances"></a>

Klasifikasi Teks - TensorFlow algoritma mendukung semua instans CPU dan GPU untuk pelatihan, termasuk:
+ `ml.p2.xlarge`
+ `ml.p2.16xlarge`
+ `ml.p3.2xlarge`
+ `ml.p3.16xlarge`
+ `ml.g4dn.xlarge`
+ `ml.g4dn.16.xlarge`
+ `ml.g5.xlarge`
+ `ml.g5.48xlarge`

Kami merekomendasikan instans GPU dengan lebih banyak memori untuk pelatihan dengan ukuran batch besar. Instance CPU (seperti M5) dan GPU (P2, P3, G4dn, atau G5) dapat digunakan untuk inferensi. Untuk daftar lengkap instans SageMaker pelatihan dan inferensi di seluruh AWS Wilayah, lihat Harga [Amazon SageMaker ](https://aws.amazon.com/sagemaker/pricing/).

## Klasifikasi Teks - TensorFlow contoh buku catatan
<a name="text-classification-tensorflow-sample-notebooks"></a>

Untuk informasi selengkapnya tentang cara menggunakan TensorFlow algoritma Klasifikasi Teks SageMaker AI untuk pembelajaran transfer pada kumpulan data khusus, lihat buku catatan [Pengantar JumpStart - Klasifikasi Teks](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/jumpstart_text_classification/Amazon_JumpStart_Text_Classification.ipynb).

Untuk petunjuk cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh di SageMaker AI, lihat. [Instans SageMaker notebook Amazon](nbi.md) Setelah Anda membuat instance notebook dan membukanya, pilih tab **Contoh SageMaker AI** untuk melihat daftar semua sampel SageMaker AI. Untuk membuka buku catatan, pilih tab **Use** dan pilih **Create copy**.

# Bagaimana Klasifikasi Teks - TensorFlow Bekerja
<a name="text-classification-tensorflow-HowItWorks"></a>

Klasifikasi Teks - TensorFlow algoritma mengambil teks sebagai mengklasifikasikannya ke dalam salah satu label kelas output. Jaringan pembelajaran mendalam seperti [BERT](https://arxiv.org/pdf/1810.04805.pdf) sangat akurat untuk klasifikasi teks. Ada juga jaringan pembelajaran mendalam yang dilatih pada kumpulan data teks besar, seperti TextNet, yang memiliki lebih dari 11 juta teks dengan sekitar 11.000 kategori. Setelah jaringan dilatih dengan TextNet data, Anda kemudian dapat menyempurnakan jaringan pada kumpulan data dengan fokus khusus untuk melakukan tugas klasifikasi teks yang lebih spesifik. TensorFlow Algoritma Amazon SageMaker AI Text Classification - mendukung pembelajaran transfer pada banyak model yang telah dilatih sebelumnya yang tersedia di TensorFlow Hub.

Menurut jumlah label kelas dalam data pelatihan Anda, lapisan klasifikasi teks dilampirkan ke TensorFlow model pilihan Anda yang telah dilatih sebelumnya. Lapisan klasifikasi terdiri dari lapisan putus sekolah, lapisan padat, dan lapisan yang terhubung penuh dengan regularisasi 2-norma, dan diinisialisasi dengan bobot acak. Anda dapat mengubah nilai hyperparameter untuk tingkat putus sekolah dari lapisan putus sekolah dan faktor regularisasi L2 untuk lapisan padat.

Anda dapat menyempurnakan seluruh jaringan (termasuk model yang telah dilatih sebelumnya) atau hanya lapisan klasifikasi teratas pada data pelatihan baru. Dengan metode pembelajaran transfer ini, pelatihan dengan kumpulan data yang lebih kecil dimungkinkan.

# TensorFlow Model Hub
<a name="text-classification-tensorflow-Models"></a>

Model terlatih berikut tersedia untuk digunakan untuk pembelajaran transfer dengan TensorFlow algoritma Klasifikasi Teks. 

Model berikut bervariasi secara signifikan dalam ukuran, jumlah parameter model, waktu pelatihan, dan latensi inferensi untuk setiap kumpulan data tertentu. Model terbaik untuk kasus penggunaan Anda bergantung pada kompleksitas kumpulan data fine-tuning Anda dan persyaratan apa pun yang Anda miliki pada waktu pelatihan, latensi inferensi, atau akurasi model.


| Nama Model | `model_id` | Sumber | 
| --- | --- | --- | 
|  Basis BERT Tidak Terkisi  | `tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/bert_en_uncased_L-12_H-768_A-12/3) | 
|  Bert Base Cased  | `tensorflow-tc-bert-en-cased-L-12-H-768-A-12-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/bert_en_cased_L-12_H-768_A-12/3) | 
|  Bert Basis Multilingual Cased  | `tensorflow-tc-bert-multi-cased-L-12-H-768-A-12-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/bert_multi_cased_L-12_H-768_A-12/3) | 
|  BERT L-2\$1H-128\$1A-2 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-2-H-128-A-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-2_H-128_A-2/1) | 
|  BERT L-2\$1H-256\$1A-4 kecil | `tensorflow-tc-small-bert-bert-en-uncased-L-2-H-256-A-4` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-2_H-256_A-4/1) | 
|  BERT L-2\$1H-512\$1A-8 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-2-H-512-A-8` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-2_H-512_A-8/1) | 
|  BERT L-2\$1H-768\$1A-12 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-2-H-768-A-12` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-2_H-768_A-12/1) | 
|  BERT L-4\$1H-128\$1A-2 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-4-H-128-A-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-4_H-128_A-2/1) | 
|  BERT L-4\$1H-256\$1A-4 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-4-H-256-A-4` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-4_H-256_A-4/1) | 
|  BERT L-4\$1H-512\$1A-8 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-4-H-512-A-8` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-4_H-512_A-8/1) | 
|  BERT L-4\$1H-768\$1A-12 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-4-H-768-A-12` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-4_H-768_A-12/1) | 
|  BERT L-6\$1H-128\$1A-2 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-6-H-128-A-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-6_H-128_A-2/1) | 
|  BERT L-6\$1H-256\$1A-4 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-6-H-256-A-4` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-6_H-256_A-4/1) | 
|  BERT L-6\$1H-512\$1A-8 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-6-H-512-A-8` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-6_H-512_A-8/1) | 
|  BERT L-6\$1H-768\$1A-12 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-6-H-768-A-12` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-6_H-768_A-12/1) | 
|  BERT L-8\$1H-128\$1A-2 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-8-H-128-A-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-8_H-128_A-2/1) | 
|  BERT L-8\$1H-256\$1A-4 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-8-H-256-A-4` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-8_H-256_A-4/1) | 
|  BERT L-8\$1H-512\$1A-8 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-8-H-512-A-8` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-8_H-512_A-8/1) | 
|  BERT L-8\$1H-768\$1A-12 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-8-H-768-A-12` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-8_H-768_A-12/1) | 
|  BERT L-10\$1H-128\$1A-2 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-10-H-128-A-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-10_H-128_A-2/1) | 
|  BERT L-10\$1H-256\$1A-4 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-10-H-256-A-4` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-10_H-256_A-4/1) | 
|  BERT L-10\$1H-512\$1A-8 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-10-H-512-A-8` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-10_H-512_A-8/1) | 
|  BERT L-10\$1H-768\$1A-12 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-10-H-768-A-12` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-10_H-768_A-12/1) | 
|  BERT L-12\$1H-128\$1A-2 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-12-H-128-A-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-12_H-128_A-2/1) | 
|  BERT L-12\$1H-256\$1A-4 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-12-H-256-A-4` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-12_H-256_A-4/1) | 
|  BERT L-12\$1H-512\$1A-8 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-12-H-512-A-8` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-12_H-512_A-8/1) | 
|  BERT L-12\$1H-768\$1A-12 kecil  | `tensorflow-tc-small-bert-bert-en-uncased-L-12-H-768-A-12` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-12_H-768_A-12/1) | 
|  BERT Besar Tanpa Alas  | `tensorflow-tc-bert-en-uncased-L-24-H-1024-A-16-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/bert_en_uncased_L-24_H-1024_A-16/3) | 
|  BERT Sangkar Besar  | `tensorflow-tc-bert-en-cased-L-24-H-1024-A-16-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/bert_en_cased_L-24_H-1024_A-16/3) | 
|  BERT Masking Kata Utuh Besar yang Tidak Dihapus  | `tensorflow-tc-bert-en-wwm-uncased-L-24-H-1024-A-16-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/bert_en_wwm_uncased_L-24_H-1024_A-16/3) | 
|  BERT Masking Kata Utuh Berseukuran Besar  | `tensorflow-tc-bert-en-wwm-cased-L-24-H-1024-A-16-2` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/bert_en_wwm_cased_L-24_H-1024_A-16/3) | 
|  Pangkalan ALBERT  | `tensorflow-tc-albert-en-base` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/albert_en_base/2) | 
|  ELECTRA Kecil\$1\$1  | `tensorflow-tc-electra-small-1` | [TensorFlow Tautan hub](https://tfhub.dev/google/electra_small/2) | 
|  Basis ELECTRA  | `tensorflow-tc-electra-base-1` | [TensorFlow Tautan hub](https://tfhub.dev/google/electra_base/2) | 
|  Bert Basis Wikipedia dan BooksCorpus  | `tensorflow-tc-experts-bert-wiki-books-1` | [TensorFlow Tautan hub](https://tfhub.dev/google/experts/bert/wiki_books/2) | 
|  MEDLINE Basis BERT/ PubMed  | `tensorflow-tc-experts-bert-pubmed-1` | [TensorFlow Tautan hub](https://tfhub.dev/google/experts/bert/pubmed/2) | 
|  Basis Kepala Berbicara  | `tensorflow-tc-talking-heads-base` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/talkheads_ggelu_bert_en_base/1) | 
|  Talking Heads Besar  | `tensorflow-tc-talking-heads-large` | [TensorFlow Tautan hub](https://tfhub.dev/tensorflow/talkheads_ggelu_bert_en_large/1) | 

# Klasifikasi Teks - TensorFlow Hyperparameters
<a name="text-classification-tensorflow-Hyperparameter"></a>

Hyperparameters adalah parameter yang ditetapkan sebelum model pembelajaran mesin mulai belajar. Hyperparameter berikut didukung oleh TensorFlow algoritma Deteksi Objek bawaan Amazon SageMaker AI. Lihat [Menyetel Klasifikasi Teks - TensorFlow model](text-classification-tensorflow-tuning.md) untuk informasi tentang tuning hyperparameter. 


| Nama Parameter | Deskripsi | 
| --- | --- | 
| batch\$1size |  Ukuran batch untuk pelatihan. Untuk pelatihan tentang instance dengan beberapa GPUs, ukuran batch ini digunakan di seluruh. GPUs  Nilai yang valid: bilangan bulat positif. Nilai default:`32`.  | 
| beta\$11 |  Beta1 untuk `"adam"` dan `"adamw"` pengoptimal. Merupakan tingkat peluruhan eksponensial untuk perkiraan momen pertama. Diabaikan untuk pengoptimal lainnya. Nilai yang valid: float, range: [`0.0`,`1.0`]. Nilai default:`0.9`.  | 
| beta\$12 |  Beta2 untuk `"adam"` dan `"adamw"` pengoptimal. Merupakan tingkat peluruhan eksponensial untuk perkiraan momen kedua. Diabaikan untuk pengoptimal lainnya. Nilai yang valid: float, range: [`0.0`,`1.0`]. Nilai default:`0.999`.  | 
| dropout\$1rate | Tingkat putus sekolah untuk lapisan putus sekolah di lapisan klasifikasi atas. Digunakan hanya ketika `reinitialize_top_layer` diatur ke`"True"`. Nilai yang valid: float, range: [`0.0`,`1.0`]. Nilai default: `0.2` | 
| early\$1stopping |  Atur `"True"` untuk menggunakan logika penghentian awal selama pelatihan. Jika`"False"`, berhenti dini tidak digunakan. Nilai yang valid: string, baik: (`"True"`atau`"False"`). Nilai default:`"False"`.  | 
| early\$1stopping\$1min\$1delta | Perubahan minimum yang diperlukan untuk memenuhi syarat sebagai perbaikan. Perubahan absolut kurang dari nilai early\$1stopping\$1min\$1delta tidak memenuhi syarat sebagai perbaikan. Digunakan hanya ketika early\$1stopping diatur ke"True".Nilai yang valid: float, range: [`0.0`,`1.0`].Nilai default:`0.0`. | 
| early\$1stopping\$1patience |  Jumlah zaman untuk melanjutkan pelatihan tanpa perbaikan. Digunakan hanya ketika `early_stopping` diatur ke`"True"`. Nilai yang valid: bilangan bulat positif. Nilai default:`5`.  | 
| epochs |  Jumlah zaman pelatihan. Nilai yang valid: bilangan bulat positif. Nilai default:`10`.  | 
| epsilon |  Epsilon untuk`"adam"`,, `"rmsprop"``"adadelta"`, dan `"adagrad"` pengoptimal. Biasanya diatur ke nilai kecil untuk menghindari pembagian dengan 0. Diabaikan untuk pengoptimal lainnya. Nilai yang valid: float, range: [`0.0`,`1.0`]. Nilai default:`1e-7`.  | 
| initial\$1accumulator\$1value |  Nilai awal untuk akumulator, atau nilai momentum per parameter, untuk pengoptimal. `"adagrad"` Diabaikan untuk pengoptimal lainnya. Nilai yang valid: float, range: [`0.0`,`1.0`]. Nilai default:`0.0001`.  | 
| learning\$1rate | Tingkat pembelajaran pengoptimal. Nilai yang valid: float, range: [`0.0`,`1.0`].Nilai default:`0.001`. | 
| momentum |  Momentum untuk `"sgd"` dan `"nesterov"` pengoptimal. Diabaikan untuk pengoptimal lainnya. Nilai yang valid: float, range: [`0.0`,`1.0`]. Nilai default:`0.9`.  | 
| optimizer |  Jenis pengoptimal. Untuk informasi selengkapnya, lihat [Pengoptimal](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers) dalam dokumentasi. TensorFlow  Nilai yang valid: string, salah satu dari berikut ini: (`"adamw"``"adam"`,`"sgd"`,`"nesterov"`,`"rmsprop"`,` "adagrad"`,`"adadelta"`). Nilai default:`"adam"`.  | 
| regularizers\$1l2 |  Faktor regularisasi L2 untuk lapisan padat di lapisan klasifikasi. Digunakan hanya ketika `reinitialize_top_layer` diatur ke`"True"`. Nilai yang valid: float, range: [`0.0`,`1.0`]. Nilai default:`0.0001`.  | 
| reinitialize\$1top\$1layer |  Jika disetel ke`"Auto"`, parameter lapisan klasifikasi atas diinisialisasi ulang selama fine-tuning. Untuk pelatihan tambahan, parameter lapisan klasifikasi teratas tidak diinisialisasi ulang kecuali disetel ke. `"True"` Nilai yang valid: string, salah satu dari berikut ini: (`"Auto"`, `"True"` atau`"False"`). Nilai default:`"Auto"`.  | 
| rho |  Faktor diskon untuk gradien `"adadelta"` dan `"rmsprop"` pengoptimal. Diabaikan untuk pengoptimal lainnya.  Nilai yang valid: float, range: [`0.0`,`1.0`]. Nilai default:`0.95`.  | 
| train\$1only\$1on\$1top\$1layer |  Jika`"True"`, hanya parameter lapisan klasifikasi teratas yang disetel dengan baik. Jika`"False"`, semua parameter model disetel dengan baik. Nilai yang valid: string, baik: (`"True"`atau`"False"`). Nilai default:`"False"`.  | 
| validation\$1split\$1ratio |  Fraksi data pelatihan untuk dibagi secara acak untuk membuat data validasi. Hanya digunakan jika data validasi tidak disediakan melalui `validation` saluran. Nilai yang valid: float, range: [`0.0`,`1.0`]. Nilai default:`0.2`.  | 
| warmup\$1steps\$1fraction |  Fraksi dari jumlah total langkah pembaruan gradien, di mana tingkat pembelajaran meningkat dari 0 ke tingkat pembelajaran awal sebagai pemanasan. Hanya digunakan dengan `adamw` pengoptimal. Nilai yang valid: float, range: [`0.0`,`1.0`]. Nilai default:`0.1`.  | 

# Menyetel Klasifikasi Teks - TensorFlow model
<a name="text-classification-tensorflow-tuning"></a>

*Penyetelan model otomatis*, juga dikenal sebagai tuning hyperparameter, menemukan versi terbaik dari model dengan menjalankan banyak pekerjaan yang menguji berbagai hiperparameter pada kumpulan data Anda. Anda memilih hyperparameters yang dapat disetel, rentang nilai untuk masing-masing, dan metrik objektif. Anda memilih metrik objektif dari metrik yang dihitung algoritme. Penyetelan model otomatis mencari hiperparameter yang dipilih untuk menemukan kombinasi nilai yang menghasilkan model yang mengoptimalkan metrik objektif.

Untuk informasi selengkapnya tentang penyetelan model, lihat[Penyetelan model otomatis dengan AI SageMaker](automatic-model-tuning.md).

## Metrik dihitung oleh Klasifikasi Teks - algoritma TensorFlow
<a name="text-classification-tensorflow-metrics"></a>

Lihat bagan berikut untuk menemukan metrik mana yang dihitung oleh algoritma Klasifikasi Teks. TensorFlow 


| Nama Metrik | Deskripsi | Arah Optimasi | Pola Regex | 
| --- | --- | --- | --- | 
| validation:accuracy | Rasio jumlah prediksi yang benar dengan jumlah prediksi yang dibuat. | Maksimalkan | `val_accuracy=([0-9\\.]+)` | 

## Klasifikasi Teks yang Dapat Disetel - hyperparameters TensorFlow
<a name="text-classification-tensorflow-tunable-hyperparameters"></a>

Tune model klasifikasi teks dengan hyperparameter berikut. Hiperparameter yang memiliki dampak terbesar pada metrik objektif klasifikasi teks adalah:`batch_size`,`learning_rate`, dan. `optimizer` Setel hiperparameter terkait pengoptimal, seperti,,`momentum`,, `regularizers_l2` `beta_1``beta_2`, dan `eps` berdasarkan yang dipilih. `optimizer` Misalnya, gunakan `beta_1` dan `beta_2` hanya ketika `adamw` atau `adam` adalah`optimizer`.

Untuk informasi lebih lanjut tentang hiperparameter mana yang digunakan untuk masing-masing`optimizer`, lihat[Klasifikasi Teks - TensorFlow Hyperparameters](text-classification-tensorflow-Hyperparameter.md).


| Nama Parameter | Jenis Parameter | Rentang yang Direkomendasikan | 
| --- | --- | --- | 
| batch\$1size | IntegerParameterRanges | MinValue: 4, MaxValue: 128 | 
| beta\$11 | ContinuousParameterRanges | MinValue: 1e-6,: 0.999 MaxValue | 
| beta\$12 | ContinuousParameterRanges | MinValue: 1e-6,: 0.999 MaxValue | 
| eps | ContinuousParameterRanges | MinValue: 1e-8, MaxValue: 1.0 | 
| learning\$1rate | ContinuousParameterRanges | MinValue: 1e-6, MaxValue: 0,5 | 
| momentum | ContinuousParameterRanges | MinValue: 0.0, MaxValue: 0.999 | 
| optimizer | CategoricalParameterRanges | ['adamw', 'adam', 'sgd', 'rmsprop', 'nesterov', 'adagrad', 'adadelta'] | 
| regularizers\$1l2 | ContinuousParameterRanges | MinValue: 0.0, MaxValue: 0.999 | 
| train\$1only\$1on\$1top\$1layer | CategoricalParameterRanges | ['Benar', 'Salah'] | 