Lagi

Menggunakan fitur garis sebagai input stop di analis jaringan?


Saya mencoba membangun rute tertentu dengan analis jaringan di Dataset Jaringan. Sebagai masukan untuk membuat rute saya ingin menggunakan fitur garis. Saya mencoba melakukan ini dengan analis jaringan di ArcGIS 10.0 untuk menghubungkan jalur-jalur ini ke rute terpendek. Tapi ini sepertinya hanya memberi saya kesempatan untuk memasukkan pemberhentian sebagai objek analisis jaringan.

Saya mencoba menggunakan titik untuk pemberhentian, dengan membuat titik di kedua ujung fitur garis yang terpisah dan menambahkannya sebagai lokasi input. Tetapi kemudian saya mendapatkan dalam beberapa kasus output yang tidak mencukupi karena salah satu jalur yang saya inginkan dalam rute saya tidak disertakan. Ini misalnya karena titik-titiknya berbentuk bujur sangkar dan garis terpanjang tidak termasuk dalam rute lalu karena saya mencari rute terpendek, tetapi sebenarnya saya ingin garis itu masuk. Saya juga mencoba mencari alat untuk membuat alih-alih titik di kedua ujung garis banyak titik pada garis dengan interval yang sangat kecil untuk menjadi pantai garis yang saya inginkan dalam rute akan dimasukkan dalam rute oleh alat analis jaringan. Tetapi saya tidak dapat menemukan alat seperti itu untuk ArcGIS 10.0.

Adakah yang bisa memberi saya beberapa solusi untuk masalah ini?

Mengenai komentar terakhir dari Chris W, saya membuat pertanyaan baru: Apakah mungkin membuat pemberhentian tidak dalam urutan tertentu untuk menemukan rute terpendek dengan analis jaringan?


Sistem Informasi Geografis Tingkat Lanjut

Dalam tugas ini Anda akan menggunakan ekstensi Analis Jaringan untuk membuat area layanan di sekitar Callcott dan menggunakan alat rute untuk menemukan beberapa jalur terpendek.

Instruksi

Buka server GIS departemen dan unduh file “Columbia addressmatchable roads” (richlex). Buka zip dan salin file ke direktori tempat Anda akan melakukan tugas ini.

Hitung Waktu Perjalanan

Luncurkan ArcGIS dan tambahkan file richlex.shp. Buka tabel atribut dan gunakan tombol Opsi untuk menambahkan bidang baru bernama “Waktu”. Buat tipe Double. Klik kanan pada header bidang baru dan buka kalkulator bidang. Gunakan bidang panjang dan kecepatan untuk menghitung waktu tempuh. Bidang panjangnya dalam meter dan kecepatannya dalam mil per jam, jadi Anda harus melakukan beberapa konversi untuk mendapatkan hasil yang berarti. Anda dapat mengalikan panjang dalam meter dengan 0,000621371192 untuk mendapatkan mil. Setelah Anda menemukan waktu dalam jam, kalikan dengan 60 untuk mendapatkan menit. Hapus bidang yang ada yang disebut Detik.

Buat Kumpulan Data Jaringan

Luncurkan ArcCatalog dan navigasikan ke lokasi tempat Anda membuka ritsleting file bentuk jalan. Pastikan ekstensi Analis Jaringan diaktifkan (buka Alat > Ekstensi… dan pastikan kotak di samping Analis Jaringan dicentang). Klik kanan pada richlex shapefile dan pilih New Network Dataset. Saat menanyakan atribut mana yang akan digunakan untuk kumpulan data jaringan, buat atribut baru bernama “Waktu”, yang menggunakan menit sebagai unit dan klik kotak centang “Gunakan secara default”. Jika tidak, gunakan default. Ketika ditanya apakah Anda ingin membangun dataset, lakukanlah.

Buat Area Layanan

Luncurkan ArcMap. Sekali lagi, pastikan ekstensi Analis Jaringan diaktifkan (buka Alat > Ekstensi… dan pastikan kotak di sebelah Analis Jaringan dicentang). Jika toolbar Network Anylist tidak ditampilkan, klik View > Toolbars > Network Analyst. Tambahkan dataset jaringan jalan yang Anda buat ke peta dan katakan ya ketika ditanya apakah Anda ingin semua kelas fitur yang berpartisipasi dalam dataset.

Pada toolbar Analis Jaringan, klik Analis Jaringan dan pilih Area Layanan Baru. Klik pada alat Temukan dan gunakan tab Alamat untuk menemukan 709 Bull Street, Columbia, SC. Klik kanan pada alamat yang muncul dan pilih “Tambahkan sebagai Lokasi Jaringan”.

Klik tombol Tampilkan/Sembunyikan Jendela Analis Jaringan. Tombol di sebelah dropdown menampilkan dialog properti. Di tab Analysis Settings, reset Default Breaks menjadi 10 menit dan klik OK. Klik tombol Selesaikan pada bilah alat untuk menghitung area layanan jarak mengemudi sepuluh menit di sekitar Callcott.

Buat peta yang menunjukkan area layanan dan ekspor sebagai PDF.

Hitung Jalur Terpendek ke Irmo

Pada toolbar Analis Jaringan, klik Analis Jaringan dan pilih Rute Baru. Klik pada alat Temukan dan gunakan tab Alamat untuk menemukan 709 Bull Street, Columbia, SC lagi. Gunakan A.S. Address Finder Tele Atlas untuk pencari alamat. Klik kanan pada alamat yang muncul dan pilih “Tambahkan sebagai Lokasi Jaringan”. Ini harus Berhenti 1 di lapisan rute.

Gunakan alat Buat Lokasi Jaringan untuk membuat perhentian lain di persimpangan I-26 dan Lake Murray Blvd.

Klik hitung untuk menemukan jalur terpendek. Buka tabel atribut Routes dan tuliskan berapa detik yang diperlukan untuk pergi dari Callcott ke Lake Murray Blvd.

Buat lokasi jaringan lain di jembatan di atas Sungai Broad. Klik dan seret yang ini ke bawah sehingga berada di bawah penghalang, bukan berhenti. Perhatikan bagaimana jalur berubah. Buka lagi tabel atribut Routes dan tuliskan berapa detik yang diperlukan untuk pergi dari Callcott ke Lake Murray Blvd dan I-26 jika jembatan I-126 di atas sungai terhalang.

Hitung Jalur Terpendek Anda Sendiri

Pilih tiga lokasi, baik secara grafis atau menggunakan fitur Temukan. Jangan gunakan salah satu titik pun dari rute menuju Irmo, pilih tiga titik baru. Hitung perjalanan round robin di antara mereka sehingga rute berjalan dari asal, ke tujuan pertama, ke tujuan kedua, kembali ke asal. Buat peta yang menunjukkan perjalanan Anda dan beri label ketiga tujuan tersebut. Ekspor sebagai PDF

Apa yang Harus Diserahkan?

Buka Blackboard dan temukan Tugas #9 di bagian Tugas. Lampirkan peta area layanan 10 menit di sekitar Callcott dan peta rute round robin Anda. Sertakan informasi berikut:

  1. Berapa lama waktu yang dibutuhkan untuk terbang dari 709 Bull Street ke I-26 dan Lake Murray Blvd?
  2. Berapa lama waktu yang dibutuhkan untuk pergi dari 709 Bull Street ke I-26 dan Lake Murray Blvd jika jembatan I-126 di atas Broad River terhalang.

Bagaimana Anda Akan Dinilai

Bagian perutean tugas akan dinilai berdasarkan keakuratan jawaban Anda. Bagian area layanan akan dinilai berdasarkan akurasi dan estetika peta Anda. Bagian round robin akan dinilai berdasarkan kualitas peta Anda.

Tenggat waktu

Tugas ini dikumpulkan pada hari Selasa, 17 April, di awal kelas. Setiap tugas yang diserahkan setelah saat itu hanya akan diberikan setengah kredit.


Isi

AS-Interface dikembangkan selama akhir 1980-an dan awal 1990-an oleh kemitraan pengembangan dari 11 perusahaan yang sebagian besar dikenal karena penawaran perangkat penginderaan non-kontak industri mereka seperti sensor induktif, sensor fotolistrik, sensor kapasitif, dan sensor ultrasonik. Setelah pengembangan selesai, konsorsium diselesaikan dan organisasi anggota, AS-Internasional, didirikan. Sistem operasional pertama ditunjukkan pada pameran Hanover 1994.

Pada tahun 2018, langkah teknologi baru dipresentasikan di SPS IPC Drives di Nuremberg. Teknologi ini diberi nama ASi-5. ASi-5 dikembangkan oleh produsen teknologi otomasi terkenal.

AS-Interface (dari Actuator Sensor Interface) telah dikembangkan sebagai alternatif untuk kabel paralel konvensional dari sensor dan aktuator dan menawarkan keuntungan sebagai berikut:

  • Fleksibilitas
  • Penghematan biaya
  • Kesederhanaan
  • Pengurangan kesalahan instalasi
  • Didistribusikan secara luas
  • Peluang jaringan terbaik
  • Kesesuaian

Area aplikasi utama dari sistem ini adalah otomatisasi pabrik, teknologi proses, dan otomatisasi rumah.

AS-Interface adalah sistem master tunggal, ini berarti perangkat master bertukar data input dan output dengan semua perangkat yang dikonfigurasi. Media transmisi adalah kabel datar kuning dua kawat tanpa pelindung. Kabel digunakan untuk transmisi sinyal dan sekaligus untuk catu daya (30 V). Elektronik komunikasi dan peserta dengan kebutuhan daya rendah, seperti berkas cahaya, dapat diberi daya secara langsung. Konsumen dengan kebutuhan energi yang lebih tinggi, seperti terminal katup, dapat menggunakan kabel datar terpisah yang biasanya berwarna hitam untuk catu daya (30 V).

Sensor atau aktuator sering dihubungkan melalui apa yang disebut teknologi piercing. Isolasi kabel datar berprofil polaritas ditusuk dengan menggunakan dua mandrel yang menembus selama perakitan, ini membuat koneksi yang mudah dan sederhana dengan upaya perakitan yang berkurang. Sensor dan aktuator yang tidak memiliki koneksi AS-Interface dapat dihubungkan ke sistem melalui modul. Untuk modul dengan teknologi penetrasi, kabel datar AS-Interface harus digunakan.

Topologi jaringan AS-Interface adalah sewenang-wenang. Anda dapat membangun struktur garis, bintang, cincin, atau pohon.

Teknologi komunikasi dan transmisi ASI-3 Sunting

Sebuah telegram (bingkai pesan) terdiri dari 4-bit data pengguna. Master berkomunikasi dengan peserta dengan protokol transmisi serial. Setiap pelanggan diberi alamat oleh perangkat pengalamatan atau melalui master. Maksimal 31 (perangkat standar) atau 62 (perangkat lanjutan) node dapat dihubungkan. Setiap node dapat memiliki hingga empat input dan/atau empat output untuk aktuator atau sensor. Ini menyediakan hingga 124 (4 x 31 = 124) input dan 124 output pada jaringan perangkat standar (node ​​yang dialamatkan 1-31) atau 248 (4 x 62 = 248) input dan 248 output pada jaringan lanjutan (node ​​yang dialamatkan 1A - 31A dan 1B - 31B ). Komunikasi serial dimodulasi ke catu daya. Pengkodean Manchester digunakan untuk komunikasi. Untuk 31 peserta, siklusnya adalah 5 ms. Untuk menangani 62 peserta, diperlukan dua siklus. Topologi AS-Interface adalah sewenang-wenang, tetapi tanpa repeater atau extender, panjang kabel tidak boleh melebihi 100 m. Namun, karena resistor pemutus khusus (kombinasi beban resistif dan kapasitif), dimungkinkan untuk menambah panjang kabel maksimum hingga 300 m. Perangkat diagnostik atau master dengan diagnostik bawaan menyederhanakan pemecahan masalah jaringan. Budak yang gagal dapat dengan mudah diganti, master secara otomatis mengarahkan mereka. Safety at Work adalah konsep keselamatan fungsional yang digunakan dalam teknologi ASi-3. Ini berarti bahwa komponen yang berhubungan dengan keselamatan seperti aktuasi berhenti darurat, interlock pintu atau grid lampu dapat digunakan dalam jaringan AS-Interface. Ini adalah protokol transmisi berbeda yang dilapiskan ke protokol ASi biasa pada kabel yang sama dan memerlukan master keselamatan terpisah seperti perangkat Siemens ASIMon tempat perangkat keselamatan Anda dikonfigurasi. AS-Interface dapat memberikan dukungan keamanan hingga SIL (Safety Integrity Level) 3 menurut IEC 61508 serta Performance Level e (PL e) menurut EN ISO 13849-1.

Teknologi komunikasi dan transmisi ASI-5 Sunting

16 bit tersedia untuk transmisi siklik menggunakan ASi-5. Transmisi siklik hingga 32 byte per peserta dimungkinkan. Saluran parameter asiklik dengan hingga 256 byte juga tersedia untuk setiap perangkat. ASi-5 menyediakan satu set hingga 1536 input biner dan 1536 output biner per alamat Ethernet. Waktu siklus 1,2 ms dapat dicapai oleh sistem hingga 24 peserta. Waktu siklus yang cepat ini memungkinkan bidang aplikasi baru yang sebelumnya disediakan untuk sistem jaringan yang mahal. 96 peserta dapat dialamatkan dalam jaringan ASi-5. 96 perangkat ini kemudian memiliki waktu siklus 5 ms. Diagnostik komunikasi menjelaskan informasi tentang transmisi pesan antara node yang terhubung dan master. Sistem terus memantau kualitas transmisi pesan dari setiap perangkat yang terhubung. Diagnosis saluran tunggal ini tersedia dalam sistem. Saluran transmisi yang terganggu dialihkan secara otomatis. Diagnostik perangkat memberikan informasi tentang perangkat yang terhubung. Data diagnostik yang tersedia ditentukan oleh produsen perangkat. Data diagnostik dapat ditransmisikan melalui layanan asiklik dengan lebar data hingga 256 byte. Sistem ASi-5 terbuka untuk penggunaan antarmuka parameter seperti mis. IO-Link. Perangkat IO-Link dapat dikumpulkan secara efisien dari jarak jauh dan dapat diintegrasikan secara siklis hingga 32 byte. 16 bit aman tersedia untuk perangkat sakelar yang terkait dengan keselamatan, seperti penghentian darurat, tirai cahaya, sakelar pengaman, dan sejenisnya tersedia. Dimungkinkan untuk mencapai Tingkat Integritas Keselamatan (SIL)3 Tingkat Kinerja e menurut IEC 13849 untuk keselamatan fungsional. ASi-5 menggunakan metode komunikasi baru. Teknologi ASi-5 baru memungkinkan penggunaan komponen ASi-3 bersama-sama dengan komponen teknologi ASi-5 baru pada kabel umum. Jika perangkat ASi-3 akan digunakan bersama dengan komponen ASi-5, maka selain perangkat yang sesuai, diperlukan penggunaan master ASi-3 / ASi-5 baru. Sistem lama dapat dengan mudah ditingkatkan oleh perangkat baru dengan fungsi tambahan. Sistem baru dapat diinstal pada kabel menggunakan komponen ASi-3 yang telah terbukti dan perangkat ASi-5 baru.

AS-Interface dijelaskan dalam standar internasional IEC 62026-2: 2015. Standar lokal lainnya adalah: Eropa: EN 62026-2: 2015 Jepang: JIS C 82026-2 (2013) China: GB / T 18858.2 (2002) Korea : KS C IEC 62026-2 (2007)


Аленное олнение оманд ансе EC2

астоящего актического особия аете, ак ользовать AWS Systems Manager аленного олнения ансах Amazon EC2. Manajer Sistem едставляет обой ент авления, оторый озволяет олучать операционную аналитическую ормацию едоставляет озможность о омощью оманды Run, одной автоматизации Systems Manager, ожно остить адачи авления, еобходимость ользовать осты-бастионы, SSH ае.

ом ере енария ак емный администратор олжны обновить акеты ансах EC2. negara а, ожете ользовать Systems Manager аленного олнения оманд, апример обновления акетов, ансах EC2.

о епростой ации, ам еобходимо оздать оль Identity and Access Management (IAM), агента ансе, оторый обеспечивает Manajer Sistem,атем олнить екомендации о апуску окумента AWS-UpdateSSMAgent обновления агента Systems Manager онечном оге а оманду ое Systems.

AWS Systems Manager – о одукт овнем есплатного ользования ез ограничения о емени. анс EC2, оздаваемый амках обучения о ому особию, оступен овня есплатного ользования.

ойте онсоль авления AWS, обы е акрывать о ошаговое оводство. огда артовый ан агрузится, едите ользователя ароль, обы ачать аботу.

аботы ебным особием еобходим аккаунт AWS

AWS Systems Manager – о одукт овнем есплатного ользования ез ограничения о емени.


Gunakan raw_input() alih-alih input() :

input() sebenarnya mengevaluasi input sebagai kode Python. Saya sarankan untuk tidak pernah menggunakannya. raw_input() mengembalikan string kata demi kata yang dimasukkan oleh pengguna.

Input fungsi juga akan mengevaluasi data yang baru saja dibaca sebagai kode python, yang sebenarnya bukan yang Anda inginkan.

Pendekatan umum adalah memperlakukan input pengguna (dari sys.stdin ) seperti file lainnya. Mencoba

Jika Anda ingin mempersingkatnya, Anda dapat menggunakan raw_input yang sama dengan input tetapi mengabaikan evaluasi.

Kita dapat menggunakan fungsi raw_input() di Python 2 dan fungsi input() di Python 3. Secara default, fungsi input mengambil input dalam format string. Untuk tipe data lain, Anda harus memasukkan input pengguna.

Dalam Python 2 kami menggunakan fungsi raw_input() . Itu menunggu pengguna untuk mengetik beberapa input dan tekan kembali dan kita perlu menyimpan nilai dalam variabel dengan casting sebagai tipe data keinginan kita. Hati-hati saat menggunakan tipe casting

Dalam Python 3 kami menggunakan fungsi input() yang mengembalikan nilai input pengguna.

Jika Anda memasukkan string, int, float, eval, itu akan digunakan sebagai input string

Jika Anda memasukkan string untuk int cast ValueError: literal tidak valid untuk int() dengan basis 10:

Jika Anda memasukkan string untuk float cast ValueError: tidak dapat mengonversi string menjadi float

Jika Anda memasukkan string untuk eval cast NameError: name ' ' is notdefined Error tersebut juga berlaku untuk Python 2.


/Capture-CustomImage

Menangkap perubahan file tambahan berdasarkan file install.wim tertentu ke file baru, custom.wim untuk gambar WIMBoot. Anda tidak dapat menangkap direktori kosong. File yang diambil dikonversi ke file pointer. Custom.wim ditempatkan di folder yang sama di sebelah install.wim.

  • /Capture-CustomImage hanya menangkap file kustomisasi. Itu tidak dapat digunakan untuk menangkap file instalasi ke WIM baru.
  • Simpan file install.wim dan custom.wim bersama-sama. Jangan mengganti file custom.wim atau file install.wim.
  • Anda hanya dapat mengambil gambar kustom satu kali. Jangan hapus atau ambil kembali custom.wim setelah menangkap perubahan file tambahan.

Parameter Keterangan
/CaptureDir Menentukan direktori tempat gambar diterapkan dan disesuaikan.
/File Konfigurasi Menentukan lokasi file konfigurasi yang mencantumkan pengecualian untuk pengambilan gambar dan perintah kompres. Untuk informasi selengkapnya, lihat Daftar Konfigurasi DISM dan File WimScript.ini.
/Periksa Integritas Mendeteksi dan melacak kerusakan file .wim saat digunakan dengan operasi tangkap, lepas, ekspor, dan komit. /CheckIntegrity menghentikan operasi jika DISM mendeteksi bahwa file .wim rusak saat digunakan dengan operasi penerapan dan pemasangan.
/Memeriksa Memeriksa kesalahan dan duplikasi file.
[/KonfirmasiFileTepercaya Memvalidasi gambar untuk Desktop Tepercaya di Windows 10, Windows 8.1, atau Windows 8. Opsi ini hanya dapat dijalankan di komputer yang menjalankan setidaknya WinPE 4.0.


Kategori Tenaga Kerja CIO-SP3

Tingkat I (AA01) - Memberikan dukungan administratif yang didedikasikan khusus untuk kebutuhan tim proyek. Merencanakan dan menghasilkan korespondensi, laporan, proposal, memo, dan dokumentasi lainnya menggunakan komputer pribadi. Mengoperasikan perangkat lunak spreadsheet seperti Excel untuk menghasilkan dokumen jadi. Mengoreksi dokumen yang sudah selesai. Berikan dukungan penyalinan dan produksi sesuai kebutuhan. Pengalaman dan pendidikan yang sepadan.

Tingkat II (AA02) - Memberikan dukungan administratif yang didedikasikan khusus untuk kebutuhan tim proyek. Melakukan berbagai tugas administrasi dan administrasi termasuk, misalnya, mengetik, mengarsipkan, melacak catatan waktu, pengolah kata, dikte, dan komposisi korespondensi. Pengalaman dan pendidikan yang sepadan.

Tingkat I (AB01) - Menganalisis aplikasi bisnis fungsional dan spesifikasi desain untuk aktivitas fungsional. Menerjemahkan desain detail ke dalam sistem aplikasi. Uji, debug, dan sempurnakan aplikasi untuk menghasilkan produk yang dibutuhkan. Siapkan dokumentasi yang diperlukan, termasuk dokumentasi tingkat program dan tingkat pengguna. Tingkatkan aplikasi untuk meningkatkan kinerja dan menambah fungsionalitas. Memberikan arahan teknis kepada para insinyur untuk memastikan tenggat waktu program terpenuhi.

Tingkat II (AB02) - Menganalisis dan mempelajari persyaratan sistem yang kompleks. Rancang perangkat lunak dan subsistem untuk mendukung penggunaan kembali perangkat lunak dan analisis domain serta mengelola implementasinya. Kelola pengembangan dan dukungan perangkat lunak menggunakan spesifikasi formal, diagram aliran data, teknik desain lain yang diterima, dan alat Computer Aided Software Engineering (CASE). Perkirakan biaya dan jadwal pengembangan perangkat lunak. Tinjau program yang ada dan bantu dalam melakukan penyempurnaan, mengurangi waktu pengoperasian, dan meningkatkan teknik saat ini. Mengawasi manajemen konfigurasi perangkat lunak.

Tingkat I (AC01) - Membantu dengan analisis kebutuhan informasi. Bantuan dalam evaluasi masalah dengan alur kerja, organisasi, dan perencanaan dan membantu dalam pengembangan tindakan korektif yang tepat.

Tingkat II (AC02) - Berpartisipasi dalam desain perangkat lunak dan subsistem untuk mendukung penggunaan kembali dan analisis domain. Membantu Insinyur Aplikasi dan Programmer Aplikasi untuk menafsirkan persyaratan perangkat lunak dan spesifikasi desain ke kode, dan mengintegrasikan dan menguji komponen perangkat lunak.

Tingkat III (AC03) - Menganalisis aplikasi bisnis fungsional dan spesifikasi desain untuk area fungsional seperti keuangan, akuntansi, personalia, tenaga kerja, logistik, dan kontrak. Mengembangkan diagram blok dan diagram alur logika. Menerjemahkan desain rinci ke dalam perangkat lunak komputer. Uji, debug, dan perbaiki perangkat lunak komputer untuk menghasilkan produk yang dibutuhkan. Siapkan dokumentasi yang diperlukan, termasuk dokumentasi tingkat program dan tingkat pengguna. Tingkatkan perangkat lunak untuk mengurangi waktu pengoperasian atau meningkatkan efisiensi. Memberikan arahan teknis kepada programmer untuk memastikan tenggat waktu program terpenuhi. Pengalaman dalam desain sistem informasi, termasuk pemrograman aplikasi pada DBMS skala besar dan pengembangan perangkat lunak yang kompleks untuk memenuhi tujuan desain.

Menyediakan analisis dan desain sistem bisnis untuk berbagai aplikasi seperti: keuangan, akuntansi, sumber daya manusia, dan sistem perusahaan lainnya. Menangani skrip pengujian dan persyaratan layanan bekerja sama dengan pengguna akhir dalam pengembangan dan implementasi proyek. Analis harus memiliki pengetahuan tentang lingkungan basis data relasional, analisis terstruktur, pemodelan data, rekayasa informasi, pembuatan model matematika, pengambilan sampel, dan akuntansi biaya untuk merencanakan sistem. Menentukan input yang akan diakses oleh sistem, merancang langkah-langkah pemrosesan, dan memformat output untuk memenuhi kebutuhan pengguna. Siapkan analisis biaya-manfaat dan laba atas investasi untuk membantu manajemen memutuskan apakah penerapan sistem yang diusulkan akan layak secara finansial. Memiliki keterampilan komunikasi verbal dan tertulis yang sangat baik.

Mengkhususkan diri dalam penerapan statistik dan/atau teknologi komputer untuk studi biologi yang menerapkan penggunaan paket perangkat lunak statistik seperti SAS, BMDP, SPSS, atau PL/1.

Tingkat I (AF01) - Memberikan keahlian dalam proses bisnis dan analisis sistem, desain, peningkatan, dan upaya implementasi dan dalam menerjemahkan kebutuhan proses bisnis ke dalam persyaratan teknis. Memberikan keahlian dalam manajemen perubahan dan dukungan pelatihan. Menyediakan perencanaan organisasi dan strategis untuk berbagai lingkungan teknis dan fungsional. Memberikan keahlian dalam, namun tidak terbatas pada, Manajemen Konfigurasi, Perencanaan Strategis, Manajemen Pengetahuan, Analisis Bisnis, dan Analisis Teknis.

Tingkat II (AF02) - Membantu dalam menerapkan praktik terbaik umum untuk industri kepada pelanggan menggunakan basis pengetahuan untuk membuat model bisnis konseptual dan untuk mengidentifikasi masalah dan pertimbangan yang relevan dalam memilih paket perangkat lunak aplikasi. Menilai dasar operasional dan fungsional organisasi dan komponen organisasinya, dan membantu menentukan arah dan strategi untuk keterlibatan sambil memastikan kebutuhan organisasi ditangani. Area umum yang ditangani meliputi Sumber Daya Manusia, Keuangan, Pasokan, dan operasi. Mengidentifikasi kekurangan dan/atau kekurangan teknologi informasi yang mempengaruhi kemampuan area fungsional untuk mendukung/memenuhi tujuan organisasi. Mendukung pengembangan strategi area fungsional untuk peningkatan TI. Pengalaman dan pendidikan yang sepadan.

Tingkat III (AF03) - Membantu dalam menerapkan praktik terbaik umum untuk industri kepada pelanggan menggunakan basis pengetahuan untuk membuat model bisnis konseptual dan untuk mengidentifikasi masalah dan pertimbangan yang relevan dalam memilih paket perangkat lunak aplikasi. Menilai dasar operasional dan fungsional organisasi dan komponen organisasinya, dan membantu menentukan arah dan strategi untuk keterlibatan sambil memastikan kebutuhan organisasi ditangani. Area umum yang ditangani meliputi Sumber Daya Manusia, Keuangan, Pasokan, dan operasi. Mengidentifikasi kekurangan dan/atau kekurangan teknologi informasi yang mempengaruhi kemampuan area fungsional untuk mendukung/memenuhi tujuan organisasi. Hasilkan strategi area fungsional untuk operasi TI yang ditingkatkan dalam mode area lintas fungsi di seluruh organisasi. Berpartisipasi dalam sesi strategi akun, penilaian strategis, dan tinjauan desain untuk memvalidasi pendekatan perusahaan dan produk kerja terkait, seperti implementasi ERP yang mengoordinasikan penyelesaian masalah dan tugas yang sangat kompleks. Pengalaman dan pendidikan yang sepadan.

Tingkat I (AG01) - Menerapkan perbaikan proses, metodologi rekayasa ulang, dan metodologi dan prinsip terkait internet untuk melakukan proyek modernisasi proses. Membantu staf senior dengan transisi efektif dari organisasi atau tim proyek yang ada dalam mencapai tujuan organisasi atau kegiatan dan sasaran proyek melalui peningkatan penggunaan internet dan proses otomatis lainnya. Mendukung aktivitas dan pemodelan data, pengembangan metode bisnis modern, identifikasi praktik terbaik, serta membuat dan menilai pengukuran kinerja. Memberikan fasilitasi kelompok, wawancara, pelatihan, dan bentuk transfer pengetahuan tambahan. Pendidikan dan pengalaman yang sepadan.

Tingkat II (AG02) - Menerapkan perbaikan proses, metodologi rekayasa ulang, dan metodologi dan prinsip terkait internet untuk melakukan proyek modernisasi proses. Bertanggung jawab untuk transisi organisasi atau tim proyek yang ada dalam mencapai tujuan organisasi atau kegiatan dan sasaran proyek melalui peningkatan penggunaan internet dan proses otomatis lainnya. Mendukung aktivitas dan pemodelan data, pengembangan metode bisnis modern, identifikasi praktik terbaik, serta membuat dan menilai pengukuran kinerja. Memberikan fasilitasi kelompok, wawancara, pelatihan, dan bentuk transfer pengetahuan tambahan. Dapat memberikan pengawasan dan arahan harian kepada spesialis rekayasa ulang bisnis kontraktor dan arsitek web lainnya. Pendidikan dan pengalaman yang sepadan.

Tingkat III (AG03) - Mengelola penggunaan perbaikan proses, metodologi rekayasa ulang, dan metodologi dan prinsip terkait internet untuk melakukan proyek modernisasi proses. Bertanggung jawab untuk transisi organisasi atau tim proyek yang ada dalam mencapai tujuan organisasi atau kegiatan dan sasaran proyek melalui peningkatan penggunaan internet dan proses otomatis lainnya. Mendukung aktivitas dan pemodelan data, pengembangan metode bisnis modern, identifikasi praktik terbaik, serta membuat dan menilai pengukuran kinerja. Memberikan fasilitasi kelompok, wawancara, pelatihan, dan bentuk transfer pengetahuan tambahan. Koordinator utama antara pelanggan dan beberapa tim proyek untuk memastikan integrasi seluruh perusahaan dari upaya rekayasa ulang dan penerapan praktik terbaik termasuk praktik e-bisnis. Dapat memberikan pengawasan dan arahan harian kepada spesialis rekayasa ulang bisnis kontraktor dan arsitek web lainnya. Pendidikan dan pengalaman yang sepadan.

Bertanggung jawab untuk menentukan standar keamanan informasi perusahaan. Mengembangkan dan menerapkan standar dan prosedur keamanan informasi. Memberikan saran keamanan informasi taktis dan memeriksa konsekuensi dari teknologi baru. Memastikan bahwa semua sistem informasi berfungsi dan aman.

Menganalisis karakteristik perangkat keras komunikasi jaringan dan komputer dan merekomendasikan pengadaan, pemindahan, dan modifikasi peralatan. Tambah, hapus, dan ubah, sesuai kebutuhan, perangkat host, terminal, dan jaringan. Membantu dan berkoordinasi dengan spesialis jaringan komunikasi di bidang perangkat lunak komunikasi. Menganalisis dan menerapkan standar dan protokol komunikasi sesuai dengan persyaratan situs.

Mengevaluasi perangkat keras dan perangkat lunak komunikasi, memecahkan masalah jaringan lokal, metropolitan, dan area luas (LAN/MAN/WAN) dan masalah terkait jaringan lainnya memberikan keahlian teknis untuk kinerja dan konfigurasi jaringan. Melakukan administrasi LAN/MAN/WAN umum memberikan kepemimpinan teknis dalam integrasi dan pengujian jaringan terintegrasi komputer skala besar yang kompleks. Jadwalkan konversi dan cutover. Mengawasi pusat kendali jaringan. Mengawasi pemeliharaan sistem. Berkoordinasi dengan semua pengguna dan situs yang bertanggung jawab. Mengawasi staf.

Menganalisis karakteristik perangkat lunak komunikasi jaringan dan komputer dan merekomendasikan pengadaan, pemindahan, dan modifikasi perangkat lunak. Tambah, hapus, dan ubah sesuai kebutuhan, host, terminal, dan perangkat jaringan sesuai dengan kebutuhan/masalah perangkat lunak. Membantu dan berkoordinasi dengan spesialis jaringan komunikasi di bidang perangkat lunak komunikasi.

Menganalisis karakteristik jaringan (misalnya, lalu lintas, waktu koneksi, kecepatan transmisi, ukuran paket, dan throughput) dan merekomendasikan pengadaan, pemindahan, dan modifikasi komponen jaringan. Merancang dan mengoptimalkan topologi jaringan dan konfigurasi situs. Rencanakan instalasi, transisi, dan penghentian komponen dan kemampuan jaringan. Mengkoordinasikan persyaratan dengan pengguna dan pemasok.

Memelihara perpustakaan media (kaset, disket, CD-ROM, video, CD, kaset) yang digunakan untuk menyimpan informasi rekaman atau menyediakan cadangan untuk aplikasi pemrosesan data otomatis. Mengklasifikasikan, membuat katalog, dan menyimpan barang sesuai dengan sistem standar. Mengeluarkan media untuk diproses berdasarkan permintaan. Memelihara catatan barang yang diterima, disimpan, dikeluarkan, dan dikembalikan. Periksa media yang dikembalikan dari kerusakan atau keausan yang berlebihan untuk menentukan apakah media tersebut perlu diganti.

Bertindak sebagai konsultan senior dalam persyaratan klien yang kompleks atau kritis. Mengembangkan, memodifikasi, dan menerapkan pemodelan komputer dan aplikasi pemrograman untuk menganalisis dan memecahkan masalah matematika dan ilmiah yang mempengaruhi kinerja sistem dan program. Berpartisipasi dalam semua fase proyek ilmiah dan rekayasa seperti penelitian, desain, pengembangan, pengujian, pemodelan, simulasi, pelatihan, dan dokumentasi.

Tingkat I (AO01) - Menganalisis dan menentukan persyaratan keamanan untuk masalah Multilevel Security (MLS). Merancang, mengembangkan, merekayasa, dan mengimplementasikan solusi untuk persyaratan MLS. Kumpulkan dan atur informasi teknis tentang tujuan dan kebutuhan misi organisasi, produk keamanan yang ada, dan program yang sedang berlangsung di arena MLS. Melakukan analisis risiko yang juga mencakup penilaian risiko.

Tingkat II (AO02) - Menganalisis dan mendefinisikan persyaratan keamanan untuk masalah MLS. Merancang, mengembangkan, merekayasa, dan mengimplementasikan solusi untuk persyaratan MLS. Panduan upaya untuk mengumpulkan dan mengatur informasi teknis tentang tujuan dan kebutuhan misi organisasi, produk keamanan yang ada, dan program yang sedang berlangsung di arena MLS. Melakukan analisis risiko yang juga mencakup penilaian risiko. Mengembangkan standar keamanan.

Tingkat III (AO03) - Merancang, mengembangkan, merekayasa, dan mengimplementasikan solusi untuk persyaratan MLS. Lakukan analisis risiko kompleks yang juga mencakup penilaian risiko. Menetapkan dan memenuhi jaminan informasi dan persyaratan keamanan berdasarkan analisis permintaan pengguna, kebijakan, peraturan, dan sumber daya. Mendukung pelanggan di tingkat tertinggi dalam pengembangan dan penerapan doktrin dan kebijakan.Menerapkan pengetahuan untuk sistem pengguna umum pemerintah dan komersial, serta sistem tujuan khusus khusus yang memerlukan fitur dan prosedur keamanan khusus. Melakukan analisis, desain, dan pengembangan fitur keamanan untuk arsitektur sistem.

Tingkat I (AP01) - Menganalisis kebutuhan informasi. Mengevaluasi secara analitis dan sistematis masalah alur kerja, organisasi, dan perencanaan dan membantu Analis Sistem Komputer Senior dan Analis Sistem Komputer mengembangkan tindakan korektif yang tepat. Membantu mengembangkan rencana untuk sistem informasi otomatis dari awal proyek hingga kesimpulan. Mendefinisikan masalah, dan mengembangkan persyaratan sistem dan spesifikasi program, dari mana pemrogram menyiapkan diagram alur, program, dan pengujian yang terperinci. Di bawah pengawasan Analis Sistem Komputer Senior atau Analis Sistem Komputer, berkoordinasi erat dengan pemrogram untuk memastikan implementasi program dan spesifikasi sistem yang tepat. Mengembangkan, bersama dengan pengguna fungsional, solusi alternatif sistem.

Tingkat II (AP02) - Menganalisis dan mengembangkan perangkat lunak komputer yang memiliki berbagai kemampuan, termasuk berbagai fungsi rekayasa, bisnis, dan manajemen arsip. Mengembangkan rencana untuk sistem informasi otomatis dari awal proyek hingga kesimpulan. Menganalisis antarmuka pengguna, mempertahankan penyetelan kinerja perangkat keras dan perangkat lunak, menganalisis beban kerja dan penggunaan komputer, memelihara antarmuka dengan sistem luar, menganalisis waktu henti, dan menganalisis modifikasi sistem yang diusulkan, peningkatan, dan COTS baru. Menganalisis masalah dan informasi yang akan diolah. Mendefinisikan masalah, dan mengembangkan persyaratan sistem dan spesifikasi program, dari mana pemrogram menyiapkan diagram alur, program, dan pengujian yang terperinci. Berkoordinasi erat dengan programmer untuk memastikan implementasi yang tepat dari program dan spesifikasi sistem. Mengembangkan, bersama dengan pengguna fungsional, solusi alternatif sistem.

Tingkat III (AP03) - Memberikan arahan teknis dan administratif untuk personel yang melakukan tugas pengembangan perangkat lunak, termasuk peninjauan produk kerja untuk kebenaran, kepatuhan terhadap konsep desain dan standar pengguna, dan untuk kemajuan sesuai dengan jadwal. Berkoordinasi dengan Manajer Proyek dan/atau Program untuk memastikan solusi masalah dan kepuasan pengguna. Buat rekomendasi, jika diperlukan, untuk persetujuan instalasi sistem utama. Menyiapkan laporan status milestone dan penyampaian/presentasi konsep sistem kepada rekan kerja, bawahan, dan perwakilan pengguna akhir. Memberikan pengawasan dan arahan harian untuk mendukung staf.

Menyediakan perencanaan manajemen konfigurasi. Jelaskan ketentuan untuk identifikasi konfigurasi, kontrol perubahan, akuntansi status konfigurasi, dan audit konfigurasi. Mengatur proses perubahan sehingga hanya perubahan yang disetujui dan divalidasi yang dimasukkan ke dalam dokumen produk dan perangkat lunak terkait.

Tingkat I (AR01) - Lakukan analisis ekonomi fungsional untuk mengevaluasi biaya cara alternatif untuk mencapai tujuan fungsional, menganalisis biaya investasi, manfaat, dan risiko sebagai perubahan bersih pada biaya dasar fungsional, dan biaya menjalankan bisnis sekarang dan di masa depan, memastikan bahwa lintas -fungsional, keamanan, dan masalah integrasi lainnya ditangani. Pendidikan dan pelatihan yang sepadan.

Tingkat II (AR02) - Lakukan analisis ekonomi fungsional yang kompleks untuk mengevaluasi biaya cara alternatif untuk mencapai tujuan fungsional, menganalisis biaya investasi, manfaat, dan risiko sebagai perubahan bersih pada biaya dasar fungsional, dan biaya menjalankan bisnis sekarang dan di masa depan, memastikan bahwa lintas-fungsional, keamanan, dan masalah integrasi lainnya ditangani. Pendidikan dan pelatihan yang sepadan.

Lakukan entri data melalui terminal data on-line, key-to-tape, key-to-disk, atau perangkat serupa. Verifikasi data yang dimasukkan, jika ada.

Memberikan dukungan untuk merencanakan, mengoordinasikan, dan mengimplementasikan keamanan informasi organisasi. Memberikan dukungan untuk memfasilitasi dan membantu lembaga mengidentifikasi infrastruktur keamanan mereka saat ini dan menentukan program masa depan, desain dan implementasi firewall dan masalah keamanan terkait lainnya pada LAN/WAN. Pengetahuan tentang beberapa area berikut ini diperlukan: pemahaman tentang praktik dan prosedur keamanan bisnis, pengetahuan tentang alat keamanan saat ini, perangkat keras/perangkat lunak yang tersedia, firewall, dan implementasinya, protokol komunikasi yang berbeda, teknik enkripsi, dan alat, keakraban dengan produk komersial (mis. - Sistem Nama Domain , teknologi enkripsi kunci publik, Smartcard, Cyberguard, TimeStep), dan teknologi Internet dan perdagangan elektronik saat ini.

Memberikan dukungan teknis dalam evaluasi nama objek utama, elemen data, dan objek lainnya. Evaluasi objek yang diusulkan dan atributnya. Pastikan definisi objek yang diusulkan jelas, ringkas, benar secara teknis, dan mewakili konsep tunggal. Pastikan bahwa nilai atribut objek dan domain akurat dan benar. Pastikan bahwa objek yang diusulkan konsisten dengan model data dan proses.

Menganalisis persyaratan database proyek yang ditugaskan. Menganalisis dan menentukan kebutuhan dan elemen informasi, hubungan dan atribut basis data, manipulasi yang diusulkan, aliran data dan persyaratan penyimpanan, serta keluaran data dan kemampuan pelaporan. Menerapkan pengetahuan tentang sistem manajemen basis data untuk mengoordinasikan pemeliharaan dan perubahan pada basis data. Menguji dan mengimplementasikan perubahan atau desain database baru. Tulis deskripsi database logis dan fisik, termasuk lokasi, ruang, metode akses, dan persyaratan keamanan. Memberikan arahan kepada pemrogram dan analis yang diperlukan untuk mempengaruhi perubahan pada sistem manajemen basis data. Memberikan jawaban atas pertanyaan basis data. Pengetahuan dan kemampuan untuk memantau database dan untuk menganalisis dan mengatur data dan menerapkan desain dan program teknologi baru.

Tingkat I (AW01) – Memberikan dukungan administratif yang secara khusus didedikasikan untuk persyaratan tim proyek. Melakukan entri data, penelitian data kueri, dan aktivitas pembuatan laporan. Pengetahuan tentang lingkungan database relasional.

Tingkat II (AW02) – Memberikan keahlian yang sangat teknis dalam penggunaan DBMS. Mengevaluasi dan merekomendasikan produk DBMS yang tersedia untuk mendukung persyaratan pengguna yang divalidasi. Tentukan organisasi file, metode pengindeksan, dan prosedur keamanan untuk aplikasi pengguna tertentu. Menguji dan membantu implementasi perubahan atau desain database baru. Memantau penggunaan dan statistik basis data. Pengetahuan tentang lingkungan database relasional.

Tingkat III (AW03) – Mengelola pengembangan proyek basis data. Merencanakan dan menganggarkan staf dan sumber daya basis data. Bila perlu, realokasi sumber daya untuk memaksimalkan manfaat. Menyiapkan dan menyampaikan presentasi tentang konsep DBMS. Memberikan pengawasan dan arahan harian untuk mendukung staf. Pengetahuan yang luas tentang lingkungan database relasional.

Deskripsi ini memiliki cakupan yang serupa. Perbedaannya adalah jenis pendidikan dan pengalaman yang dibutuhkan untuk proyek atau kompleksitas tugas.

Tingkat I (AX01) - Mengevaluasi dan merekomendasikan produk DBMS yang tersedia untuk memenuhi kebutuhan pengguna. Menentukan organisasi file, metode pengindeksan, dan prosedur keamanan untuk aplikasi pengguna tertentu. Pengalaman dan pendidikan yang sepadan.

Tingkat II (AX02) - Mengevaluasi dan merekomendasikan produk DBMS yang tersedia untuk memenuhi kebutuhan pengguna. Menentukan organisasi file, metode pengindeksan, dan prosedur keamanan untuk aplikasi pengguna tertentu. Pengalaman dan pendidikan yang sepadan.

Tingkat III (AX03) - Mengevaluasi dan merekomendasikan produk DBMS yang tersedia untuk memenuhi kebutuhan pengguna. Menentukan organisasi file, metode pengindeksan, dan prosedur keamanan untuk aplikasi pengguna tertentu. Pengalaman dan pendidikan yang sepadan.

Mengkoordinasikan fungsi teknis administrasi data untuk pengembangan dan pemeliharaan data warehouse. Memfasilitasi kontrol perubahan, manajemen masalah, dan komunikasi antara arsitek data, programmer, analis, dan insinyur. Menetapkan dan menegakkan proses untuk memastikan infrastruktur gudang data yang konsisten, terkelola dengan baik, dan terintegrasi dengan baik.

Merancang, mengimplementasikan, dan mendukung pergudangan data. Menerapkan aturan bisnis melalui prosedur tersimpan, middleware, atau teknologi lainnya. Tentukan antarmuka pengguna dan spesifikasi fungsional.

Memberikan dukungan produk dan pemeliharaan gudang data. Melakukan desain dan konstruksi gudang data. Menyiapkan/menerapkan metode verifikasi dan pengujian data untuk gudang data.

Pengalaman sebelumnya dalam pemulihan bisnis atau perencanaan pemulihan bencana diperlukan. Pengetahuan umum tentang proses bisnis, struktur manajemen, dan program/platform teknologi lebih disukai. Keterampilan komunikasi verbal dan tertulis yang kuat diinginkan. Memberikan dukungan dalam pengembangan badan pemerintah, manajemen darurat dan rencana pemulihan bisnis, menjalankan fungsi yang berkaitan dengan penilaian risiko bisnis lembaga, meninjau dan mengembangkan strategi pemulihan bisnis, merancang prosedur untuk mengidentifikasi kegagalan dan menerapkan rencana kontinjensi, membuat prosedur respons, dan mengidentifikasi saluran komunikasi, berkomunikasi dengan berbagai respons. tim selama pengujian dan pelaksanaan prosedur pemulihan yang sebenarnya. Mendukung desain, pengembangan, instalasi, implementasi, dan administrasi solusi pencadangan. Buat rekomendasi kepada komunitas pengguna dan grup operasi tentang peningkatan sistem.

Tingkat I (BC01) - Melacak dan memelihara lokasi catatan menggunakan sistem pelacakan berbasis komputer pribadi. Biasanya memindai kotak berkode batang dan lokasinya, memperbarui sistem pelacakan sesuai kebutuhan, mengarsipkan catatan, mengirim dan menerima catatan, mengoordinasikan pengambilan, penyimpanan, dan pengiriman catatan, melakukan pencarian catatan seperti yang diminta oleh klien, memelihara log pada penerimaan dan pengiriman arsip, memusnahkan dan mengarsipkan dokumen, serta menyiapkan inventaris arsip secara berkala. Pekerjaan biasanya membutuhkan mengangkat kotak dengan berat sedang sepanjang hari. Pengalaman dan pendidikan yang sepadan.

Tingkat II (BC02) - Melacak dan memelihara lokasi catatan menggunakan sistem pelacakan berbasis komputer pribadi. Biasanya memindai kotak berkode batang dan lokasinya, memperbarui sistem pelacakan sesuai kebutuhan, membuat cadangan basis data setiap hari, mengarsipkan catatan, mengirim dan menerima catatan, mengoordinasikan pengambilan, penyimpanan, dan pengiriman catatan, memantau pergerakan catatan melalui semua tugas dari penerimaan awal sampai pemusnahan akhir atau pengarsipan, melakukan pencarian arsip seperti yang diminta oleh klien, memelihara catatan penerimaan dan pengiriman arsip, memusnahkan dan mengarsipkan dokumen, dan menyiapkan inventaris arsip secara berkala. Memprioritaskan berbagai tugas, menafsirkan instruksi spesifik, dan menerapkan teknik pemecahan masalah yang kreatif dalam berbagai situasi. Pekerjaan biasanya membutuhkan mengangkat kotak dengan berat sedang sepanjang hari. Pengalaman dan pendidikan yang sepadan.

Tingkat III (BC03) - Melacak dan memelihara lokasi catatan menggunakan sistem pelacakan berbasis komputer pribadi. Biasanya memindai kotak berkode batang dan lokasinya, memperbarui sistem pelacakan sesuai kebutuhan, membuat cadangan basis data setiap hari, mengarsipkan catatan, mengirim dan menerima catatan, mengoordinasikan pengambilan, penyimpanan, dan pengiriman catatan, memantau pergerakan catatan melalui semua tugas dari penerimaan awal sampai pemusnahan akhir atau pengarsipan, melakukan pencarian arsip seperti yang diminta oleh klien, memelihara catatan penerimaan dan pengiriman arsip, memusnahkan dan mengarsipkan dokumen, dan menyiapkan inventaris arsip secara berkala. Pekerjaan biasanya membutuhkan mengangkat kotak dengan berat sedang sepanjang hari. Memprioritaskan berbagai tugas, menafsirkan instruksi spesifik, dan menerapkan teknik pemecahan masalah yang kreatif dalam berbagai situasi. Dapat mengawasi staf pusat dokumen lainnya. Pengalaman dan pendidikan yang sepadan.

Tingkat I (BD01) - Mengedit, mengetik, dan menyiapkan memo yang bersifat teknis dan/atau manajerial. Memelihara catatan yang berkaitan dengan pekerjaan yang sedang berlangsung, rapat, dll. Mempersiapkan komunikasi khusus, memelihara catatan tentang komunikasi yang dikirim dan diterima, mengatur dan mencatat pengiriman catatan khusus. Dokumentasi akan sering melibatkan diagram alir, gambar konfigurasi, diagram alir sistem fungsional, grafik, dll. Pengetahuan tentang penggunaan perangkat lunak pengolah kata. Pengalaman dan pendidikan yang sepadan.

Tingkat II (BD02) - Mengedit, mengetik, dan menyiapkan memo yang bersifat teknis dan/atau manajerial. Memelihara catatan yang berkaitan dengan pekerjaan yang sedang berlangsung, rapat, dll. Mempersiapkan komunikasi khusus, memelihara catatan tentang komunikasi yang dikirim dan diterima, mengatur dan mencatat pengiriman catatan khusus. Dokumentasi akan sering melibatkan diagram alir, gambar konfigurasi, diagram alir sistem fungsional, grafik, dll. Pengetahuan tentang penggunaan perangkat lunak pengolah kata dan penggunaan fitur perangkat lunak canggih seperti lembar gaya dan makro. Pengalaman dan pendidikan yang sepadan.

Mengoperasikan satu atau lebih mesin fotokopi kantor untuk membuat salinan dokumen seperti surat, laporan, arahan, manual, artikel dan buletin. Mengoperasikan mesin penjilidan kecil. Melakukan tugas administrasi yang terkait dengan permintaan untuk layanan pencetakan dan fotografi. Menyiapkan lembar perakitan dan permintaan pencetakan dengan spesifikasi untuk pencetakan dan penjilidan. Lacak pekerjaan dan antar dan ambil pekerjaan. Lakukan perbaikan kecil dan pemeliharaan preventif. Menjaga inventaris persediaan dan suku cadang yang dibutuhkan untuk peralatan reproduksi. Mengkoordinasikan perbaikan dengan vendor. Pengalaman yang ditunjukkan dalam mengoperasikan mesin fotokopi berkecepatan tinggi termasuk kemampuan untuk mengoordinasikan tugas dan menjaga akuntabilitas untuk fungsi proyek yang vital.

Menganalisis, merancang, dan mengembangkan spesifikasi untuk peningkatan dan ekstensi dengan antarmuka dan peta aplikasi Electronic Data Interchange (EDI). Mengkoordinasikan pengujian EDI dan inisiatif implementasi mitra dagang. Memberikan dukungan untuk analisis, desain, dan operasi basis data EDI. Membangun dan memelihara komunikasi dalam organisasi dan dengan mitra. Melakukan dan mengelola evaluasi produk. Menyediakan instalasi produk, konfigurasi, dan pelatihan. Melakukan pemeliharaan sistem untuk memperbarui catatan, spesifikasi, dan prosedur operasi sistem mitra. Menjaga aktivitas transaksi rekening EDI.

Mendukung fasilitator pertemuan atau Pemodel Data dalam mempersiapkan dan melaksanakan pertemuan, dan dalam kegiatan tindak lanjut pertemuan. Memanipulasi perangkat lunak rapat elektronik online, seperti GroupSystems V, untuk sesi Rekayasa Ulang Bisnis atau Peningkatan Proses. Katalog, pertahankan, dan distribusikan file data sesi pelanggan.

Menyesuaikan kebutuhan dan proses bisnis fungsional dengan solusi teknis berdasarkan rangkaian solusi aplikasi perusahaan yang komprehensif. Proses perencanaan dan manajemen sumber daya perusahaan, termasuk tetapi tidak terbatas pada: manajemen pengetahuan, analisis investasi, pergudangan data, e-niaga, analisis laba atas investasi, analisis sumber daya manusia, manajemen material dan logistik, manajemen rantai pasokan, pengadaan, pemesanan, manufaktur, keputusan dukungan, dan penyebaran informasi.

Membantu anggota kelompok dari tim yang dibentuk dalam mengembangkan spesifikasi dan fungsionalitas sistem informasi untuk mengkomunikasikan ide, informasi, dan pendapat mereka secara lebih efektif. Kelola rapat dan lokakarya tim. Jaga agar tim tetap fokus pada subjek yang ada untuk mencapai tujuan. Memastikan diskusi dibawa ke kesimpulan.

Biasanya menentukan kelayakan otomatisasi praktik bisnis keuangan pemerintah. Mendukung definisi praktik bisnis keuangan pemerintah dan menggabungkan proses ke dalam solusi otomatis. Membantu dalam menerapkan prinsip-prinsip akuntansi dan pemrosesan data yang baik. Mengintegrasikan praktik bisnis keuangan pemerintah. Mengidentifikasi potensi masalah dan solusi melalui analisis dan merekomendasikan solusi. Bekerja dengan spesialis fungsional, vendor, dan pelanggan untuk mengotomatisasi persyaratan secara efektif. Terapkan aplikasi, sambil mengikuti prinsip dan praktik akuntansi yang ditetapkan.

Tingkat I (BK01) - Menganalisis kebutuhan pengguna untuk menentukan kebutuhan fungsional dan lintas fungsi. Lakukan alokasi fungsional untuk mengidentifikasi tugas-tugas yang diperlukan dan keterkaitannya. Identifikasi sumber daya yang diperlukan untuk setiap tugas.

Tingkat II (BK02) - Menganalisis kebutuhan pengguna untuk menentukan kebutuhan fungsional dan lintas fungsi. Lakukan alokasi fungsional untuk mengidentifikasi tugas-tugas yang diperlukan dan keterkaitannya. Identifikasi sumber daya yang diperlukan untuk setiap tugas. Memberikan pengawasan dan arahan harian untuk mendukung staf.

Tingkat I (BL01) - Melakukan tugas-tugas sederhana yang berulang seperti mengarsipkan dokumen yang telah dikodekan sebelumnya dalam file kronologis atau mengoperasikan peralatan kantor, misalnya, fotokopi, mesin alamat atau surat, pembuatan film mikro, dan pencitraan elektronik. Biasanya membutuhkan perhatian terhadap detail dalam melakukan semua tugas terkait dokumen. Pendidikan dan pengalaman yang sepadan.

Tingkat II (BL02) - Lakukan langkah-langkah klerikal berulang yang dilakukan dalam urutan yang ditentukan atau sedikit bervariasi, seperti pengkodean dan pengarsipan dokumen dalam file alfabet yang luas, posting sederhana ke akun individu, membuka surat, menjalankan surat melalui mesin pengukur, dan menghitung dan memposting biaya ke akun departemen. Mungkin memiliki tanggung jawab untuk menyiapkan berbagai dokumen untuk pembuatan film mikro dan pencitraan elektronik menggunakan pedoman tertulis. Pekerjaan membutuhkan perhatian terhadap detail dalam melakukan semua tugas terkait dokumen. Pendidikan dan pengalaman yang sepadan.

Tingkat III (BL03) - Melakukan tugas-tugas yang memerlukan pemilihan metode yang tepat dari berbagai prosedur yang mungkin memerlukan interpretasi dan/atau adaptasi pedoman. Langkah-langkah klerikal sering bervariasi dalam jenis atau urutan, tergantung pada tugasnya. Masalah yang dikenali dirujuk ke orang lain. Seringkali diperlukan untuk membantu staf yang kurang berpengalaman dalam pelaksanaan prosedur kantor. Pekerjaan membutuhkan perhatian terhadap detail dalam melakukan semua tugas terkait dokumen. Pendidikan dan pengalaman yang sepadan.

Mengembangkan, memelihara, dan memperbarui basis data Sistem Informasi Geografis (GIS) memperoleh data dari sumber kota, negara bagian, federal dan swasta, menerima dan meninjau peta, catatan persil tanah, dan dokumen teknik. Mengidentifikasi informasi GIS terkait dan mengubah data ke dalam format GIS yang tepat. Pastikan akurasi dan kelengkapan memasukkan data ke dalam database dan memperbarui lapisan dan database GIS yang penting. Buat berbagai peta dan dokumen terkait GIS. Memberikan keahlian dalam produk perangkat keras dan perangkat lunak GIS. Memberikan dukungan teknis kepada pengguna GIS.

Memberikan keahlian khusus dalam desain dan tata letak antarmuka pengguna grafis, khususnya, tata letak layar dan fungsionalitas untuk aplikasi client-server (misalnya layar presentasi Microsoft Windows).Melakukan studi, pengujian, dan evaluasi prototipe layar untuk fungsionalitas, kemudahan penggunaan, efisiensi, dan akurasi.

Mengkonseptualisasikan, merancang, dan mengembangkan berbagai macam bahan informasi (teknis, promosi, informasional), seperti formulir, label, brosur, handout rapat dan konferensi, slide, poster, dan alat bantu presentasi lainnya. Rancang visual lain seperti logo, kepala tiang, dan ilustrasi untuk artikel dalam manual teknis, jurnal kesehatan, dan publikasi lainnya menggunakan penerbitan desktop tingkat lanjut, tata letak halaman, dan/atau perangkat lunak penyusunan huruf untuk merancang dan mengembangkan komposisi teks dan grafik berkualifikasi tinggi yang mengkomunikasikan teknis kompleks informasi. Kembangkan sistem untuk penjadwalan dan pelacakan permintaan untuk grafik/karya seni untuk memastikan penyelesaian semua produk kerja secara tepat waktu dan efisien.

Mengembangkan gambar teknik, menggunakan paket gambar berbasis komputer seperti Aptitude. Kembangkan gambar teknik untuk rencana lokasi, interkoneksi listrik, dan rencana mekanis untuk perangkat keras khusus.

Tingkat I (BQ01) - Melakukan survei situs menilai dan mendokumentasikan konfigurasi jaringan situs saat ini dan persyaratan pengguna. Merancang dan mengoptimalkan topologi jaringan. Menganalisis persyaratan yang ada dan menyiapkan spesifikasi untuk akuisisi perangkat keras. Menyiapkan rencana teknik dan Paket Desain Teknis instalasi situs. Mengembangkan jadwal instalasi perangkat keras. Siapkan gambar yang mendokumentasikan perubahan konfigurasi di setiap lokasi. Siapkan instalasi situs dan laporan pengujian. Konfigurasikan komputer, perangkat komunikasi, dan peralatan periferal. Instal perangkat keras jaringan. Latih personel situs dalam penggunaan perangkat keras yang benar. Bangun kabel interkoneksi khusus.

Tingkat II (BQ02) - Mengatur dan mengarahkan instalasi perangkat keras pada survei lokasi. Menilai dan mendokumentasikan konfigurasi jaringan situs saat ini dan persyaratan pengguna. Merancang dan mengoptimalkan topologi jaringan. Menganalisis dan mengembangkan persyaratan perangkat keras baru dan menyiapkan spesifikasi untuk akuisisi perangkat keras. Persiapan langsung dan memimpin dari rencana rekayasa dan instalasi situs Paket Desain Teknis. Mengembangkan jadwal instalasi perangkat keras. Mobilisasi tim instalasi. Persiapan langsung dan memimpin gambar yang mendokumentasikan perubahan konfigurasi di setiap situs. Siapkan instalasi situs dan laporan pengujian. Mengkoordinasikan operasi pasca instalasi dan dukungan pemeliharaan.

Tinjau sistem komputer dalam hal kemampuan mesin dan antarmuka manusia-mesin. Menyiapkan laporan dan studi tentang perangkat keras. Menyiapkan persyaratan fungsional dan spesifikasi untuk akuisisi perangkat keras. Pastikan bahwa masalah telah diidentifikasi dengan benar dan solusi akan memenuhi kebutuhan pengguna.

Memberikan pengawasan dan arahan harian kepada staf yang bertanggung jawab atas telepon dan dukungan langsung kepada pengguna di bidang email, direktori, sistem operasi komputer, aplikasi desktop untuk semua jenis sistem komputer, dan aplikasi yang dikembangkan atau digunakan berdasarkan kontrak ini . Menjadi titik kontak pertama untuk pemecahan masalah perangkat keras/lunak, semua jenis sistem komputer (PC dan Mac), dan masalah printer.

Menyediakan telepon, email, web, dan dukungan langsung kepada pengguna di bidang email, direktori, sistem operasi komputer, aplikasi desktop untuk semua jenis sistem komputer, dan aplikasi yang dikembangkan atau digunakan berdasarkan kontrak ini. Menjadi titik kontak pertama untuk pemecahan masalah perangkat keras/lunak, semua jenis sistem komputer (PC dan Mac), dan masalah printer.

Tingkat I (BU01) - Mendigitalkan gambar ke dalam database untuk pelestarian dan peningkatan oleh perangkat lunak pencitraan. Gunakan perangkat keras dan perangkat lunak untuk menyempurnakan gambar digital asli untuk warna dan resolusi serta melakukan jaminan kualitas. Menyimpan file gambar digital di berbagai media digital. Memelihara catatan alur kerja, pembuatan gambar, dan penyimpanan file digital.

Tingkat II (BU02) - Mendigitalkan gambar ke dalam database untuk pelestarian dan peningkatan oleh perangkat lunak pencitraan. Gunakan perangkat keras dan perangkat lunak untuk menyempurnakan gambar digital asli untuk warna dan resolusi serta melakukan jaminan kualitas. Menyimpan file gambar digital di berbagai media digital. Memelihara catatan alur kerja, pembuatan gambar, dan penyimpanan file digital. Mengembangkan prosedur untuk pemrograman dan eksekusi perangkat lunak untuk memanipulasi gambar digital.

Tingkat III (BU03) - Mendigitalkan gambar ke dalam database untuk pelestarian dan peningkatan oleh perangkat lunak pencitraan. Gunakan perangkat keras dan perangkat lunak untuk menyempurnakan gambar digital asli untuk warna dan resolusi serta melakukan jaminan kualitas. Menyimpan file gambar digital di berbagai media digital. Memelihara catatan alur kerja, pembuatan gambar, dan penyimpanan file digital. Mengembangkan prosedur untuk pemrograman dan eksekusi perangkat lunak untuk memanipulasi gambar digital. Memberikan solusi yang sangat teknis dan khusus untuk masalah pencitraan yang kompleks. Melakukan analisis, studi, dan laporan terkait pencitraan.

Memberikan keahlian tingkat tinggi dalam penerapan teknologi ke bidang yang diminati oleh organisasi kesehatan pemerintah termasuk statistik Informatika Medis atau Informatika Kesehatan Masyarakat, bio-statistik, alat khusus matematika dan sumber daya data yang relevan dengan misi kesehatan federal termasuk SAS, Epi Info, dll. menerapkan data dan metode kuantitatif yang baik untuk mendukung penyebaran sumber daya untuk surveilans kesehatan masyarakat besar-besaran, kampanye pencegahan dan intervensi dan kegiatan kesehatan terkait. Memberikan keahlian di berbagai bidang TI yang diterapkan pada kesehatan masyarakat, termasuk teknologi pengambilan informasi, ilmu keputusan, teknologi web, penambangan data, sistem pakar, jaringan, ilmu kesehatan masyarakat, dan pendidikan. Memberikan keahlian dalam integrasi berbagai sistem informasi kesehatan masyarakat yang heterogen dan database berbagi dan penyebaran informasi kesehatan masyarakat dalam interaksi teknologi keamanan informasi dan persyaratan privasi dan kerahasiaan data kesehatan masyarakat dalam penerapan peraturan HIPAA untuk penggunaan teknologi informasi di bidang kesehatan masyarakat di bidang baru yang menarik bagi kesehatan masyarakat termasuk informasi yang tersedia dari organisasi perawatan terkelola dengan kegiatan pengembangan standar nasional dan/atau internasional seperti HL7, X12, W3C dan dalam penerapan teknologi visualisasi ilmiah canggih untuk ilmu dan praktik kesehatan masyarakat.

Tingkat I (BW01) - Menerapkan praktik peningkatan proses bisnis untuk merekayasa ulang metodologi/prinsip dan proyek modernisasi proses bisnis. Menerapkan, sebagaimana mestinya, pemodelan aktivitas dan data, analisis aliran transaksi, pengendalian internal dan analisis risiko, serta metode bisnis modern dan teknik pengukuran kinerja. Membantu dalam menetapkan standar untuk prosedur sistem informasi. Mengembangkan dan menerapkan model informasi di seluruh organisasi untuk digunakan dalam merancang dan membangun perangkat lunak bersama dan sistem manajemen basis data dan gudang data yang terintegrasi. Bangun peluang peningkatan bisnis yang logis dan masuk akal yang konsisten dengan prinsip panduan Manajemen Informasi perusahaan, penghematan biaya, dan tujuan arsitektur sistem terbuka.

Tingkat II (BW02) - Menerapkan serangkaian disiplin ilmu di seluruh perusahaan untuk perencanaan, analisis, desain, dan konstruksi sistem informasi di seluruh perusahaan atau di seluruh sektor utama perusahaan. Mengembangkan teknik dan metodologi analitis dan komputasi untuk solusi masalah. Lakukan perencanaan sistem strategis perusahaan yang luas, perencanaan informasi bisnis, bisnis dan analisis. Melakukan proses dan pemodelan data untuk mendukung upaya perencanaan dan analisis menggunakan alat manual dan otomatis seperti alat Rekayasa Perangkat Lunak Berbantuan Komputer Terintegrasi. Terapkan disiplin rekayasa balik dan rekayasa ulang untuk mengembangkan dokumen strategis dan perencanaan migrasi. Memberikan bimbingan teknis dalam teknik rekayasa perangkat lunak dan alat pendukung otomatis. Memberikan pengawasan dan arahan harian kepada staf.

Memastikan penyelesaian masalah dan kepuasan pelanggan untuk pesanan tugas individu. Melakukan upaya teknis dan administratif untuk tugas, termasuk peninjauan produk kerja untuk kebenaran, kepatuhan dengan standar yang diterima industri, persyaratan legislatif dan peraturan pemerintah federal dan standar pengguna yang ditentukan dalam perintah tugas. Mengembangkan persyaratan produk/layanan TI (termasuk spesifikasi, studi kelayakan, analisis kebutuhan, dll.) dari awal hingga kesimpulan pada proyek sederhana hingga kompleks.

Memberikan dukungan untuk mengoordinasikan, mengembangkan, dan memberikan pelatihan terkait komputer kepada komunitas pengguna. Berikan dukungan tingkat kedua dan koordinasikan pelatihan dengan meja bantuan. Menyediakan standar, layanan, dan panduan tentang program pelatihan terkait TI yang dirancang untuk memungkinkan personel instansi pemerintah menggunakan teknologi dan sistem informasi secara lebih produktif. Layanan mencakup pengembangan, penyampaian, dan/atau koordinasi kursus dan materi pelatihan yang membahas kebutuhan lembaga tertentu. Memiliki pengetahuan menyeluruh tentang perangkat keras dan perangkat lunak yang sesuai (mis. - PC, Microsoft (MS) Windows, MS Office, dan aplikasi seperti dari SAP dan Peoplesoft). Memahami fungsi komputer dan terminologi teknis terkait dan bagaimana penerapannya dalam situasi bisnis sehari-hari. Memiliki keterampilan interpersonal yang luar biasa dan keterampilan komunikasi lisan dan tertulis yang unggul.

Membantu dalam menafsirkan dan menerapkan inisiatif kebijakan publik TI. Dukungan tipikal mencakup bantuan dengan pengembangan strategi jangka panjang, melacak undang-undang, dan membuat rekomendasi kebijakan. Sering bertemu dengan klien setiap hari untuk menyampaikan kemajuan dan menetapkan prioritas.

Menyediakan perencanaan strategis proyek besar atau segmen signifikan dari porsi perencanaan strategis dari proyek kompleks besar. Berikan pendekatan menyeluruh untuk memperjelas pernyataan misi sehingga dapat digunakan sebagai batu loncatan dalam membayangkan masa depan yang diinginkan. Membantu dalam mengembangkan pernyataan misi dan visi, penggambaran tujuan selanjutnya, memberikan panduan untuk membangun rencana operasional dan menentukan hasil yang terukur untuk memasukkan upaya perencanaan pengeluaran modal dalam proses perencanaan strategis yang terkonsolidasi dan memprioritaskan inisiatif tersebut. Membantu persiapan dokumentasi perencanaan strategis utama, termasuk Office of Management and Budget (OMB) Form 300.

Membantu dalam desain, pengembangan, dan implementasi strategi Manajemen Pengetahuan (KM). Terapkan keahlian dalam alat KM dan terapkan manajemen informasi serta strategi dan pengalaman manajemen konten. Memahami dan mengenali hambatan utama untuk perubahan perilaku KM dan mengembangkan program manajemen perubahan yang efektif. Menganalisis proses bisnis, mewawancarai pemangku kepentingan, dan mengevaluasi rencana strategis dan TI untuk mengembangkan program KM. Mengembangkan struktur dan proses tata kelola KM untuk menerapkan program dan sistem KM dan memberikan konsultasi kepemimpinan pemikiran tentang praktik terbaik saat ini dalam KM, desain portal, dan modal intelektual dan manajemen konten.

Memelihara koleksi perpustakaan buku, publikasi serial, dokumen, audiovisual, dan bahan lainnya dan membantu kelompok dan individu dalam mencari dan memperoleh bahan. Memberikan informasi tentang kegiatan perpustakaan, fasilitas, aturan dan layanan. Jelaskan dan bantu dalam penggunaan sumber referensi, seperti kartu atau katalog buku atau buku dan indeks berkala untuk menemukan informasi. Mengeluarkan dan menerima bahan untuk diedarkan atau digunakan di perpustakaan. Merakit dan menata pajangan buku dan bahan perpustakaan lainnya. Menjaga bahan referensi dan sirkulasi. Menjawab korespondensi pada mata pelajaran referensi khusus. Membantu dalam pengembangan kebijakan dan prosedur perpustakaan. Merencanakan, melaksanakan, mengevaluasi layanan, dan mengembangkan standar layanan.

Memberikan layanan informasi, seperti menjawab pertanyaan tentang katalog kartu, dan membantu penggunaan alat bibliografi, seperti katalog Library of Congress. Melakukan katalogisasi bahan pustaka secara rutin. File kartu di laci katalog sesuai dengan sistem yang digunakan. Jawab pertanyaan rutin, dan rujuk orang yang membutuhkan bantuan profesional ke Pustakawan. Verifikasi informasi bibliografi pada permintaan pesanan. Bekerja atau mengarahkan pekerja dalam pemeliharaan tumpukan atau di bagian departemen atau divisi, seperti bagian pemesanan atau penerimaan dari departemen akuisisi, kegiatan persiapan kartu di departemen katalog, atau operasi meja pinjaman atau cadangan terbatas dari departemen sirkulasi.

Memberikan analisis teknis dan memverifikasi keakuratan faktur untuk memastikan bahwa layanan dan fitur yang lengkap dan akurat sesuai dengan yang diminta. Masukkan dan validasi pesanan layanan. Analisis faktur vendor, inventaris layanan dan peralatan pelanggan, dan pesanan layanan untuk memastikan tarif sudah benar dan sesuai dengan harga yang dikutip dan tanggal layanan. Rekonsiliasi faktur dan catatan inventaris, memastikan keakuratan kode Klasifikasi Penyakit Internasional dan Masalah Kesehatan Terkait (ICD), jika perlu, dan beri tahu pelanggan tentang perbedaan yang dapat memengaruhi pembayaran faktur. Mengoperasikan dan memperbarui berbagai basis data relatif terhadap pesanan tugas dan pemeliharaan inventaris.

Tentukan, rancang, kembangkan, implementasikan, dan dukung proyek yang berfokus pada pemodelan dan simulasi dinamis atau statis. Memberikan keahlian dalam penerapan pemodelan dan simulasi untuk desain, analisis teknik, dan aplikasi kontrol.

Mendukung instalasi, implementasi, pemecahan masalah, dan pemeliharaan jaringan area luas agensi (WAN) dan jaringan area lokal (LAN). Membantu dalam merancang dan mengelola infrastruktur WAN dan setiap proses yang terkait dengan WAN. Memberikan Dukungan Produksi Jaringan, termasuk: operasi sehari-hari, pemantauan dan penyelesaian masalah Jaringan klien. Memberikan identifikasi masalah tingkat kedua, diagnosis dan resolusi masalah. Mendukung pengiriman vendor sirkuit dan perangkat keras yang terlibat dalam proses resolusi. Mendukung eskalasi dan komunikasi status kepada manajemen agensi dan pelanggan internal. Sebuah pengetahuan kerja yang diinginkan dalam berbagai sistem perangkat lunak dan arsitektur, protokol komunikasi: dan perangkat keras jaringan.

Mengembangkan gambar teknik, menggunakan paket gambar berbasis komputer seperti Aptitude. Mengembangkan gambar teknik untuk rencana lokasi, konfigurasi dan desain jaringan.

Tingkat I (CI01) - Melakukan survei lokasi. Menilai dan mendokumentasikan konfigurasi jaringan situs saat ini dan persyaratan pengguna. Merancang dan mengoptimalkan topologi jaringan. Ikuti rencana rekayasa dan instalasi situs Paket Desain Teknis. Kembangkan jadwal pemasangan. Bekerja dengan tim instalasi jaringan. Membantu persiapan menggambar dan mendokumentasikan perubahan konfigurasi di setiap lokasi. Siapkan instalasi situs dan laporan pengujian.

Tingkat II (CI02) - Mengatur dan mengarahkan instalasi jaringan pada survei lokasi. Menilai dan mendokumentasikan konfigurasi jaringan situs saat ini dan persyaratan pengguna. Merancang dan mengoptimalkan topologi jaringan. Persiapan langsung dan memimpin dari rencana rekayasa dan instalasi situs Paket Desain Teknis. Kembangkan jadwal pemasangan. Memobilisasi tim instalasi jaringan. Persiapan langsung dan memimpin gambar yang mendokumentasikan perubahan konfigurasi di setiap situs. Siapkan instalasi situs dan laporan pengujian. Mengkoordinasikan operasi pasca instalasi dan dukungan pemeliharaan.

Memberikan dukungan untuk memantau, menginstal, dan melakukan perawatan pada komputer pribadi, komputer laptop, perangkat lunak, dan jaringan. Memberikan dukungan dalam menanggapi permintaan bantuan pengguna sistem. Memberikan dukungan untuk evaluasi diagnostik di tempat, implementasi koreksi, dan melatih pengguna dalam pengoperasian sistem dan program yang tepat. Memberikan dukungan untuk: menginstal dan memberikan dukungan dasar untuk perangkat lunak PC yang disetujui, melakukan upgrade ke semua platform komputer, melatih staf kantor di komputer, memelihara log dan inventaris perbaikan peralatan, membantu mengelola semua platform komputer sesuai petunjuk dan membantu menyelesaikan masalah operasi apa pun. Mendukung Administrator LAN instansi dengan pemeliharaan dan administrasi server. Memerlukan pengetahuan umum tentang produk jaringan termasuk, namun tidak terbatas pada, Novell, CISCO, dan UNIX.

Mengelola operasi komputer. Memastikan jadwal produksi terpenuhi. Memastikan sumber daya sistem komputer digunakan secara efektif. Mengkoordinasikan penyelesaian masalah terkait produksi. Pastikan hubungan yang tepat terjalin antara pelanggan, mitra kerja sama, dan vendor untuk memfasilitasi penyampaian layanan teknologi informasi. Menyediakan pengguna dengan output komputer. Mengawasi operasi staf.

Menyediakan analisis, desain, pengembangan, pengujian, dan implementasi perangkat lunak komputer untuk mendukung berbagai persyaratan fungsional dan teknis untuk memberikan dukungan bagi tugas-tugas pengembangan perangkat lunak pengadaan. Memberikan keahlian dalam pemrosesan pengadaan untuk mengembangkan sistem otomatis.

Membantu dalam penyusunan rencana manajemen dan laporan. Mengkoordinasikan jadwal untuk memfasilitasi penyelesaian proposal, hasil kontrak, tinjauan urutan tugas, pengarahan/presentasi, dan persiapan tinjauan dalam proses. Melakukan analisis, pengembangan, dan review prosedur operasional administrasi program.

Menyediakan layanan konsultasi analitis yang diperlukan untuk mengelola program di seluruh fase analisis kebutuhan bisnis, desain perangkat lunak, pengujian sistem dan kinerja, dan implementasi. Menganalisis dan meninjau anggaran, jadwal, dan sumber daya program lainnya. Identifikasi kekurangan sumber daya dan buat rekomendasi korektif. Berpartisipasi dalam sesi analisis untuk memberikan persyaratan program. Tinjau persyaratan bisnis dan sistem, perangkat lunak dan integrasi sistem untuk memastikan persyaratan memenuhi kebutuhan program. Pertimbangkan alternatif dan kembangkan rekomendasi. Mengidentifikasi, mengomunikasikan, dan menyelesaikan risiko. Mengidentifikasi dan menyelesaikan masalah untuk menghilangkan atau mengurangi terjadinya konsekuensi yang dapat berdampak pada keberhasilan proyek. Meneliti dan menganalisis bahan sumber. Memantau pengujian sistem, meninjau hasil pengujian, mengidentifikasi masalah proyek.

Berfungsi sebagai manajer program yang biasanya bertanggung jawab untuk mengatur, mengarahkan, dan mengelola semua aspek fungsi dukungan operasional kontrak yang melibatkan banyak tugas proyek yang kompleks dan saling terkait yang sering kali memerlukan tim pengelola personel kontraktor di berbagai lokasi. Memberikan arahan keseluruhan kegiatan program. Kelola dan pertahankan antarmuka kontraktor dengan tingkat senior organisasi pelanggan. Berkonsultasi dengan pelanggan dan personel kontraktor untuk merumuskan dan meninjau rencana tugas dan hasil, memastikan kesesuaian dengan program dan jadwal tugas proyek dan biaya serta kewajiban kontrak.Menetapkan dan memelihara laporan teknis dan keuangan untuk menunjukkan kemajuan proyek kepada manajemen dan pelanggan, mengatur dan menetapkan tanggung jawab kepada bawahan, mengawasi keberhasilan penyelesaian semua tugas yang diberikan, dan mengambil inisiatif dan memberikan dukungan kepada personel pemasaran dalam mengidentifikasi dan memperoleh bisnis potensial.

Mengarahkan semua manajemen keuangan dan kegiatan administrasi, seperti penganggaran, perencanaan tenaga kerja dan sumber daya dan pelaporan keuangan. Melakukan evaluasi kompleks dari prosedur, proses, teknik, model, dan/atau sistem yang ada terkait dengan masalah manajemen atau masalah kontrak, yang memerlukan laporan dan rekomendasi solusi. Kembangkan struktur rincian kerja, siapkan bagan, tabel, grafik, dan diagram untuk membantu menganalisis masalah. Memberikan pengawasan dan arahan harian kepada staf.

Konsultasikan di area fungsional tertentu dari proyek. Mendukung penyusunan rencana kerja untuk memenuhi kebutuhan pemerintah. Mendukung perumusan jadwal milestone atau rencana terdokumentasi lainnya. Pendidikan dan pengalaman yang sepadan.

Deskripsi ini memiliki cakupan yang serupa. Perbedaannya adalah jenis pendidikan dan pengalaman yang dibutuhkan untuk proyek atau kompleksitas tugas.

Tingkat I (CR01) - Biasanya mengawasi semua aspek proyek, memimpin tim pada proyek besar atau segmen signifikan dari proyek besar dan kompleks. Analisis masalah baru dan kompleks terkait proyek dan ciptakan solusi inovatif yang biasanya melibatkan jadwal, teknologi, metodologi, alat, komponen solusi, dan manajemen keuangan proyek. Menyediakan analisis sistem aplikasi dan rencana jangka panjang dan pendek untuk pemilihan aplikasi, pengembangan sistem, pemeliharaan sistem, dan aktivitas produksi untuk sumber daya pendukung yang diperlukan. Pengalaman dan pendidikan yang sepadan untuk tingkat tertentu.

Tingkat II (CR02) - Biasanya mengawasi semua aspek proyek, memimpin tim pada proyek besar atau segmen signifikan dari proyek besar dan kompleks. Analisis masalah baru dan kompleks terkait proyek dan ciptakan solusi inovatif yang biasanya melibatkan jadwal, teknologi, metodologi, alat, komponen solusi, dan manajemen keuangan proyek. Menyediakan analisis sistem aplikasi dan rencana jangka panjang dan jangka pendek untuk pemilihan aplikasi, pengembangan sistem, pemeliharaan sistem, dan aktivitas produksi untuk sumber daya pendukung yang diperlukan. Pengalaman dan pendidikan yang sepadan untuk tingkat tertentu.

Tingkat III (CR03) - Biasanya mengawasi semua aspek proyek, memimpin tim pada proyek besar atau segmen signifikan dari proyek besar dan kompleks. Analisis masalah baru dan kompleks terkait proyek dan ciptakan solusi inovatif yang biasanya melibatkan jadwal, teknologi, metodologi, alat, komponen solusi, dan manajemen keuangan proyek. Menyediakan analisis sistem aplikasi dan rencana jangka panjang dan jangka pendek untuk pemilihan aplikasi, pengembangan sistem, pemeliharaan sistem, dan aktivitas produksi untuk sumber daya pendukung yang diperlukan. Pengalaman dan pendidikan yang sepadan untuk tingkat tertentu.

Mengawasi dan mengembangkan sistem manajemen data, termasuk program komputer untuk memantau kualitas data, seperti SAS, MS ACCESS, MS Excel, dll. Menganalisis data untuk laporan, presentasi, dan publikasi membantu dalam peninjauan data studi untuk kualitas data mengatur file studi, termasuk data dan file korespondensi menggunakan perangkat lunak pengolah kata umum melakukan pencarian literatur ilmiah, medis dan penelitian dan menyiapkan slide untuk presentasi ilmiah.

Memberikan arahan teknis dan administratif untuk personel yang melakukan tugas pengembangan perangkat lunak, termasuk peninjauan produk kerja untuk kebenaran, kepatuhan terhadap konsep desain dan standar pengguna, peninjauan dokumentasi program untuk memastikan standar/persyaratan pemerintah dipatuhi, dan untuk kemajuan sesuai dengan jadwal. Berkoordinasi dengan Manajer Proyek dan/atau Manajer Penjaminan Mutu untuk memastikan bahwa masalah diselesaikan untuk kepuasan pengguna. Buat rekomendasi, jika diperlukan, untuk persetujuan instalasi sistem utama. Menyiapkan laporan status milestone dan penyampaian/presentasi konsep sistem kepada rekan kerja, bawahan, dan perwakilan pengguna akhir.

Menetapkan dan memelihara proses untuk mengevaluasi perangkat lunak dan dokumentasi terkait. Menentukan sumber daya yang diperlukan untuk pengendalian kualitas. Pertahankan tingkat kualitas sepanjang siklus hidup perangkat lunak. Melakukan tinjauan formal dan informal pada titik-titik yang telah ditentukan selama siklus hidup pengembangan. Memberikan pengawasan dan arahan harian untuk mendukung staf.

Mengembangkan dan menerapkan metodologi kontrol kualitas untuk memastikan kepatuhan terhadap standar jaminan kualitas, pedoman, dan prosedur dalam organisasi berbasis komputer yang besar. Mengembangkan dan menentukan karakteristik utama dan kecil dari kualitas termasuk metrik kualitas dan parameter penilaian dan menentukan sumber daya kontrol kualitas yang diperlukan untuk perintah tugas yang sebenarnya. Menetapkan dan memelihara proses untuk mengevaluasi perangkat keras, perangkat lunak, dan dokumentasi terkait dan/atau membantu dalam evaluasi. Melakukan dan/atau berpartisipasi dalam tinjauan formal dan informal pada titik-titik yang telah ditentukan sebelumnya sepanjang siklus hidup pengembangan.

Mengkoordinasikan dan melacak permintaan dokumen mengikuti panduan dari National Archives and Records Administration (NARA) dan Federal Records Center (FRC). Mengkoordinasikan tinjauan klasifikasi sesuai kebutuhan. Kirim dokumen dan lacak dalam database. Menjawab permintaan pelanggan untuk dokumen atau bantuan. Siapkan catatan kadaluarsa untuk dimusnahkan. Rekam penerimaan dan penyimpanan termasuk pengindeksan. Mengisi database. Melakukan query database. Lakukan kontrol kualitas isi kotak. Melakukan rekonsiliasi persediaan. Menyediakan layanan surat rahasia jika diperlukan.

Operasikan pemindai atau kamera berkecepatan tinggi dan komputer pribadi untuk melakukan pencitraan atau pembuatan film mikro mengikuti prosedur tertulis yang ditetapkan. Lakukan perawatan rutin harian, mingguan, dan bulanan termasuk layanan perbaikan kecil pada kamera. Memenuhi tujuan produksi harian dan standar kualitas. Pengalaman dan pendidikan yang sepadan.

Memberikan keahlian tingkat tinggi dalam disiplin kesehatan masyarakat yang berlaku untuk mengumpulkan, mengabstraksi, mengkode, menganalisis, atau menafsirkan data ilmiah yang terkandung dalam sistem informasi dan database yang terkait dengan kesehatan masyarakat.

Tingkat I (CZ01) - Memberikan pengetahuan teknis dan analisis aplikasi yang sangat khusus dan lingkungan operasional, analisis sistem fungsional tingkat tinggi, desain, integrasi, dokumentasi dan saran implementasi pada masalah yang cukup kompleks yang memerlukan tingkat pengetahuan yang sesuai tentang materi pelajaran untuk implementasi yang efektif. Menerapkan prinsip, metode, dan pengetahuan area fungsional kemampuan untuk persyaratan urutan tugas tertentu, prinsip dan metode matematika tingkat lanjut untuk masalah teknis yang sangat sulit dan didefinisikan secara sempit dalam rekayasa dan aplikasi ilmiah lainnya untuk sampai pada solusi otomatis. Membantu konsultan senior lainnya dengan analisis dan evaluasi dan dengan persiapan rekomendasi untuk perbaikan sistem, optimalisasi, pengembangan, dan/atau upaya pemeliharaan dalam spesialisasi berikut: arsitektur sistem informasi, telekomunikasi jaringan, protokol komunikasi otomatisasi, manajemen risiko/analisis elektronik, perangkat lunak manajemen siklus hidup, metodologi pengembangan perangkat lunak, dan pemodelan dan simulasi. Pengalaman yang sepadan di bidang TI dan dalam teknologi lama yang baru dan terkait yang secara langsung berhubungan dengan bidang keahlian yang dibutuhkan.

Tingkat II (CZ02) - Menganalisis kebutuhan pengguna untuk menentukan persyaratan fungsional dan menentukan masalah serta mengembangkan rencana dan persyaratan di area materi pelajaran untuk sistem yang cukup kompleks hingga kompleks yang terkait dengan arsitektur sistem informasi, telekomunikasi jaringan, otomatisasi, protokol komunikasi, manajemen risiko/analisis elektronik, perangkat lunak, siklus hidup manajemen, metodologi pengembangan perangkat lunak, dan pemodelan dan simulasi. Lakukan alokasi fungsional untuk mengidentifikasi tugas-tugas yang diperlukan dan keterkaitannya. Identifikasi sumber daya yang diperlukan untuk setiap tugas. Memiliki pengetahuan dan keahlian yang diperlukan sehingga diakui dalam komunitas profesional sehingga pemerintah mampu mengkualifikasi individu tersebut sebagai ahli di bidangnya untuk suatu perintah tugas yang sebenarnya. Tunjukkan keterampilan komunikasi lisan dan tertulis yang luar biasa. Pengalaman yang sepadan di bidang TI dan dalam teknologi lama yang baru dan terkait yang secara langsung berhubungan dengan bidang keahlian yang dibutuhkan.

Tingkat III (CZ03) - Memberikan arahan teknis, manajerial, dan administratif untuk definisi masalah, analisis, pengembangan persyaratan, dan implementasi untuk sistem yang kompleks hingga sangat kompleks di bidang materi pelajaran. Membuat rekomendasi dan saran tentang peningkatan sistem, optimalisasi atau upaya pemeliharaan di seluruh organisasi dalam spesialisasi berikut: arsitektur sistem informasi jaringan otomasi telekomunikasi protokol komunikasi manajemen risiko/analisis elektronik perangkat lunak manajemen siklus hidup metodologi pengembangan perangkat lunak dan pemodelan dan simulasi. Pengalaman yang sepadan di bidang TI dan dalam teknologi lama yang baru dan terkait yang secara langsung berhubungan dengan bidang keahlian yang dibutuhkan.

Tingkat I (DA01) - Membantu aktivitas sehari-hari dalam konfigurasi dan pengoperasian sistem yang mungkin berbasis mainframe, mini, atau klien/server. Membantu mengoptimalkan operasi sistem dan pemanfaatan sumber daya, dan melakukan analisis dan perencanaan kapasitas sistem. Memberikan bantuan kepada pengguna dalam mengakses dan menggunakan sistem bisnis. Pengalaman dan pendidikan yang sepadan.

Tingkat II (DA02) - Melakukan aktivitas harian konfigurasi dan pengoperasian sistem yang mungkin berbasis mainframe, mini, atau client/server. Melakukan optimalisasi operasi sistem dan pemanfaatan sumber daya, serta melakukan analisis dan perencanaan kapasitas sistem. Memberikan bantuan kepada pengguna dalam mengakses dan menggunakan sistem bisnis. Pengalaman dan pendidikan yang sepadan.

Tingkat III (DA03) - Mengawasi dan mengelola aktivitas harian konfigurasi dan pengoperasian sistem yang mungkin berbasis mainframe, mini, atau klien/server. Merencanakan dan memantau optimalisasi operasi sistem dan pemanfaatan sumber daya, serta melakukan analisis dan perencanaan kapasitas sistem. Merencanakan dan memantau bantuan kepada pengguna dalam mengakses dan menggunakan sistem bisnis. Pengalaman dan pendidikan yang sepadan.

Tingkat I (DB01) - Menetapkan persyaratan informasi sistem menggunakan analisis insinyur informasi dalam pengembangan sistem informasi skala besar atau perusahaan-lebar. Merancang arsitektur untuk memasukkan perangkat lunak, perangkat keras, dan komunikasi untuk mendukung persyaratan total serta menyediakan persyaratan dan antarmuka lintas fungsi saat ini dan masa depan. Pastikan sistem ini kompatibel dan sesuai dengan standar untuk arsitektur sistem terbuka, Interkoneksi Sistem Terbuka (OSI) dan model referensi ISO, dan profil standar - seperti Institute of Electrical and Electronic Engineers (IEEE) Open Systems Environment (OSE) model referensi - sebagaimana diterapkan pada implementasi dan spesifikasi solusi manajemen informasi dari platform aplikasi, di seluruh Antarmuka Program Aplikasi (API), dan lingkungan eksternal/aplikasi perangkat lunak. Pastikan bahwa lingkungan operasi umum sesuai dengan arsitektur perusahaan Agensi dan model referensi yang berlaku. Mengevaluasi secara analitis dan sistematis masalah alur kerja, organisasi, dan perencanaan dan mengembangkan tindakan korektif yang tepat. Memberikan pengawasan dan arahan harian kepada staf.

Tingkat II (DB02) - Menetapkan persyaratan informasi sistem menggunakan analisis insinyur informasi dalam pengembangan sistem informasi skala besar atau perusahaan-lebar. Merancang arsitektur untuk memasukkan perangkat lunak, perangkat keras, dan komunikasi untuk mendukung persyaratan total serta menyediakan persyaratan dan antarmuka lintas fungsi saat ini dan masa depan. Pastikan sistem ini kompatibel dan sesuai dengan standar untuk arsitektur sistem terbuka, model referensi OSI dan ISO, dan profil standar - seperti model referensi IEEE OSE - saat diterapkan pada implementasi dan spesifikasi solusi manajemen informasi aplikasi platform, di seluruh API, dan lingkungan eksternal/aplikasi perangkat lunak. Pastikan bahwa lingkungan operasi umum sesuai dengan arsitektur perusahaan Agensi dan model referensi yang berlaku. Mengevaluasi secara analitis dan sistematis masalah alur kerja, organisasi, dan perencanaan dan mengembangkan tindakan korektif yang tepat. Memberikan pengawasan dan arahan harian kepada staf.

Tingkat I (DC01) - Melakukan penambahan dan perubahan pada perangkat keras jaringan dan sistem operasi, dan perangkat yang terpasang meliputi penyelidikan, analisis, rekomendasi, konfigurasi, instalasi, dan pengujian perangkat keras dan perangkat lunak jaringan baru. Memberikan dukungan langsung dalam operasi sehari-hari pada perangkat keras jaringan dan sistem operasi, termasuk evaluasi penggunaan sistem, pemantauan waktu respons, dan dukungan utama untuk deteksi dan koreksi masalah operasional menggunakan pengetahuan tentang instalasi dan pemeliharaan perangkat keras dan perangkat lunak di PC /LAN_WAN lingkungan. Menjaga standar infrastruktur jaringan termasuk protokol komunikasi jaringan seperti TCP Transport Control Protocol/Internet Protocol (TCP/IP).

Tingkat II (DC02) - Mengkoordinasikan dan/atau melakukan penambahan dan perubahan perangkat keras jaringan dan sistem operasi, dan perangkat yang terpasang meliputi penyelidikan, analisis, rekomendasi, konfigurasi, instalasi, dan pengujian perangkat keras dan perangkat lunak jaringan baru. Memberikan dukungan langsung dalam operasi sehari-hari pada perangkat keras jaringan dan sistem operasi, termasuk evaluasi pemanfaatan sistem, pemantauan waktu respons, dan dukungan utama untuk deteksi dan koreksi masalah operasional. Memecahkan masalah pada tingkat fisik jaringan, bekerja dengan perangkat keras dan perangkat lunak pengukuran jaringan, serta pemeriksaan fisik dan pengujian perangkat keras pada tingkat logis yang bekerja dengan protokol komunikasi. Menjaga standar infrastruktur jaringan termasuk protokol komunikasi jaringan seperti TCP/IP. Memberikan konsultasi teknis, pelatihan dan dukungan kepada staf TI yang ditunjuk oleh pemerintah.

Tingkat III (DC03) - Mengawasi, mengkoordinasikan dan/atau melakukan penambahan dan perubahan perangkat keras jaringan dan sistem operasi, dan perangkat yang terpasang termasuk penyelidikan, analisis, rekomendasi, konfigurasi, instalasi, dan pengujian perangkat keras dan perangkat lunak jaringan baru. Memberikan dukungan langsung dalam operasi sehari-hari pada perangkat keras jaringan dan sistem operasi termasuk evaluasi pemanfaatan sistem, pemantauan waktu respons dan dukungan utama untuk deteksi dan koreksi masalah operasional. Memecahkan masalah pada tingkat fisik jaringan, bekerja dengan perangkat keras dan perangkat lunak pengukuran jaringan, serta pemeriksaan fisik dan pengujian perangkat keras pada tingkat logis yang bekerja dengan protokol komunikasi. Berpartisipasi dalam desain perencanaan, tinjauan teknis dan implementasi untuk perangkat keras infrastruktur jaringan baru dan sistem operasi jaringan untuk jaringan komunikasi suara dan data. Menjaga standar infrastruktur jaringan termasuk protokol komunikasi jaringan seperti TCP/IP. Memberikan konsultasi teknis, pelatihan dan dukungan kepada staf TI yang ditunjuk oleh pemerintah. Mendiagnosis dan menyelesaikan masalah komunikasi yang kompleks.

Memantau dan mendukung pemrosesan komputer. Mengkoordinasikan input, output, dan media file. Mendistribusikan output dan mengontrol operasi komputer yang mungkin berbasis mainframe, mini, atau client/server.

Membuat dan/atau memelihara sistem operasi, perangkat lunak komunikasi, paket basis data, compiler, assembler, dan program utilitas. Memodifikasi perangkat lunak yang ada serta membuat perangkat lunak tujuan khusus untuk memastikan efisiensi dan integritas antara sistem dan aplikasi.

Deskripsi ini memiliki cakupan yang serupa. Perbedaannya adalah jenis pendidikan dan pengalaman yang dibutuhkan untuk proyek atau kompleksitas tugas.

Tingkat I (DF01) - Membantu menulis dan/atau mengedit dokumen teknis, termasuk proposal bisnis, laporan, panduan pengguna, pengarahan dan presentasi, deskripsi fungsional, spesifikasi sistem, pedoman, laporan khusus, dan hasil proyek lainnya untuk memenuhi persyaratan kontrak. Kembangkan garis besar dan draf untuk ditinjau dan disetujui oleh spesialis teknis dan manajemen proyek untuk memastikan bahwa dokumen akhir memenuhi persyaratan dan peraturan kontrak yang berlaku. Teliti dan kumpulkan informasi teknis dan latar belakang untuk dimasukkan dalam dokumentasi dan hasil proyek. Konsultasikan sumber informasi yang relevan, termasuk sumber daya perpustakaan, dokumen teknis dan keuangan, dan klien dan personel proyek, untuk mendapatkan informasi latar belakang, dan memverifikasi pedoman dan peraturan terkait yang mengatur hasil proyek. Pengalaman, pendidikan, dan tingkat pengawasan dan arahan yang sepadan.

Tingkat II (DF02) - Menulis dan/atau mengedit dokumen teknis, termasuk proposal bisnis, laporan, panduan pengguna, pengarahan dan presentasi, deskripsi fungsional, spesifikasi sistem, pedoman, laporan khusus, dan hasil proyek lainnya untuk memenuhi persyaratan kontrak. Kembangkan garis besar dan draf untuk ditinjau dan disetujui oleh spesialis teknis dan manajemen proyek untuk memastikan bahwa dokumen akhir memenuhi persyaratan dan peraturan kontrak yang berlaku. Teliti dan kumpulkan informasi teknis dan latar belakang untuk dimasukkan dalam dokumentasi dan hasil proyek. Konsultasikan sumber informasi yang relevan, termasuk sumber daya perpustakaan, dokumen teknis dan keuangan, dan klien dan personel proyek, untuk mendapatkan informasi latar belakang, dan memverifikasi pedoman dan peraturan terkait yang mengatur hasil proyek. Pengalaman, pendidikan, dan tingkat pengawasan dan arahan yang sepadan.

Tingkat III (DF03) - Menulis dan/atau mengedit dokumen teknis, termasuk proposal bisnis, laporan, panduan pengguna, pengarahan dan presentasi, deskripsi fungsional, spesifikasi sistem, pedoman, laporan khusus, dan hasil proyek lainnya untuk memenuhi persyaratan kontrak. Kembangkan garis besar dan draf untuk ditinjau dan disetujui oleh spesialis teknis dan manajemen proyek untuk memastikan bahwa dokumen akhir memenuhi persyaratan dan peraturan kontrak yang berlaku. Teliti dan kumpulkan informasi teknis dan latar belakang untuk dimasukkan dalam dokumentasi dan hasil proyek.Konsultasikan sumber informasi yang relevan, termasuk sumber daya perpustakaan, dokumen teknis dan keuangan, dan klien dan personel proyek, untuk mendapatkan informasi latar belakang, dan memverifikasi pedoman dan peraturan terkait yang mengatur hasil proyek. Pengalaman, pendidikan, dan tingkat pengawasan dan arahan yang sepadan.

Tingkat I (DG01) - Memberikan dukungan dalam menerjemahkan kebutuhan bisnis ke dalam persyaratan telekomunikasi, desain dan pesanan. Memberikan analisis teknik yang mendalam tentang alternatif telekomunikasi untuk instansi pemerintah dalam mendukung upaya modernisasi strategis mereka. Menyediakan desain peningkatan telekomunikasi untuk infrastruktur telekomunikasi skala menengah dan besar. Memberikan dukungan antarmuka kepada pengguna akhir telekomunikasi, personel operasi telekomunikasi, dan manajemen program strategis telekomunikasi. Mendukung infrastruktur telekomunikasi menggunakan teknologi, dan praktik terbaik rekayasa telekomunikasi Transport Control Protocol/Internet Protocol (TCP/IP), protokol routing, LAN switching, sistem Internet dan Intranet, dan sistem manajemen jaringan berbasis Simple Network Management Protocol (SNMP). Memimpin upaya desain yang membutuhkan pengetahuan teknis mendalam tentang komunikasi area luas dan area lokal. Menganalisis kinerja jaringan dengan alat seperti Sniffers, Concord Network Health, atau alat manajemen jaringan Network Informant seperti Hewlett Packard Openview atau Tivoli melakukan perencanaan kapasitas dan pemodelan rekayasa kinerja dan alat simulasi seperti COMNET III, Netmaker Mainstation, NetRule, atau OPNET produk. Lakukan analisis komparatif sistem dan desain berdasarkan prestasi dan biaya (dalam hal modal dan operasi yang sedang berlangsung) dan/atau ekonomi teknik (analisis manfaat biaya terkait teknik).

Tingkat II (DG02) - Mengelola terjemahan kebutuhan bisnis ke dalam persyaratan telekomunikasi, desain dan pesanan. Memberikan analisis teknik yang mendalam tentang alternatif telekomunikasi untuk instansi pemerintah dalam mendukung upaya modernisasi strategis mereka. Menyediakan desain peningkatan telekomunikasi untuk infrastruktur telekomunikasi skala menengah dan besar. Memberikan dukungan antarmuka kepada pengguna akhir telekomunikasi, personel operasi telekomunikasi, dan manajemen program strategis telekomunikasi. Mendukung infrastruktur telekomunikasi menggunakan teknologi, dan praktik terbaik rekayasa telekomunikasi Transport Control Protocol/Internet Protocol (TCP/IP), protokol routing, LAN switching, sistem Internet dan Intranet, dan sistem manajemen jaringan berbasis Simple Network Management Protocol (SNMP). Memimpin upaya desain yang membutuhkan pengetahuan teknis mendalam tentang komunikasi area luas dan area lokal. Menganalisis kinerja jaringan dengan alat seperti Sniffers, Concord Network Health, atau alat manajemen jaringan Network Informant seperti Hewlett Packard Openview atau Tivoli melakukan perencanaan kapasitas dan pemodelan rekayasa kinerja dan alat simulasi seperti COMNET III, Netmaker Mainstation, NetRule, atau OPNET produk. Lakukan analisis komparatif sistem dan desain berdasarkan prestasi dan biaya (dalam hal modal dan operasi yang sedang berlangsung) dan/atau ekonomi teknik (analisis manfaat biaya terkait teknik). Dapat memberikan pengawasan dan arahan harian untuk mendukung staf.

Tingkat I (DH01) - Membantu personel senior dalam merumuskan dan mengembangkan persyaratan komunikasi dan standar desain. Lakukan studi kompleks untuk menentukan kapasitas dan keandalan jaringan, dan buat rekomendasi untuk menambah dan/atau meningkatkan jaringan komunikasi yang ada. Memberikan diagnosa masalah teknis dan dukungan resolusi untuk semua subsistem terkait, termasuk pemantauan saluran, pengujian loop-back modem, pemantauan kinerja LAN, dan penentuan kegagalan terminal. Menyediakan instalasi perangkat keras dan perangkat lunak dan dukungan konfigurasi. Pengalaman dan pendidikan yang sepadan.

Tingkat II (DH02) - Merumuskan dan mengembangkan persyaratan komunikasi dan standar desain. Lakukan studi kompleks untuk menentukan kapasitas dan keandalan jaringan, dan buat rekomendasi untuk menambah dan/atau meningkatkan jaringan komunikasi yang ada. Memberikan diagnosa masalah teknis dan dukungan resolusi untuk semua subsistem terkait, termasuk pemantauan saluran, pengujian loop-back modem, pemantauan kinerja LAN, dan penentuan kegagalan terminal. Menyediakan instalasi perangkat keras dan perangkat lunak dan dukungan konfigurasi. Pengalaman dan pendidikan yang sepadan.

Mengevaluasi, merekomendasikan, dan menerapkan alat dan strategi pengujian otomatis. Merancang, mengimplementasikan, dan melakukan prosedur pengujian dan evaluasi untuk memastikan persyaratan sistem terpenuhi. Kembangkan, pertahankan, dan tingkatkan skrip dan arsitektur pengujian otomatis untuk produk aplikasi. Menulis, mengimplementasikan, dan melaporkan status kasus pengujian sistem untuk pengujian. Analisis kasus uji dan berikan laporan kemajuan secara teratur. Berfungsi sebagai spesialis materi pelajaran yang memberikan pengetahuan pengujian untuk mendukung kebutuhan pengguna dari aplikasi perangkat lunak/perangkat keras yang kompleks hingga yang sangat kompleks. Langsung dan/atau berpartisipasi dalam semua fase penilaian manajemen risiko dan pengembangan perangkat lunak/perangkat keras dengan penekanan pada analisis kebutuhan pengguna, desain pengujian, dan pemilihan alat pengujian.

Memberikan kepemimpinan dan manajemen untuk tugas-tugas pelatihan yang sedang dilakukan oleh kontraktor. Menyiapkan dokumen dan layanan pelatihan yang diperlukan untuk mendukung persyaratan pelatihan yang menarik masukan dari peneliti, insinyur pengujian, analis sistem, spesialis pelatihan, ahli logistik, dan pemerintah serta menerapkan kebijakan pelatihan pelanggan. Mengawasi aktivitas Spesialis Pelatihan. Pertahankan kontak dengan pelanggan untuk memastikan bahwa pelatihan memenuhi kebutuhan mereka.

Tingkat I (DK01) - Melakukan penelitian yang diperlukan untuk mengembangkan dan merevisi kursus pelatihan. Mengembangkan dan merevisi kursus dan menyiapkan katalog pelatihan yang sesuai. Menyiapkan materi siswa (manual kursus, buku kerja, handout, sertifikat kelulusan, dan formulir kritik kursus). Melatih personel dengan mengadakan kursus kelas formal, lokakarya, dan seminar. Menyiapkan laporan dan memantau tugas pelatihan untuk mendukung tujuan Manajer Program Kontraktor dan sponsor pemerintah dengan menggunakan standar pelatihan standar dan program perangkat lunak dan perangkat keras seperti upaya pemodelan dan simulasi dan pembuatan prototipe. Memberikan masukan kepada Pimpinan Proyek dan Manajer Program Kontraktor tentang keputusan untuk validasi pelatihan dan atau modifikasi item atau sistem tertentu yang dapat diperbaiki. Pendidikan dan pengalaman yang sepadan.

Tingkat II (DK02) - Melakukan penelitian yang diperlukan untuk mengembangkan dan merevisi kursus pelatihan. Mengembangkan dan merevisi kursus dan menyiapkan katalog pelatihan yang sesuai. Siapkan materi instruktur (garis besar kursus, materi latar belakang, dan alat bantu pelatihan). Menyiapkan materi siswa (manual kursus, buku kerja, handout, sertifikat kelulusan, dan formulir kritik kursus). Melatih personel dengan mengadakan kursus kelas formal, lokakarya, dan seminar. Menyiapkan laporan dan memantau tugas pelatihan untuk mendukung tujuan Manajer Program Kontraktor dan sponsor pemerintah dengan menggunakan standar pelatihan standar dan program perangkat lunak dan perangkat keras seperti upaya pemodelan dan simulasi dan pembuatan prototipe. Memberikan masukan kepada Pimpinan Proyek dan Manajer Program Kontraktor tentang keputusan untuk validasi pelatihan dan atau modifikasi item atau sistem tertentu yang dapat diperbaiki. Pendidikan dan pengalaman yang sepadan.

Memberikan dukungan untuk mengembangkan dan menyediakan konten situs Web Agensi yang akan memotivasi dan memuaskan kebutuhan pengguna pemerintah dan sipil sehingga mereka akan secara teratur mengakses situs dan menggunakannya sebagai sumber utama untuk informasi, pengambilan keputusan, dan penyampaian manfaat. Memberikan dukungan untuk memelihara buku pegangan pegawai negeri dan kebijakan/prosedur di Web agensi membantu dalam mengembangkan buletin agensi dan komunikasi manfaat sipil yang merekomendasikan penggunaan web baru dan inovatif serta melatih dan mendidik karyawan tentang penggunaan dan manfaat menggunakan Web. Memberikan dukungan di lokasi dan mengejar konten dan mensurvei pelanggan internal untuk mengumpulkan umpan balik untuk perbaikan dan penyempurnaan situs. Pengetahuan tentang beberapa hal berikut diperlukan: Bahasa Inggris (atau Spanyol), Jurnalisme, desain grafis atau bidang terkait, manajemen situs Web, server web, struktur situs intranet, dan perangkat lunak terkait Web (mis. - MS FrontPage, Dream Weaver, Access, HyperText Markup Language (HTML), dan perangkat lunak Web 2.0 seperti wiki, portal, dan Microsoft Sharepoint).

Memberikan dukungan dalam meningkatkan, memelihara, dan membuat konten untuk situs web Agensi di bawah bimbingan Manajer Proyek Web. Menyediakan desain dan pembuatan situs sehari-hari. Pengalaman dalam desain dan pengembangan web menggunakan HTML dan Java diperlukan. Memberikan pelatihan di tempat kerja untuk pengembangan, pemeliharaan, dan pembaruan halaman Web. Harus memiliki keterampilan komunikasi yang baik dan kemampuan untuk bekerja dengan semua tingkat manajemen dan tenaga teknis. Harus memiliki pengetahuan tentang browser, editor, perangkat lunak desain grafis (mis., PhotoShop, Illustrator). Pengalaman dengan perangkat lunak animasi dan pengoptimalan gambar sangat diinginkan.

Memberikan dukungan dalam mengelola pengembangan situs web agensi. Tim utama Administrator Konten, Pengembang Perangkat Lunak, dan Desainer. Preferensi untuk keterampilan manajemen proyek Keterampilan pengembangan web. Memberikan kepemimpinan kepada tim untuk mengumpulkan/menganalisis persyaratan klien, menulis/mengedit salinan web, bekerja dengan sumber daya internal/eksternal pada desain, berkoordinasi dengan Layanan TI dalam pengembangan, dan bekerja dengan Hukum/Peraturan tentang persetujuan konten, mengoordinasikan/mendokumentasikan semua aspek proyek mengembangkan/mengelola permintaan klien/proses peninjauan melacak semua permintaan/perubahan dan mematuhi garis waktu proyek.

Memberikan dukungan untuk mengembangkan aplikasi berbasis Web termasuk layanan pelanggan online untuk mengubah instansi pemerintah agar dapat memberikan layanan mereka secara online. Memberikan dukungan dalam mengembangkan konsep situs, desain antarmuka, dan arsitektur situs web. Memberikan dukungan untuk implementasi antarmuka ke aplikasi. Pengetahuan kerja dan pengalaman pengkodean di Java diperlukan. Pengetahuan tentang beberapa area berikut ini diinginkan: Active Server Pages, JavaScript, Visual Basic, JavaScript, Access, HTML, DBMS (mis. - Oracle, Sybase, dll.) dan pengetahuan tentang SQL di SQL server.

Kumpulkan persyaratan untuk situs Web menggunakan aplikasi perangkat lunak grafis, teknik, dan alat. Perbarui situs Web menggunakan aplikasi perangkat lunak grafis, teknik, dan alat menggunakan pengetahuan tentang teknologi berbasis web dan XML, HTML, Photoshop, Illustrator, dan/atau aplikasi terkait desain lainnya. Mendukung upaya kelompok desain untuk meningkatkan tampilan dan nuansa penawaran online organisasi. Tingkatkan situs Web untuk mendukung strategi dan tujuan organisasi relatif terhadap komunikasi eksternal.

Menjaga sistem fungsional, jaringan, dan konektivitas komunikasi yang efisien untuk semua pengguna, terus mengikuti perkembangan baru untuk semua area yang ditugaskan, termasuk terus melakukan studi kelayakan tentang bagaimana produk/teknologi baru akan cocok dengan infrastruktur sistem/WAN/LAN yang ada dan mengembangkan rencana implementasi untuk perubahan/peningkatan. Menganalisis, merencanakan (termasuk perencanaan jangka panjang), menguji, menerapkan, dan memecahkan masalah sistem, jaringan area luas, dan sistem jaringan komunikasi.


Streaming

Streaming menggunakan GUI

Streaming menggunakan GUI hanya tersedia di antarmuka Qt. Untuk streaming menggunakan GUI, buka VLC, lalu Media [menu] -> Stream:

Pilih aliran (seperti file, aliran jaringan, disk, perangkat pengambilan . ) dari dialog "Open Media" yang muncul.

Metode streaming berikut tersedia untuk digunakan dengan VLC:

  • Tampilkan secara lokal: menampilkan aliran di layar Anda. Ini memungkinkan Anda untuk menampilkan streaming yang sebenarnya Anda streaming. Efek transcoding, rescaling, dll. dapat dipantau secara lokal menggunakan fungsi ini.
  • Mengajukan: Menyimpan aliran ke file.
  • HTTP: Gunakan metode streaming HTTP. Tentukan nomor port TCP untuk mendengarkan.
  • MS-WMSP (MMSH): Metode akses ini memungkinkan Anda melakukan streaming ke Microsoft Windows Media Player. Tentukan alamat IP dan nomor port TCP untuk mendengarkan. Catatan: Ini hanya akan bekerja dengan ASF metode enkapsulasi.
  • UDP: Streaming dalam unicast dengan memberikan alamat dalam rentang 0.0.0.0 - 223.255.255.255 atau dalam multicast dengan memberikan alamat dalam rentang 224.0.0.0 - 239.255.255.255. Dimungkinkan juga untuk melakukan streaming ke alamat IPv6. Catatan: Ini hanya akan bekerja dengan TS metode enkapsulasi.
  • RTP: Gunakan Protokol Transfer Waktu Nyata. Seperti UDP, ia dapat menggunakan alamat unicast dan multicast.
  • Pemeran Es: Streaming ke server IceCast. Tentukan alamat, port, titik pemasangan, dan otentikasi server IceCast untuk streaming.

Cara yang paling umum adalah melalui HTTP. Untuk streaming melalui HTTP, klik "Tujuan", pilih HTTP dari tarik-turun sebagai "Tujuan Baru" dan klik tambahkan. Sekarang jika Anda melakukan streaming video, Anda akan ingin melakukan streaming ke sesuatu seperti "/ go.mpg." Sekarang tekan stream, dan Anda seharusnya dapat menggunakan instance VLC yang berbeda sebagai klien, dan dengarkan streaming itu sekarang (mis: di komputer yang sama itu akan menjadi "Media" [menu] -> Open Network Stream -> " http://localhost:8080/go.mpg" dan itu akan berfungsi.

  • meskipun Anda mengklik "aktifkan transcoding" dan tentukan beberapa jenis wadah lain, itu akan memberi Anda jenis wadah flv kecuali Anda menggunakan akhiran, seperti ref ".mpg"
  • Klien VLC tidak dapat menerima aliran kurang dari 5 fps, meskipun dapat mengalirkannya dengan baik untuk kecepatan tersebut (dan pemain lain dapat menerimanya). ref.
  • NB bahwa *berkali-kali* saat menggunakan GUI untuk streaming akan memilih hal yang salah. Misalnya, jika Anda memberikan jalur "/" itu akan menggunakan jenis wadah FLV (yang mungkin tidak Anda inginkan, dan yang menggantikan jenis wadah pengaturan transcoding Anda * diam-diam *), dan jika Anda memberikannya "/ go. mp4" itu akan * diam-diam * gagal (Anda dapat melihat pesan log untuk melihat apa kesalahannya — dikatakan "tipe mp4 tidak didukung kecuali untuk file"). Sulit untuk mengaturnya. Ini seperti GUI yang sering salah mengaturnya. Berikut adalah daftar cucian.

Pilih profil transcoding yang sesuai dengan codec dan metode akses streaming Anda, seperti MPEG-TS, MPEG-PS, MPEG-1, Ogg, Raw, ASF, AVI, MP4 dan MOV. Anda juga dapat membuat atau mengubah profil dengan mengklik tombol "Edit profil yang dipilih" di sebelah kotak kombo pilihan.

Pilih metode untuk mengumumkan streaming Anda. Anda dapat menggunakan SAP (Service Announce Protocol) atau SLP (Service Location Protocol). Anda juga harus menentukan nama saluran. Antarmuka macOS juga memungkinkan Anda mengekspor file deskripsi (SDP) sesi RTP menggunakan server HTTP atau RTSP internal VLC, atau sebagai file. Ini dapat dilakukan dengan menggunakan kotak centang yang sesuai. NS URL SDP kotak teks memungkinkan untuk memberikan url atau tujuan di mana file SDP akan tersedia. Ada kotak teks yang menampilkan Arus Keluaran MRL (Pencari Sumber Daya Media). Ini diperbarui saat Anda mengubah opsi dalam dialog keluaran Stream, dan dapat diubah dengan tangan jika perlu.

Klik "Streaming" untuk memulai streaming.

Streaming menggunakan antarmuka baris perintah

Jika Anda ingin melakukan streaming menggunakan antarmuka baris perintah alih-alih GUI (lebih banyak kontrol, misalnya Anda dapat menentukan wadah Anda sendiri), Anda dapat "mengendus" opsi yang digunakan GUI dengan membuka logger (Menu Alat -> pesan ) dan atur level verbositas ke "2" lalu lakukan streaming. Ini akan menampilkan pesan debug yang pada dasarnya memberi tahu Anda apa yang digunakan untuk parameter baris perintah, kemudian Anda akan mengambil parameter yang sama dan menggunakannya pada baris perintah (Anda mungkin perlu menambahkan tanda kutip di sekitar kata-kata yang memiliki spasi di dalamnya, dan Anda mungkin perlu menambahkan --'s).


Menambal instans Windows EC2 Anda menggunakan AWS Systems Manager Patch Manager

Patch Manager mengotomatiskan proses menambal instans yang dikelola Windows dan Linux. Gunakan fitur ini dari Manajer Sistem AWS untuk memindai instans Anda dari patch yang hilang atau memindai dan menginstal patch yang hilang. Anda dapat menginstal patch satu per satu atau ke grup besar instans dengan menggunakan tag Amazon EC2.

Dalam posting blog ini, saya menunjukkan kepada Anda bagaimana menggunakan patch baseline untuk memasukkan aturan untuk patch yang disetujui secara otomatis dalam beberapa hari setelah rilis, juga untuk melihat daftar patch yang disetujui dan ditolak. Saya akan mendemonstrasikan cara memanfaatkan grup tambalan untuk mengatur instance untuk tambalan. Misalnya, Anda dapat membuat grup tambalan untuk lingkungan yang berbeda/instance yang diberi tag seperti pengembangan, pengujian, dan produksi. Saya akan menunjukkan kepada Anda bagaimana Anda dapat menginstal tambalan secara teratur dengan menjadwalkan tambalan untuk dijalankan sebagai tugas Pemeliharaan Windows. Jangan khawatir, pada akhir blog ini Anda akan memiliki pemahaman yang baik tentang apa yang ditunjukkan pada diagram berikut.

Dalam posting blog ini, saya akan menunjukkan cara menjalankan Patch Manager di konsol, dan kemudian ikuti dengan cara menggunakan perintah CLI untuk melakukan hal yang sama. Untuk menggunakan konsol AWS Systems Manager, Anda memerlukan Akun AWS sehingga Anda dapat memanfaatkan layanan AWS yang tersedia.

Di AWS Management Console, buka konsol AWS Systems Manager dengan memilih Layanan di menu atas (1), lalu mulai ketik konsol layanan yang Anda inginkan di bilah pencarian (2).

Menggunakan garis dasar tambalan

SEBUAH tambalan dasar menentukan tambalan mana yang harus dan tidak boleh diinstal pada instans Anda. Anda dapat menentukan patch yang disetujui atau ditolak satu per satu, atau Anda dapat menggunakan aturan persetujuan otomatis untuk menentukan bahwa jenis pembaruan tertentu (misalnya, pembaruan penting), harus secara otomatis disetujui untuk ditambal.

Patch Manager memiliki baseline patch yang telah ditentukan sebelumnya yang menyetujui semua patch yang diklasifikasikan sebagai pembaruan kritis atau pembaruan keamanan dengan tingkat keparahan Kritis atau Penting. Patch ini secara otomatis disetujui oleh baseline ini tujuh hari setelah dirilis oleh Microsoft.

Membuat garis dasar tambalan

Anda dapat membuat baseline patch kustom Anda sendiri, di sini Anda dapat memilih patch mana yang akan disetujui secara otomatis dengan menggunakan kategori berikut.

  • Sistem operasi: Windows, Amazon Linux, Server Ubuntu, dll.
  • Nama produk: Misalnya, RHEL 6.5, Amazon Linux 2014.09, Windows Server 2012, Windows Server 2012 R2, dll.
  • Klasifikasi: Misalnya, pembaruan kritis, pembaruan keamanan, dll.
  • Keparahan: Misalnya, kritis, penting, dll.

Untuk setiap aturan persetujuan otomatis yang Anda buat, Anda dapat menentukan penundaan persetujuan otomatis. Penundaan ini adalah jumlah hari untuk menunggu setelah patch dirilis, sebelum patch secara otomatis disetujui untuk ditambal.Misalnya, jika Anda membuat aturan menggunakan klasifikasi Pembaruan Kritis dan mengonfigurasinya selama lima hari penundaan persetujuan otomatis, maka patch kritis baru yang dirilis pada 1 Januari akan secara otomatis disetujui pada 6 Januari.

Menetapkan garis dasar sebagai default

Secara default, patch baseline yang telah ditentukan sebelumnya yang dikirimkan bersama Patch Manager ditetapkan sebagai baseline patch default. Namun, Anda dapat menentukan garis dasar patch Anda sendiri sebagai default.

Pendekatan multi-patch

Dengan menggunakan beberapa baseline patch dengan penundaan persetujuan otomatis yang berbeda, Anda dapat menerapkan patch pada tingkat yang berbeda untuk instance yang berbeda. Misalnya, Anda dapat membuat garis dasar patch terpisah dan penundaan persetujuan otomatis untuk lingkungan pengembangan dan produksi. Ini memungkinkan Anda untuk menguji patch di lingkungan pengembangan Anda sebelum diterapkan di lingkungan produksi Anda. Gunakan perintah CLI berikut:

Grup tambalan

SEBUAH kelompok tambalan adalah cara opsional untuk menentukan garis dasar patch mana yang harus digunakan untuk instance apa. Misalnya, Anda dapat membuat grup tambalan untuk lingkungan yang berbeda seperti pengembangan, pengujian, dan produksi. Anda juga dapat membuat pengelompokan klaster failover primer dan sekunder . Grup patch dapat dibuat berdasarkan fungsi server, misalnya server web dan database. Grup tambalan dapat membantu Anda menghindari penerapan tambalan ke rangkaian instans yang salah.

Setelah Anda membuka konsol AWS Systems Manager, pilih Manajer Patch dari menu kiri. Grup tambalan harus ditentukan dengan kunci tag Grup Patch. Dalam contoh yang mengikuti contoh yang ingin kami tambal sebagai grup tambalan telah ditandai dengan Server Front-End. Armada instans yang memiliki tag ini dapat ditambal menggunakan pendekatan ini.

Perintah CLI:

Jendela Pemeliharaan

AWS Systems Manager Maintenance Windows memungkinkan Anda menentukan jadwal kapan harus melakukan tindakan yang berpotensi mengganggu pada instans Anda seperti menambal sistem operasi (OS), memperbarui driver, atau menginstal perangkat lunak. Setiap Jendela Pemeliharaan memiliki jadwal, durasi, satu set target terdaftar, dan satu set tugas terdaftar. Biasanya Anda ingin menerapkan tambalan Anda pada saat ada dampak paling kecil pada organisasi Anda.

1. Di konsol AWS Systems Manager, buka Buat jendela pemeliharaan halaman untuk membuat jendela pemeliharaan dengan jadwal operasi penambalan Anda.

1) Durasi: Durasi Jendela Pemeliharaan dalam jam.

2) Hentikan tugas inisialisasi (cutoff): Jumlah jam sebelum akhir Jendela Pemeliharaan dimana Manajer Sistem berhenti menjadwalkan tugas baru untuk dieksekusi.

Perintah CLI:

2. Pada Daftarkan target halaman di konsol, buat target pendaftaran untuk . Anda Pemeliharaan jendela dengan menentukan Grup Patch tag untuk nama tag, dan nilai apa pun yang telah Anda tentukan tag EC2, (dalam contoh kami adalah Server Front-End). Anda tidak harus menargetkan berdasarkan grup tambalan, sebagai gantinya dapat menggunakan tag apa pun yang ditentukan untuk instans Anda, sepenuhnya independen dari Grup Patch menandai. Kasus penggunaan yang umum adalah bahwa Anda mungkin memiliki garis dasar patch untuk server web yang dapat diakses publik yang Anda gunakan untuk semua server web yang menghadap internet, tetapi Anda memiliki banyak aplikasi berbeda sehingga Anda mungkin ingin membuat target untuk server web untuk salah satu aplikasi ini .

Perintah CLI:

3. Di panel tugas Daftarkan di konsol, lakukan tugas berikut.

1) Rincian tugas Jendela Pemeliharaan: tambahkan, nama dan deskripsi.

2) Jalankan Perintah dokumen untuk tugas ini adalah AWS-RunPatchBaseline. Anda dapat memilih untuk memindai instans atau memindai dan menambal instans. Jika Anda memilih untuk memindai instans, maka Patch Manager akan memindai setiap instans dan membuat daftar tambalan yang hilang untuk Anda tinjau. Perhatikan bahwa AWS-RunPatchBaseline adalah lintas platform dan bekerja untuk Windows dan Linux.

3) Isilah Versi Dokumen untuk menggunakan dan Prioritas Tugas yang menentukan urutan tugas dijalankan, saat banyak tugas didaftarkan.

4) ID Target Windows adalah grup tambalan yang ditentukan sebelumnya.

5) Untuk Kontrol Tarif:

Saya. Konkurensi: Jumlah maksimum target yang diizinkan untuk menjalankan tugas ini secara paralel. Anda dapat menentukan angka, seperti 10, atau persentase, seperti 10%. Nilai defaultnya adalah 10.

ii. Ambang Kesalahan: Jumlah kesalahan yang diperbolehkan sebelum sistem berhenti menjalankan otomatisasi pada target tambahan. Anda dapat menentukan jumlah absolut kesalahan, misalnya 10, atau persentase dari target yang ditetapkan, misalnya 10%.

6) Peran IAM yang memiliki AmazonSSMMaintenanceWindowRole kebijakan yang melekat padanya, untuk melakukan patch pada target terdaftar. Silakan merujuk ke tautan berikut untuk panduan tentang cara mengonfigurasi peran untuk Pemeliharaan Windows.

7) Parameter Masukan: Ini adalah parameter yang diteruskan ke yang dipilih Jalankan Perintah dokumen pada langkah 2.

Perintah CLI:

Memantau kepatuhan tambalan

Anda dapat melihat hasil dan menambal detail kepatuhan di Instance Terkelola halaman dengan memilih Inventaris tab dan pemfilteran oleh AWS: Ringkasan Patch dan AWS: PatchCompliance. Perhatikan bahwa Kepatuhan konfigurasi memberikan tampilan tingkat tinggi gabungan dari kepatuhan tambalan dari mana Anda dapat menyelam lebih dalam ke detail kepatuhan. Anda juga dapat meninjau contoh tertentu dengan memilih contoh dan kemudian memilih tambalan tab.

Kesimpulan

Dalam posting blog ini saya membahas aspek-aspek utama menggunakan AWS Systems Manager Patch Manager. Saya mulai dengan menunjukkan kepada Anda cara membuat patch baseline yang menentukan patch mana yang harus dan tidak boleh diinstal pada instance Anda. Setelah Anda menentukan baseline, saya menunjukkan cara mengontrol penerapan baseline ini untuk menambal grup untuk lingkungan yang berbeda seperti pengembangan, pengujian, dan produksi. Terakhir, saya menunjukkan kepada Anda cara meminimalkan dampak terhadap organisasi Anda dengan menggunakan Jendela Pemeliharaan dan menjadwalkan peluncuran tambalan.

Saya mendorong Anda untuk menggunakan apa yang telah Anda pelajari di sini dan mempertimbangkan untuk memanfaatkan sumber daya AWS Systems Manager di organisasi Anda sendiri. Anda mungkin mulai dengan menggunakan Patch Manager di sebagian kecil organisasi untuk menunjukkan bukti konsep kepada rekan-rekan Anda. Saya menyambut komentar atau pertanyaan Anda.

Tentang Penulis

Stefan Minhas adalah konsultan senior di Amazon Web Services. Dia adalah ahli materi pelajaran di Global Microsoft Specialty Practice, dan bekerja untuk memberikan bimbingan dan bantuan teknis dalam pengembangan dan pertumbuhan keterampilan khusus di seluruh komunitas Layanan Profesional yang lebih luas.


Menggunakan jaring saraf untuk mengenali angka tulisan tangan

Jika Anda mendapat manfaat dari buku ini, silakan berikan sumbangan kecil. Saya menyarankan $5, tetapi Anda dapat memilih jumlahnya.

Sebagai alternatif, Anda dapat memberikan donasi dengan mengirimkan saya Bitcoin, di alamat 1Kd6tXH5SDAmiFb49J9hknG5pqj7KStSAx

Jika Anda mendapat manfaat dari buku ini, silakan berikan sumbangan kecil. Saya menyarankan $3, tetapi Anda dapat memilih jumlahnya.


Terima kasih kepada semua pendukung yang membuat buku ini terwujud, dengan terima kasih khusus kepada Pavel Dudrenov. Terima kasih juga kepada semua kontributor untuk Bugfinder Hall of Fame.

Deep Learning, buku oleh Ian Goodfellow, Yoshua Bengio, dan Aaron Courville

Sistem visual manusia adalah salah satu keajaiban dunia. Perhatikan urutan angka tulisan tangan berikut:

Kebanyakan orang dengan mudah mengenali angka-angka itu sebagai 504192. Kemudahan itu menipu. Di setiap belahan otak kita, manusia memiliki korteks visual primer, juga dikenal sebagai V1, mengandung 140 juta neuron, dengan puluhan miliar koneksi di antara mereka. Namun penglihatan manusia tidak hanya melibatkan V1, tetapi seluruh rangkaian korteks visual - V2, V3, V4, dan V5 - melakukan pemrosesan gambar yang semakin kompleks. Kami membawa di kepala kami sebuah superkomputer, disetel oleh evolusi selama ratusan juta tahun, dan disesuaikan dengan luar biasa untuk memahami dunia visual. Mengenali angka tulisan tangan tidaklah mudah. Sebaliknya, kita manusia luar biasa, sangat pandai memahami apa yang ditunjukkan mata kita kepada kita. Tetapi hampir semua pekerjaan itu dilakukan secara tidak sadar. Jadi kami biasanya tidak menghargai seberapa sulit masalah yang dipecahkan oleh sistem visual kami.

Kesulitan pengenalan pola visual menjadi jelas jika Anda mencoba menulis program komputer untuk mengenali angka seperti di atas. Apa yang tampak mudah ketika kita melakukannya sendiri tiba-tiba menjadi sangat sulit. Intuisi sederhana tentang bagaimana kita mengenali bentuk - "a 9 memiliki lingkaran di atas, dan goresan vertikal di kanan bawah" - ternyata tidak begitu sederhana untuk diungkapkan secara algoritmik. Ketika Anda mencoba untuk membuat aturan tersebut tepat, Anda dengan cepat tersesat dalam rawa pengecualian dan peringatan dan kasus-kasus khusus. Tampaknya putus asa.

Jaringan saraf mendekati masalah dengan cara yang berbeda. Idenya adalah untuk mengambil sejumlah besar angka tulisan tangan, yang dikenal sebagai contoh pelatihan,

dan kemudian mengembangkan sistem yang dapat belajar dari contoh-contoh pelatihan tersebut. Dengan kata lain, jaringan saraf menggunakan contoh untuk secara otomatis menyimpulkan aturan untuk mengenali angka tulisan tangan. Selanjutnya, dengan meningkatkan jumlah contoh pelatihan, jaringan dapat mempelajari lebih lanjut tentang tulisan tangan, dan dengan demikian meningkatkan akurasinya. Jadi sementara saya hanya menunjukkan 100 angka pelatihan di atas, mungkin kita bisa membuat pengenal tulisan tangan yang lebih baik dengan menggunakan ribuan atau bahkan jutaan atau miliaran contoh pelatihan.

Dalam bab ini kita akan menulis program komputer yang mengimplementasikan jaringan saraf yang belajar mengenali angka tulisan tangan. Program ini hanya sepanjang 74 baris, dan tidak menggunakan pustaka jaringan saraf khusus. Namun program singkat ini dapat mengenali angka dengan akurasi lebih dari 96 persen, tanpa campur tangan manusia. Selanjutnya, dalam bab-bab selanjutnya kita akan mengembangkan ide-ide yang dapat meningkatkan akurasi hingga lebih dari 99 persen. Faktanya, jaringan saraf komersial terbaik sekarang sangat bagus sehingga digunakan oleh bank untuk memproses cek, dan oleh kantor pos untuk mengenali alamat.

Kami berfokus pada pengenalan tulisan tangan karena ini merupakan masalah prototipe yang sangat baik untuk mempelajari tentang jaringan saraf secara umum. Sebagai prototipe, ia menyentuh titik manis: itu menantang - bukan prestasi kecil untuk mengenali angka tulisan tangan - tetapi tidak begitu sulit untuk membutuhkan solusi yang sangat rumit, atau kekuatan komputasi yang luar biasa. Selain itu, ini adalah cara yang bagus untuk mengembangkan teknik yang lebih maju, seperti pembelajaran mendalam. Jadi di sepanjang buku ini kita akan berulang kali kembali ke masalah pengenalan tulisan tangan. Nanti di buku ini, kita akan membahas bagaimana ide-ide ini dapat diterapkan pada masalah lain dalam visi komputer, dan juga dalam pidato, pemrosesan bahasa alami, dan domain lainnya.

Tentu saja, jika inti dari bab ini hanya untuk menulis program komputer untuk mengenali angka tulisan tangan, maka bab tersebut akan jauh lebih pendek! Tapi di sepanjang jalan kita akan mengembangkan banyak ide kunci tentang jaringan saraf, termasuk dua jenis penting dari neuron buatan (perceptron dan neuron sigmoid), dan algoritma pembelajaran standar untuk jaringan saraf, yang dikenal sebagai penurunan gradien stokastik. Sepanjang, saya fokus untuk menjelaskan mengapa hal-hal dilakukan sebagaimana adanya, dan membangun intuisi jaringan saraf Anda. Itu membutuhkan diskusi yang lebih panjang daripada jika saya hanya mempresentasikan mekanisme dasar dari apa yang terjadi, tetapi itu layak untuk pemahaman yang lebih dalam yang akan Anda capai. Di antara hasilnya, pada akhir bab ini kita akan berada dalam posisi untuk memahami apa itu deep learning, dan mengapa itu penting.

Perceptron

Apa itu jaringan saraf? Untuk memulai, saya akan menjelaskan jenis neuron buatan yang disebut a persepsi. Perceptrons dikembangkan pada 1950-an dan 1960-an oleh ilmuwan Frank Rosenblatt, terinspirasi oleh karya sebelumnya oleh Warren McCulloch dan Walter Pitts. Saat ini, lebih umum menggunakan model neuron buatan lainnya - dalam buku ini, dan dalam banyak pekerjaan modern pada jaringan saraf, model neuron utama yang digunakan adalah model yang disebut neuron sigmoid. Kita akan segera sampai ke neuron sigmoid. Tetapi untuk memahami mengapa neuron sigmoid didefinisikan sebagaimana adanya, ada baiknya meluangkan waktu untuk memahami perceptron terlebih dahulu.

Jadi bagaimana cara kerja perceptron? Perceptron mengambil beberapa input biner, $x_1, x_2, ldots$, dan menghasilkan satu output biner: Dalam contoh yang ditunjukkan, perceptron memiliki tiga input, $x_1, x_2, x_3$. Secara umum itu bisa memiliki lebih banyak atau lebih sedikit input. Rosenblatt mengusulkan aturan sederhana untuk menghitung output. Dia memperkenalkan beban, $w_1,w_2,ldots$, bilangan real yang menyatakan pentingnya masing-masing input terhadap output. Output neuron, $ atau $1$, ditentukan oleh apakah jumlah bobot $sum_j w_j x_j$ lebih kecil atau lebih besar dari beberapa nilai ambang. Sama seperti bobot, threshold adalah bilangan real yang merupakan parameter dari neuron. Untuk memasukkannya ke dalam istilah aljabar yang lebih tepat: egin mbox & = & kiri< egin 0 & mbox sum_j w_j x_j leq mbox < threshold> 1 & mbox sum_j w_j x_j > mbox < threshold>end Baik. ag<1>end Itu saja cara kerja perceptron!

  1. Apakah cuacanya bagus?
  2. Apakah pacar Anda ingin menemani Anda?
  3. Apakah festival ini dekat dengan transportasi umum? (Anda tidak memiliki mobil).

Sekarang, misalkan Anda sangat menyukai keju, sehingga Anda senang pergi ke festival bahkan jika pacar Anda tidak tertarik dan festival itu sulit dicapai. Tapi mungkin Anda sangat membenci cuaca buruk, dan tidak mungkin Anda pergi ke festival jika cuacanya buruk. Anda dapat menggunakan perceptron untuk memodelkan pengambilan keputusan semacam ini. Salah satu cara untuk melakukannya adalah dengan memilih bobot $w_1 = 6$ untuk cuaca, dan $w_2 = 2$ dan $w_3 = 2$ untuk kondisi lainnya. Nilai $w_1$ yang lebih besar menunjukkan bahwa cuaca sangat penting bagi Anda, lebih dari apakah pacar Anda bergabung dengan Anda, atau dekat dengan angkutan umum. Terakhir, misalkan Anda memilih ambang $5$ untuk perceptron. Dengan pilihan ini, perceptron mengimplementasikan model pengambilan keputusan yang diinginkan, mengeluarkan $1 saat cuaca baik, dan $ saat cuaca buruk. Tidak ada bedanya output apakah pacar Anda ingin pergi, atau apakah angkutan umum dekat.

Dengan memvariasikan bobot dan ambang batas, kita bisa mendapatkan model pengambilan keputusan yang berbeda. Misalnya, kita memilih ambang $3$. Kemudian perceptron akan memutuskan bahwa Anda harus pergi ke festival kapan pun cuacanya bagus atau ketika kedua festival itu dekat angkutan umum dan pacar Anda bersedia untuk bergabung dengan Anda. Dengan kata lain, itu akan menjadi model pengambilan keputusan yang berbeda. Menjatuhkan ambang batas berarti Anda lebih bersedia untuk pergi ke festival.

Jelas, perceptron bukanlah model pengambilan keputusan manusia yang lengkap! Tetapi apa yang diilustrasikan oleh contoh tersebut adalah bagaimana seorang perceptron dapat menimbang berbagai jenis bukti untuk membuat keputusan. Dan tampaknya masuk akal bahwa jaringan perceptron yang kompleks dapat membuat keputusan yang cukup halus: Di jaringan ini, kolom pertama perceptron - apa yang akan kita sebut yang pertama lapisan perceptrons - membuat tiga keputusan yang sangat sederhana, dengan menimbang bukti masukan. Bagaimana dengan perceptron di lapisan kedua? Masing-masing perceptron tersebut membuat keputusan dengan menimbang hasil dari pengambilan keputusan lapisan pertama. Dengan cara ini perceptron di lapisan kedua dapat membuat keputusan pada tingkat yang lebih kompleks dan lebih abstrak daripada perceptron di lapisan pertama. Dan bahkan keputusan yang lebih kompleks dapat dibuat oleh perceptron di lapisan ketiga. Dengan cara ini, banyak lapisan jaringan perceptron dapat terlibat dalam pengambilan keputusan yang canggih.

Kebetulan, ketika saya mendefinisikan perceptron, saya mengatakan bahwa perceptron hanya memiliki satu output. Dalam jaringan di atas, perceptron terlihat seperti memiliki banyak output. Bahkan, mereka masih single output. Panah keluaran ganda hanyalah cara yang berguna untuk menunjukkan bahwa keluaran dari perceptron sedang digunakan sebagai masukan ke beberapa perceptron lainnya. Ini kurang berat daripada menggambar satu jalur output yang kemudian terbelah.

Mari kita sederhanakan cara kita mendeskripsikan perceptron. Kondisi $sum_j w_j x_j > mbox$ rumit, dan kita dapat membuat dua perubahan notasi untuk menyederhanakannya. Perubahan pertama adalah menulis $sum_j w_j x_j$ sebagai produk titik, $w cdot x equiv sum_j w_j x_j$, di mana $w$ dan $x$ adalah vektor yang komponennya masing-masing adalah bobot dan input. Perubahan kedua adalah memindahkan ambang batas ke sisi lain ketidaksetaraan, dan menggantinya dengan apa yang dikenal sebagai perceptron's bias, $b equiv -mbox$. Menggunakan bias alih-alih ambang batas, aturan perceptron dapat ditulis ulang: egin mbox = kiri< egin 0 & mbox wcdot x + b leq 0 1 & mbox wcdot x + b > 0 end Baik. ag<2>end Anda dapat menganggap bias sebagai ukuran betapa mudahnya membuat perceptron mengeluarkan $1$. Atau untuk memasukkannya ke dalam istilah yang lebih biologis, bias adalah ukuran seberapa mudah untuk mendapatkan perceptron untuk api. Untuk perceptron dengan bias yang sangat besar, sangat mudah bagi perceptron untuk menghasilkan $1$. Tetapi jika biasnya sangat negatif, maka sulit bagi perceptron untuk mengeluarkan $1$. Jelas, memperkenalkan bias hanyalah perubahan kecil dalam cara kita menggambarkan perceptron, tetapi kita akan melihat nanti bahwa itu mengarah ke penyederhanaan notasi lebih lanjut. Karena itu, di sisa buku ini kami tidak akan menggunakan ambang batas, kami akan selalu menggunakan bias.

Saya telah menggambarkan perceptrons sebagai metode untuk menimbang bukti untuk membuat keputusan. Cara lain perceptron dapat digunakan adalah menghitung fungsi logika dasar yang biasanya kita anggap sebagai komputasi dasar, fungsi seperti AND , OR , dan NAND . Misalnya, kita memiliki perceptron dengan dua input, masing-masing dengan bobot $-2$, dan bias keseluruhan $3$. Inilah perceptron kami: Kemudian kita melihat bahwa input $ menghasilkan output $1$, karena $(-2)*0+(-2)*0+3 = 3$ adalah positif. Di sini, saya telah memperkenalkan simbol $*$ untuk membuat perkalian menjadi eksplisit. Perhitungan serupa menunjukkan bahwa input $01$ dan $10$ menghasilkan output $1$. Tetapi input $11$ menghasilkan output $, karena $(-2)*1+(-2)*1+3 = -1$ negatif. Dan perceptron kami mengimplementasikan gerbang NAND!

Contoh NAND menunjukkan bahwa kita dapat menggunakan perceptron untuk menghitung fungsi logika sederhana. Faktanya, kita dapat menggunakan jaringan perceptron untuk menghitung setiap fungsi logika sama sekali. Alasannya adalah bahwa gerbang NAND bersifat universal untuk komputasi, yaitu, kita dapat membangun komputasi apa pun dari gerbang NAND. Misalnya, kita dapat menggunakan gerbang NAND untuk membangun sirkuit yang menambahkan dua bit, $x_1$ dan $x_2$.Ini memerlukan penghitungan jumlah bit, $x_1 oplus x_2$, serta bit carry yang disetel ke $1$ ketika $x_1$ dan $x_2$ keduanya $1$, yaitu, bit carry hanyalah produk bitwise $ x_1 x_2$: Untuk mendapatkan jaringan perceptron yang setara, kami mengganti semua gerbang NAND dengan perceptron dengan dua input, masing-masing dengan bobot $-2$, dan bias keseluruhan $3$. Berikut jaringan yang dihasilkan. Perhatikan bahwa saya telah sedikit memindahkan perceptron yang sesuai dengan gerbang NAND kanan bawah, hanya untuk mempermudah menggambar panah pada diagram: Salah satu aspek penting dari jaringan perceptron ini adalah bahwa output dari perceptron paling kiri digunakan dua kali sebagai input ke perceptron paling bawah. Ketika saya mendefinisikan model perceptron, saya tidak mengatakan apakah output ganda-ke-tempat yang sama seperti ini diperbolehkan. Sebenarnya, itu tidak terlalu penting. Jika kita tidak ingin hal seperti ini, maka cukup menggabungkan dua baris, menjadi satu koneksi dengan bobot -4 alih-alih dua koneksi dengan bobot -2. (Jika Anda tidak menemukan ini jelas, Anda harus berhenti dan membuktikan kepada diri sendiri bahwa ini setara.) Dengan perubahan itu, jaringan terlihat sebagai berikut, dengan semua bobot yang tidak ditandai sama dengan -2, semua bias sama dengan 3, dan a berat tunggal -4, seperti yang ditandai: Sampai sekarang saya telah menggambar input seperti $x_1$ dan $x_2$ sebagai variabel yang mengambang di sebelah kiri jaringan perceptron. Faktanya, menggambar lapisan perceptron tambahan adalah hal yang biasa - the lapisan masukan - untuk mengkodekan input: Notasi ini untuk perceptron input, di mana kita memiliki output, tetapi tidak ada input, adalah singkatan. Itu tidak benar-benar berarti perceptron tanpa input. Untuk melihat ini, misalkan kita memiliki perceptron tanpa input. Kemudian jumlah terbobot $sum_j w_j x_j$ akan selalu nol, dan perceptron akan menghasilkan $1$ jika $b > 0$, dan $ jika $b leq 0$. Artinya, perceptron hanya akan menampilkan nilai tetap, bukan nilai yang diinginkan ($x_1$, dalam contoh di atas). Lebih baik menganggap perceptron input tidak benar-benar perceptron sama sekali, melainkan unit khusus yang hanya didefinisikan untuk menampilkan nilai yang diinginkan, $x_1, x_2,ldots$.

Contoh penambah menunjukkan bagaimana jaringan perceptron dapat digunakan untuk mensimulasikan rangkaian yang berisi banyak gerbang NAND. Dan karena gerbang NAND bersifat universal untuk komputasi, maka perceptron juga universal untuk komputasi.

Universalitas komputasi perceptrons secara bersamaan meyakinkan dan mengecewakan. Ini meyakinkan karena memberi tahu kita bahwa jaringan perceptron bisa sekuat perangkat komputasi lainnya. Tapi itu juga mengecewakan, karena membuatnya seolah-olah perceptron hanyalah tipe baru dari gerbang NAND. Itu bukan berita besar!

Namun, situasinya lebih baik daripada yang disarankan oleh pandangan ini. Ternyata kita bisa merancang algoritma pembelajaran yang secara otomatis dapat menyesuaikan bobot dan bias jaringan neuron buatan. Penyetelan ini terjadi sebagai respons terhadap rangsangan eksternal, tanpa intervensi langsung oleh seorang programmer. Algoritma pembelajaran ini memungkinkan kita untuk menggunakan neuron buatan dengan cara yang sangat berbeda dengan gerbang logika konvensional. Alih-alih secara eksplisit meletakkan sirkuit NAND dan gerbang lainnya, jaringan saraf kita dapat dengan mudah belajar memecahkan masalah, terkadang masalah di mana akan sangat sulit untuk merancang sirkuit konvensional secara langsung.

Neuron sigmoid

Belajar algoritma terdengar hebat. Tapi bagaimana kita bisa merancang algoritma seperti itu untuk jaringan saraf? Misalkan kita memiliki jaringan perceptron yang ingin kita gunakan untuk belajar memecahkan beberapa masalah. Misalnya, input ke jaringan mungkin berupa data piksel mentah dari gambar digit yang dipindai dan ditulis tangan. Dan kami ingin jaringan mempelajari bobot dan bias sehingga output dari jaringan mengklasifikasikan digit dengan benar. Untuk melihat bagaimana pembelajaran dapat bekerja, misalkan kita membuat perubahan kecil dalam beberapa bobot (atau bias) dalam jaringan. Apa yang kami inginkan adalah perubahan kecil dalam berat ini hanya menyebabkan perubahan kecil yang sesuai pada output dari jaringan. Seperti yang akan kita lihat sebentar lagi, properti ini akan memungkinkan pembelajaran. Secara skematis, inilah yang kami inginkan (jelas jaringan ini terlalu sederhana untuk melakukan pengenalan tulisan tangan!):

Jika benar bahwa perubahan kecil pada bobot (atau bias) hanya menyebabkan perubahan kecil pada output, maka kita dapat menggunakan fakta ini untuk memodifikasi bobot dan bias agar jaringan kita berperilaku lebih seperti yang kita inginkan. Misalnya, jaringan salah mengklasifikasikan gambar sebagai "8" padahal seharusnya "9". Kita bisa mencari cara untuk membuat perubahan kecil pada bobot dan bias sehingga jaringan menjadi sedikit lebih dekat untuk mengklasifikasikan gambar sebagai "9". Dan kemudian kami akan mengulangi ini, mengubah bobot dan bias berulang-ulang untuk menghasilkan keluaran yang lebih baik dan lebih baik. Jaringan akan belajar.

Masalahnya bukan ini yang terjadi ketika jaringan kita berisi perceptron. Faktanya, perubahan kecil pada bobot atau bias dari setiap perceptron tunggal dalam jaringan terkadang dapat menyebabkan output dari perceptron tersebut berubah total, katakanlah dari $ menjadi $1$. Flip itu kemudian dapat menyebabkan perilaku jaringan lainnya berubah sepenuhnya dalam beberapa cara yang sangat rumit. Jadi, sementara "9" Anda sekarang mungkin diklasifikasikan dengan benar, perilaku jaringan pada semua gambar lain kemungkinan besar telah sepenuhnya berubah dengan cara yang sulit dikendalikan. Itu membuat sulit untuk melihat bagaimana memodifikasi bobot dan bias secara bertahap sehingga jaringan semakin mendekati perilaku yang diinginkan. Mungkin ada cara cerdas untuk mengatasi masalah ini. Tetapi tidak segera jelas bagaimana kita bisa mendapatkan jaringan perceptron untuk dipelajari.

Kita dapat mengatasi masalah ini dengan memperkenalkan jenis baru neuron buatan yang disebut a sigmoid saraf. Neuron sigmoid mirip dengan perceptron, tetapi dimodifikasi sehingga perubahan kecil pada bobot dan biasnya hanya menyebabkan perubahan kecil pada outputnya. Itulah fakta penting yang akan memungkinkan jaringan neuron sigmoid untuk belajar.

Oke, izinkan saya menjelaskan neuron sigmoid. Kami akan menggambarkan neuron sigmoid dengan cara yang sama seperti kami menggambarkan perceptron: Sama seperti perceptron, neuron sigmoid memiliki input, $x_1, x_2, ldots$. Tapi alih-alih hanya $ atau $1$, input ini juga dapat mengambil nilai apa pun di antara $ dan $1$. Jadi, misalnya, .638ldots$ adalah input yang valid untuk neuron sigmoid. Sama seperti perceptron, neuron sigmoid memiliki bobot untuk setiap input, $w_1, w_2, ldots$, dan bias keseluruhan, $b$. Tapi outputnya bukan $ atau $1$. Sebaliknya, itu $sigma(w cdot x+b)$, di mana $sigma$ disebut fungsi sigmoid* *Kebetulan, $sigma$ kadang-kadang disebut fungsi logistik, dan kelas neuron baru ini disebut neuron logistik. Terminologi ini berguna untuk diingat, karena istilah ini digunakan oleh banyak orang yang bekerja dengan jaringan saraf. Namun, kami akan tetap menggunakan terminologi sigmoid. , dan didefinisikan oleh: egin sigma(z) equiv frac<1><1+e^<-z>>. ag<3>end Secara lebih eksplisit, output dari neuron sigmoid dengan input $x_1,x_2,ldots$, bobot $w_1,w_2,ldots$, dan bias $b$ adalah egin frac<1><1+exp(-sum_j w_j x_j-b)>. ag<4>end

Pada pandangan pertama, neuron sigmoid tampak sangat berbeda dengan perceptron. Bentuk aljabar dari fungsi sigmoid mungkin tampak buram dan menakutkan jika Anda belum terbiasa dengannya. Faktanya, ada banyak kesamaan antara perceptrons dan neuron sigmoid, dan bentuk aljabar dari fungsi sigmoid ternyata lebih merupakan detail teknis daripada penghalang pemahaman yang sebenarnya.

Untuk memahami kemiripan dengan model perceptron, misalkan $z equiv w cdot x + b$ adalah bilangan positif yang besar. Kemudian $e^ <-z>kira-kira 0$ dan $sigma(z) kira-kira 1$. Dengan kata lain, ketika $z = w cdot x+b$ besar dan positif, output dari neuron sigmoid kira-kira $1$, seperti yang terjadi pada perceptron. Misalkan sebaliknya bahwa $z = w cdot x+b$ sangat negatif. Kemudian $e^ <-z> ightarrow infty$, dan $sigma(z) kira-kira 0$. Jadi ketika $z = w cdot x +b$ sangat negatif, perilaku neuron sigmoid juga mendekati perceptron. Hanya ketika $w cdot x+b$ berukuran sedang, ada banyak penyimpangan dari model perceptron.

Bagaimana dengan bentuk aljabar $sigma$? Bagaimana kita bisa memahami itu? Sebenarnya, bentuk pasti dari $sigma$ tidak begitu penting - yang terpenting adalah bentuk fungsi ketika diplot. Berikut bentuknya:

Bentuk ini adalah versi halus dari fungsi langkah:

Jika $sigma$ sebenarnya merupakan fungsi langkah, maka neuron sigmoid akan menjadi sebuah perceptron, karena output akan menjadi $1$ atau $ tergantung pada apakah $wcdot x+b$ positif atau negatif* *Sebenarnya, ketika $w cdot x +b = 0$ perceptron mengeluarkan $, sedangkan langkah fungsi menghasilkan $1$. Jadi, sebenarnya, kita perlu memodifikasi fungsi langkah pada satu titik itu. Tapi Anda mendapatkan ide. . Dengan menggunakan fungsi $sigma$ aktual, kita mendapatkan, seperti yang sudah tersirat di atas, perceptron yang dihaluskan. Memang, kelancaran fungsi $sigma$ adalah fakta penting, bukan bentuk detailnya. Kehalusan $sigma$ berarti bahwa perubahan kecil $Delta w_j$ pada bobot dan $Delta b$ pada bias akan menghasilkan perubahan kecil $Delta mbox$ dalam output dari neuron. Faktanya, kalkulus memberitahu kita bahwa $Delta mbox$ didekati dengan baik oleh egin Delta mbox kira-kira sum_j frac> Delta w_j + frac> Delta b, ag<5>end di mana jumlahnya melebihi semua bobot, $w_j$, dan $partial , mbox / partial w_j$ dan $partial , mbox /partial b$ menunjukkan turunan parsial dari $mbox$ sehubungan dengan $w_j$ dan $b$, masing-masing. Jangan panik jika Anda tidak nyaman dengan turunan parsial! Meskipun ekspresi di atas terlihat rumit, dengan semua turunan parsial, sebenarnya ekspresi tersebut mengatakan sesuatu yang sangat sederhana (dan merupakan kabar baik): $Delta mbox$ adalah fungsi linear dari perubahan $Delta w_j$ dan $Delta b$ dalam bobot dan bias. Linearitas ini memudahkan untuk memilih perubahan kecil dalam bobot dan bias untuk mencapai perubahan kecil yang diinginkan dalam output. Jadi sementara neuron sigmoid memiliki banyak perilaku kualitatif yang sama dengan perceptron, mereka membuatnya lebih mudah untuk mengetahui bagaimana mengubah bobot dan bias akan mengubah output.

Bagaimana seharusnya kita menginterpretasikan output dari neuron sigmoid? Jelas, satu perbedaan besar antara perceptrons dan neuron sigmoid adalah bahwa neuron sigmoid tidak hanya menghasilkan $ atau $1$. Mereka dapat memiliki keluaran bilangan real apa pun antara $ dan $1$, sehingga nilai seperti .173ldots$ dan .689ldots$ adalah keluaran yang sah. Ini bisa berguna, misalnya, jika kita ingin menggunakan nilai output untuk mewakili intensitas rata-rata piksel dalam input gambar ke jaringan saraf. Tapi terkadang itu bisa menjadi gangguan. Misalkan kita ingin output dari jaringan menunjukkan "gambar input adalah 9" atau "gambar input bukan 9". Jelas, akan lebih mudah untuk melakukan ini jika outputnya adalah $ atau $1$, seperti pada perceptron. Namun dalam praktiknya, kita dapat mengatur konvensi untuk menangani hal ini, misalnya, dengan memutuskan untuk menafsirkan output apa pun setidaknya .5$ sebagai menunjukkan "9", dan output apa pun yang kurang dari .5$ menunjukkan "bukan 9". ". Saya akan selalu secara eksplisit menyatakan ketika kita menggunakan konvensi seperti itu, jadi seharusnya tidak menimbulkan kebingungan.

Latihan

  • Neuron sigmoid yang mensimulasikan perceptron, bagian I $mbox<>$
    Misalkan kita mengambil semua bobot dan bias dalam jaringan perceptron, dan mengalikannya dengan konstanta positif, $c > 0$. Tunjukkan bahwa perilaku jaringan tidak berubah.

Arsitektur jaringan saraf

Pada bagian berikutnya saya akan memperkenalkan jaringan saraf yang dapat melakukan pekerjaan yang cukup baik mengklasifikasikan angka tulisan tangan. Sebagai persiapan untuk itu, ada baiknya menjelaskan beberapa terminologi yang memungkinkan kita memberi nama bagian-bagian berbeda dari jaringan. Misalkan kita memiliki jaringan: Seperti disebutkan sebelumnya, lapisan paling kiri dalam jaringan ini disebut lapisan input, dan neuron di dalam lapisan disebut neuron masukan. paling kanan atau keluaran lapisan berisi neuron keluaran, atau, seperti dalam kasus ini, satu neuron keluaran. Lapisan tengah disebut lapisan tersembunyi, karena neuron pada lapisan ini bukanlah input maupun output. Istilah "tersembunyi" mungkin terdengar agak misterius - pertama kali saya mendengar istilah itu, saya pikir itu pasti memiliki makna filosofis atau matematis yang mendalam - tetapi itu sebenarnya tidak lebih dari "bukan input atau output". Jaringan di atas hanya memiliki satu lapisan tersembunyi, tetapi beberapa jaringan memiliki beberapa lapisan tersembunyi. Misalnya, jaringan empat lapisan berikut memiliki dua lapisan tersembunyi: Agak membingungkan, dan untuk alasan historis, jaringan berlapis ganda seperti itu kadang-kadang disebut multilayer perceptron atau MLP, meskipun terdiri dari neuron sigmoid, bukan perceptron. Saya tidak akan menggunakan terminologi MLP dalam buku ini, karena saya pikir itu membingungkan, tetapi ingin memperingatkan Anda tentang keberadaannya.

Desain lapisan input dan output dalam jaringan seringkali langsung. Misalnya, kita mencoba menentukan apakah gambar tulisan tangan menggambarkan "9" atau tidak. Cara alami untuk mendesain jaringan adalah dengan mengkodekan intensitas piksel gambar ke dalam neuron input. Jika gambar adalah $64$ dengan $64$ gambar skala abu-abu, maka kita akan memiliki $4,096 = 64 imes 64$ neuron masukan, dengan intensitas yang disesuaikan dengan tepat antara $ dan $1$. Lapisan keluaran hanya akan berisi satu neuron, dengan nilai keluaran kurang dari .5$ menunjukkan "gambar masukan bukan 9", dan nilai lebih besar dari .5$ menunjukkan "gambar masukan adalah 9".

Sementara desain lapisan input dan output dari jaringan saraf sering langsung, bisa ada cukup seni untuk desain lapisan tersembunyi. Secara khusus, tidak mungkin untuk meringkas proses desain untuk lapisan tersembunyi dengan beberapa aturan praktis sederhana. Sebaliknya, peneliti jaringan saraf telah mengembangkan banyak desain heuristik untuk lapisan tersembunyi, yang membantu orang mendapatkan perilaku yang mereka inginkan dari jaring mereka. Misalnya, heuristik semacam itu dapat digunakan untuk membantu menentukan bagaimana menukar jumlah lapisan tersembunyi dengan waktu yang dibutuhkan untuk melatih jaringan. Kita akan bertemu beberapa heuristik desain seperti itu nanti dalam buku ini.

Sampai sekarang, kita telah membahas jaringan saraf di mana output dari satu lapisan digunakan sebagai input ke lapisan berikutnya. Jaringan seperti ini disebut umpan maju jaringan saraf. Ini berarti tidak ada loop dalam jaringan - informasi selalu diumpankan ke depan, tidak pernah diumpan balik. Jika kita memiliki loop, kita akan berakhir dengan situasi di mana input ke fungsi $sigma$ bergantung pada output. Itu akan sulit untuk dipahami, jadi kami tidak mengizinkan pengulangan seperti itu.

Namun, ada model lain dari jaringan saraf tiruan di mana loop umpan balik dimungkinkan. Model ini disebut jaringan saraf berulang. Ide dalam model ini adalah untuk memiliki neuron yang menyala untuk beberapa durasi waktu yang terbatas, sebelum menjadi diam. Penembakan itu dapat merangsang neuron lain, yang mungkin menyala beberapa saat kemudian, juga untuk jangka waktu terbatas. Itu menyebabkan lebih banyak neuron yang menyala, dan seiring waktu kita mendapatkan serangkaian neuron yang menembak. Loop tidak menyebabkan masalah dalam model seperti itu, karena output neuron hanya memengaruhi inputnya di lain waktu, tidak secara instan.

Jaring saraf berulang kurang berpengaruh dibandingkan jaringan feedforward, sebagian karena algoritma pembelajaran untuk jaring berulang (setidaknya sampai saat ini) kurang kuat. Tetapi jaringan berulang masih sangat menarik. Mereka jauh lebih dekat dalam semangat dengan cara kerja otak kita daripada jaringan feedforward. Dan mungkin saja jaringan berulang dapat memecahkan masalah penting yang hanya dapat diselesaikan dengan kesulitan besar oleh jaringan feedforward. Namun, untuk membatasi ruang lingkup kami, dalam buku ini kami akan berkonsentrasi pada jaringan feedforward yang lebih banyak digunakan.

Jaringan sederhana untuk mengklasifikasikan angka tulisan tangan

Setelah mendefinisikan jaringan saraf, mari kembali ke pengenalan tulisan tangan. Kita dapat membagi masalah mengenali angka tulisan tangan menjadi dua sub-masalah. Pertama, kami ingin cara memecah gambar yang berisi banyak digit menjadi urutan gambar terpisah, masing-masing berisi satu digit. Misalnya, kami ingin memecahkan gambar

Kita manusia memecahkan ini masalah segmentasi dengan mudah, tetapi sulit bagi program komputer untuk memecah gambar dengan benar. Setelah gambar tersegmentasi, program kemudian perlu mengklasifikasikan setiap digit individu. Jadi, misalnya, kami ingin program kami mengenali bahwa digit pertama di atas,

Kami akan fokus pada penulisan program untuk memecahkan masalah kedua, yaitu mengklasifikasikan masing-masing digit. Kami melakukan ini karena ternyata masalah segmentasi tidak begitu sulit untuk dipecahkan, setelah Anda memiliki cara yang baik untuk mengklasifikasikan masing-masing digit. Ada banyak pendekatan untuk memecahkan masalah segmentasi. Salah satu pendekatannya adalah dengan mencoba berbagai cara untuk mensegmentasi citra, menggunakan pengklasifikasi digit individu untuk menilai setiap segmentasi percobaan. Segmentasi percobaan mendapat skor tinggi jika pengklasifikasi digit individu yakin dengan klasifikasinya di semua segmen, dan skor rendah jika pengklasifikasi mengalami banyak masalah dalam satu atau lebih segmen. Idenya adalah jika pengklasifikasi mengalami masalah di suatu tempat, maka mungkin mengalami masalah karena segmentasi telah dipilih secara tidak benar. Ide ini dan variasi lainnya dapat digunakan untuk memecahkan masalah segmentasi dengan cukup baik. Jadi, alih-alih mengkhawatirkan segmentasi, kami akan berkonsentrasi pada pengembangan jaringan saraf yang dapat memecahkan masalah yang lebih menarik dan sulit, yaitu mengenali digit tulisan tangan individu.

Untuk mengenali digit individu, kami akan menggunakan jaringan saraf tiga lapis:

Lapisan input jaringan berisi neuron yang mengkodekan nilai-nilai piksel input. Seperti yang dibahas di bagian berikutnya, data pelatihan kami untuk jaringan akan terdiri dari banyak $28$ oleh $28$ gambar piksel dari digit tulisan tangan yang dipindai, sehingga lapisan input berisi $784 = 28 imes 28$ neuron. Untuk kesederhanaan, saya telah menghilangkan sebagian besar neuron input $784$ dalam diagram di atas. Piksel input adalah skala abu-abu, dengan nilai .0$ mewakili putih, nilai $1,0$ mewakili hitam, dan di antara nilai-nilai mewakili nuansa abu-abu yang semakin gelap.

Lapisan kedua dari jaringan adalah lapisan tersembunyi. Kami menyatakan jumlah neuron di lapisan tersembunyi ini dengan $n$, dan kami akan bereksperimen dengan nilai yang berbeda untuk $n$. Contoh yang ditampilkan mengilustrasikan lapisan tersembunyi kecil, yang hanya berisi $n = 15$ neuron.

Lapisan keluaran jaringan berisi 10 neuron. Jika neuron pertama menyala, yaitu, memiliki output $kira-kira 1$, maka itu akan menunjukkan bahwa jaringan menganggap digit tersebut adalah $. Jika neuron kedua menyala maka itu akan menunjukkan bahwa jaringan menganggap digitnya adalah $1$. Dan seterusnya. Sedikit lebih tepatnya, kami memberi nomor pada neuron keluaran dari $ hingga $9$, dan mencari tahu neuron mana yang memiliki nilai aktivasi tertinggi. Jika neuron itu, katakanlah, neuron nomor $6$, maka jaringan kami akan menebak bahwa digit input adalah $6$. Begitu seterusnya untuk neuron keluaran lainnya.

Anda mungkin bertanya-tanya mengapa kami menggunakan neuron keluaran $10$. Lagi pula, tujuan jaringan adalah memberi tahu kami digit mana (, 1, 2, ldots, 9$) yang sesuai dengan gambar masukan. Cara yang tampaknya alami untuk melakukannya adalah dengan hanya menggunakan neuron keluaran $4$, memperlakukan setiap neuron sebagai mengambil nilai biner, bergantung pada apakah keluaran neuron lebih dekat ke $ atau $1$. Empat neuron cukup untuk mengkodekan jawabannya, karena $2^4 = 16$ lebih dari 10 nilai yang mungkin untuk digit masukan. Mengapa jaringan kita harus menggunakan neuron $10$? Bukankah itu tidak efisien? Pembenaran utamanya adalah empiris: kita dapat mencoba kedua desain jaringan, dan ternyata, untuk masalah khusus ini, jaringan dengan neuron keluaran $10 belajar mengenali angka lebih baik daripada jaringan dengan neuron keluaran $4. Tapi itu membuat kita bertanya-tanya mengapa menggunakan neuron keluaran $10$ bekerja lebih baik. Apakah ada heuristik yang akan memberi tahu kami sebelumnya bahwa kami harus menggunakan pengkodean keluaran $10$ alih-alih pengkodean keluaran $4$?

Untuk memahami mengapa kami melakukan ini, ada baiknya untuk memikirkan apa yang dilakukan jaringan saraf dari prinsip pertama. Pertimbangkan dulu kasus di mana kita menggunakan neuron keluaran $10$. Mari kita berkonsentrasi pada neuron keluaran pertama, neuron yang mencoba memutuskan apakah digitnya adalah $ atau tidak. Ini dilakukan dengan menimbang bukti dari lapisan neuron yang tersembunyi. Apa yang dilakukan neuron tersembunyi itu? Nah, anggap saja untuk argumen bahwa neuron pertama di lapisan tersembunyi mendeteksi ada atau tidaknya gambar seperti berikut:

Ini dapat dilakukan dengan memberi bobot yang berat pada piksel input yang tumpang tindih dengan gambar, dan hanya memberi bobot ringan pada input lainnya. Dengan cara yang sama, mari kita misalkan demi argumen bahwa neuron kedua, ketiga, dan keempat di lapisan tersembunyi mendeteksi apakah gambar berikut ada atau tidak:

Seperti yang mungkin sudah Anda duga, keempat gambar ini bersama-sama membentuk $ gambar yang kita lihat di baris angka yang ditunjukkan sebelumnya:

Jadi jika keempat neuron tersembunyi ini diaktifkan maka kita dapat menyimpulkan bahwa digitnya adalah $. Tentu saja, itu bukan hanya semacam bukti yang dapat kita gunakan untuk menyimpulkan bahwa gambar tersebut adalah $ - kita dapat memperoleh $ secara sah dengan banyak cara lain (misalnya, melalui terjemahan gambar di atas, atau sedikit distorsi). Tetapi tampaknya aman untuk mengatakan bahwa setidaknya dalam kasus ini kita akan menyimpulkan bahwa inputnya adalah $.

Misalkan fungsi jaringan saraf dengan cara ini, kita dapat memberikan penjelasan yang masuk akal mengapa lebih baik memiliki $ 10 output dari jaringan, daripada $ 4. Jika kita memiliki output $4$, maka neuron output pertama akan mencoba memutuskan bit paling signifikan dari digit tersebut. Dan tidak ada cara mudah untuk menghubungkan bagian terpenting itu dengan bentuk sederhana seperti yang ditunjukkan di atas. Sulit membayangkan bahwa ada alasan historis yang bagus bahwa bentuk komponen digit akan terkait erat dengan (katakanlah) bit paling signifikan dalam output.

Sekarang, dengan semua yang dikatakan, ini semua hanya heuristik. Tidak ada yang mengatakan bahwa jaringan saraf tiga lapis harus beroperasi seperti yang saya jelaskan, dengan neuron tersembunyi mendeteksi bentuk komponen sederhana. Mungkin algoritme pembelajaran yang cerdas akan menemukan beberapa penetapan bobot yang memungkinkan kita hanya menggunakan neuron keluaran $4$. Tetapi sebagai heuristik, cara berpikir yang saya jelaskan bekerja dengan cukup baik, dan dapat menghemat banyak waktu Anda dalam merancang arsitektur jaringan saraf yang baik.

Olahraga

  • Ada cara untuk menentukan representasi bitwise dari sebuah digit dengan menambahkan lapisan tambahan ke jaringan tiga lapisan di atas. Lapisan tambahan mengubah output dari lapisan sebelumnya menjadi representasi biner, seperti yang diilustrasikan pada gambar di bawah. Temukan satu set bobot dan bias untuk lapisan keluaran baru. Asumsikan bahwa lapisan neuron $3$ pertama sedemikian rupa sehingga keluaran yang benar pada lapisan ketiga (yaitu, lapisan keluaran lama) memiliki aktivasi paling sedikit $0,99, dan keluaran yang salah memiliki aktivasi kurang dari $0,01.

Belajar dengan penurunan gradien

Sekarang setelah kita memiliki desain untuk jaringan saraf kita, bagaimana cara belajar mengenali angka? Hal pertama yang kita perlukan adalah kumpulan data untuk dipelajari - yang disebut kumpulan data pelatihan. Kami akan menggunakan kumpulan data MNIST, yang berisi puluhan ribu gambar pindaian angka tulisan tangan, bersama dengan klasifikasi yang benar. Nama MNIST berasal dari fakta bahwa itu adalah subset yang dimodifikasi dari dua set data yang dikumpulkan oleh NIST, Institut Standar dan Teknologi Nasional Amerika Serikat. Berikut beberapa gambar dari MNIST:

Seperti yang Anda lihat, angka-angka ini sebenarnya sama dengan yang ditunjukkan di awal bab ini sebagai tantangan untuk dikenali. Tentu saja, saat menguji jaringan kami, kami akan memintanya untuk mengenali gambar yang tidak ada dalam set pelatihan!

Data MNIST datang dalam dua bagian. Bagian pertama berisi 60.000 gambar untuk digunakan sebagai data pelatihan. Gambar-gambar ini adalah sampel tulisan tangan yang dipindai dari 250 orang, setengahnya adalah karyawan Biro Sensus AS, dan setengahnya adalah siswa sekolah menengah. Gambar berwarna abu-abu dan berukuran 28 x 28 piksel. Bagian kedua dari kumpulan data MNIST adalah 10.000 gambar untuk digunakan sebagai data uji. Sekali lagi, ini adalah 28 kali 28 gambar skala abu-abu. Kami akan menggunakan data uji untuk mengevaluasi seberapa baik jaringan saraf kami telah belajar mengenali angka. Untuk membuat ini tes kinerja yang baik, data tes diambil dari a berbeda set 250 orang dari data pelatihan asli (walaupun masih kelompok split antara karyawan Biro Sensus dan siswa SMA). Ini membantu memberi kami keyakinan bahwa sistem kami dapat mengenali angka dari orang yang tulisannya tidak terlihat selama pelatihan.

Kami akan menggunakan notasi $x$ untuk menunjukkan input pelatihan. Akan lebih mudah untuk menganggap setiap input pelatihan $x$ sebagai vektor berdimensi $28 imes 28 = 784$. Setiap entri dalam vektor mewakili nilai abu-abu untuk satu piksel dalam gambar. Kami akan menunjukkan output yang diinginkan yang sesuai dengan $y = y(x)$, di mana $y$ adalah vektor berdimensi $10$. Misalnya, jika gambar pelatihan tertentu, $x$, menggambarkan $6$, maka $y(x) = (0, 0, 0, 0, 0, 0, 1, 0, 0, 0)^T$ adalah keluaran yang diinginkan dari jaringan. Perhatikan bahwa $T$ di sini adalah operasi transpos, mengubah vektor baris menjadi vektor (kolom) biasa.

Yang kami inginkan adalah algoritme yang memungkinkan kami menemukan bobot dan bias sehingga keluaran dari jaringan mendekati $y(x)$ untuk semua masukan pelatihan $x$. Untuk mengukur seberapa baik kami mencapai tujuan ini, kami mendefinisikan a fungsi biaya* *Terkadang disebut sebagai kehilangan atau objektif fungsi. Kami menggunakan istilah fungsi biaya di seluruh buku ini, tetapi Anda harus memperhatikan terminologi lain, karena istilah ini sering digunakan dalam makalah penelitian dan diskusi lain tentang jaringan saraf. : mulai C(w,b) equiv frac<1> <2n>sum_x | y(x) - a|^2. ag<6>end Di sini, $w$ menunjukkan kumpulan semua bobot dalam jaringan, $b$ semua bias, $n$ adalah jumlah total input pelatihan, $a$ adalah vektor output dari jaringan ketika $x$ dimasukkan , dan jumlahnya melebihi semua input pelatihan, $x$. Tentu saja, output $a$ bergantung pada $x$, $w$ dan $b$, tetapi untuk menjaga agar notasi tetap sederhana, saya belum secara eksplisit menunjukkan ketergantungan ini. Notasi $| v |$ hanya menunjukkan fungsi panjang biasa untuk vektor $v$. Kami akan memanggil $C$ the kuadrat fungsi biaya itu juga kadang-kadang dikenal sebagai kesalahan kuadrat rata-rata atau hanya UMK. Memeriksa bentuk fungsi biaya kuadrat, kita melihat bahwa $C(w,b)$ adalah non-negatif, karena setiap suku dalam jumlah adalah non-negatif. Selanjutnya, biaya $C(w,b)$ menjadi kecil, yaitu $C(w,b) approx 0$, tepatnya ketika $y(x)$ kira-kira sama dengan output, $a$, untuk semua masukan pelatihan, $x$. Jadi algoritma pelatihan kami telah melakukan pekerjaan yang baik jika dapat menemukan bobot dan bias sehingga $C(w,b) kira-kira 0$. Sebaliknya, itu tidak berjalan dengan baik ketika $C(w,b)$ besar - itu berarti bahwa $y(x)$ tidak dekat dengan output $a$ untuk sejumlah besar input. Jadi tujuan dari algoritma pelatihan kami adalah untuk meminimalkan biaya $C(w,b)$ sebagai fungsi dari bobot dan bias. Dengan kata lain, kita ingin menemukan sekumpulan bobot dan bias yang membuat biaya sekecil mungkin. Kami akan melakukannya menggunakan algoritme yang dikenal sebagai penurunan gradien.

Mengapa memperkenalkan biaya kuadrat? Lagi pula, bukankah kami terutama tertarik pada jumlah gambar yang diklasifikasikan dengan benar oleh jaringan? Mengapa tidak mencoba memaksimalkan angka itu secara langsung, daripada meminimalkan ukuran proksi seperti biaya kuadrat? Masalahnya adalah jumlah gambar yang diklasifikasikan dengan benar bukanlah fungsi yang mulus dari bobot dan bias dalam jaringan. Untuk sebagian besar, membuat perubahan kecil pada bobot dan bias tidak akan menyebabkan perubahan sama sekali dalam jumlah gambar pelatihan yang diklasifikasikan dengan benar. Itu membuat sulit untuk mengetahui bagaimana mengubah bobot dan bias untuk mendapatkan kinerja yang lebih baik. Jika kita menggunakan fungsi biaya halus seperti biaya kuadrat, ternyata mudah untuk mengetahui bagaimana membuat perubahan kecil pada bobot dan bias untuk mendapatkan peningkatan biaya. Itu sebabnya kami fokus pertama pada meminimalkan biaya kuadrat, dan baru setelah itu kami akan memeriksa akurasi klasifikasi.

Rekap, tujuan kami dalam melatih jaringan saraf adalah untuk menemukan bobot dan bias yang meminimalkan fungsi biaya kuadrat $C(w, b)$. Ini adalah masalah yang diajukan dengan baik, tetapi memiliki banyak struktur yang mengganggu seperti yang diajukan saat ini - interpretasi $w$ dan $b$ sebagai bobot dan bias, fungsi $sigma$ bersembunyi di latar belakang, pilihan jaringan arsitektur, MNIST, dan sebagainya. Ternyata kita dapat memahami jumlah yang luar biasa dengan mengabaikan sebagian besar struktur itu, dan hanya berkonsentrasi pada aspek minimisasi. Jadi untuk saat ini kita akan melupakan semua tentang bentuk spesifik dari fungsi biaya, koneksi ke jaringan saraf, dan seterusnya. Sebagai gantinya, kita akan membayangkan bahwa kita hanya diberi fungsi dari banyak variabel dan kita ingin meminimalkan fungsi itu. Kami akan mengembangkan teknik yang disebut penurunan gradien yang dapat digunakan untuk memecahkan masalah minimisasi tersebut. Kemudian kita akan kembali ke fungsi spesifik yang ingin kita perkecil untuk jaringan saraf.

Oke, misalkan kita mencoba meminimalkan beberapa fungsi, $C(v)$. Ini bisa berupa fungsi bernilai nyata dari banyak variabel, $v = v_1, v_2, ldots$. Perhatikan bahwa saya telah mengganti notasi $w$ dan $b$ dengan $v$ untuk menekankan bahwa ini dapat berupa fungsi apa pun - kami tidak lagi secara khusus memikirkan konteks jaringan saraf. Untuk meminimalkan $C(v)$ ada baiknya membayangkan $C$ sebagai fungsi dari dua variabel saja, yang akan kita sebut $v_1$ dan $v_2$:

Yang kami inginkan adalah menemukan di mana $C$ mencapai minimum globalnya. Sekarang, tentu saja, untuk fungsi yang diplot di atas, kita dapat melihat grafik dan menemukan minimum. Dalam hal itu, saya mungkin telah menunjukkan sedikit juga fungsi sederhana! Fungsi umum, $C$, mungkin merupakan fungsi rumit dari banyak variabel, dan biasanya tidak mungkin untuk hanya melihat grafik untuk menemukan minimum.

Salah satu cara untuk mengatasi masalah adalah dengan menggunakan kalkulus untuk mencoba menemukan minimum secara analitis. Kita dapat menghitung turunan dan kemudian mencoba menggunakannya untuk menemukan tempat di mana $C$ merupakan nilai ekstrem. Dengan sedikit keberuntungan yang mungkin berhasil ketika $C$ adalah fungsi dari satu atau beberapa variabel saja. Tapi itu akan berubah menjadi mimpi buruk ketika kita memiliki lebih banyak variabel. Dan untuk jaringan saraf kita akan sering menginginkannya jauh lebih banyak variabel - jaringan saraf terbesar memiliki fungsi biaya yang bergantung pada miliaran bobot dan bias dengan cara yang sangat rumit. Menggunakan kalkulus untuk meminimalkan itu tidak akan berhasil!

(Setelah menegaskan bahwa kita akan memperoleh wawasan dengan membayangkan $C$ sebagai fungsi hanya dari dua variabel, saya telah membalik dua kali dalam dua paragraf dan berkata, "hei, tetapi bagaimana jika itu adalah fungsi dari lebih dari dua variabel? " Maaf soal itu. Tolong percaya saya ketika saya mengatakan bahwa itu benar-benar membantu untuk membayangkan $C$ sebagai fungsi dari dua variabel. Kebetulan kadang-kadang gambar itu rusak, dan dua paragraf terakhir berurusan dengan kerusakan seperti itu. Bagus berpikir tentang matematika sering kali melibatkan menyulap beberapa gambar intuitif, belajar kapan waktu yang tepat untuk menggunakan setiap gambar, dan kapan tidak.)

Oke, jadi kalkulus tidak bekerja. Untungnya, ada analogi yang indah yang menunjukkan sebuah algoritma yang bekerja dengan cukup baik. Kita mulai dengan memikirkan fungsi kita sebagai semacam lembah. Jika Anda memicingkan mata sedikit pada plot di atas, itu seharusnya tidak terlalu sulit. Dan kami membayangkan sebuah bola menggelinding menuruni lereng lembah. Pengalaman kita sehari-hari memberitahu kita bahwa bola pada akhirnya akan menggelinding ke dasar lembah. Mungkin kita dapat menggunakan ide ini sebagai cara untuk menemukan minimum untuk fungsi tersebut? Kami secara acak memilih titik awal untuk bola (imajiner), dan kemudian mensimulasikan gerakan bola saat bergulir ke dasar lembah. Kita dapat melakukan simulasi ini hanya dengan menghitung turunan (dan mungkin beberapa turunan kedua) dari $C$ - turunan tersebut akan memberi tahu kita semua yang perlu kita ketahui tentang "bentuk" lokal lembah, dan oleh karena itu bagaimana bola kita seharusnya menggelinding.

Berdasarkan apa yang baru saja saya tulis, Anda mungkin mengira bahwa kita akan mencoba menuliskan persamaan gerak Newton untuk bola, dengan mempertimbangkan efek gesekan dan gravitasi, dan seterusnya. Sebenarnya, kita tidak akan menganggap analogi menggelindingkan bola seserius itu - kita sedang merancang algoritme untuk meminimalkan $C$, bukan mengembangkan simulasi hukum fisika yang akurat! Pandangan bola mata dimaksudkan untuk merangsang imajinasi kita, bukan membatasi pemikiran kita. Jadi daripada masuk ke semua detail fisika yang berantakan, mari kita bertanya pada diri sendiri: jika kita dinyatakan sebagai Tuhan selama sehari, dan dapat membuat hukum fisika kita sendiri, mendikte bola bagaimana seharusnya bergulir, hukum atau hukum apa gerakan yang bisa kita pilih yang akan membuat bola selalu menggelinding ke dasar lembah?

Untuk membuat pertanyaan ini lebih tepat, mari kita pikirkan apa yang terjadi ketika kita menggerakkan bola sejumlah kecil $Delta v_1$ ke arah $v_1$, dan sejumlah kecil $Delta v_2$ ke arah $v_2$. Kalkulus memberi tahu kita bahwa $C$ berubah sebagai berikut: egin Delta C approx frac Delta v_1 + frac Delta v_2. ag<7>end Kita akan menemukan cara untuk memilih $Delta v_1$ dan $Delta v_2$ untuk membuat $Delta C$ negatif yaitu, kita akan memilihnya sehingga bola menggelinding ke lembah. Untuk mengetahui bagaimana membuat pilihan seperti itu, akan membantu untuk mendefinisikan $Delta v$ sebagai vektor perubahan dalam $v$, $Delta v equiv (Delta v_1, Delta v_2)^T$, di mana $ T$ lagi-lagi operasi transpos, mengubah vektor baris menjadi vektor kolom. Kami juga akan mendefinisikan gradien dari $C$ menjadi vektor turunan parsial, $left(frac, frac ight)^T$. Kami menyatakan vektor gradien dengan $ abla C$, yaitu: egin abla C equiv left( frac, frac ight)^T. ag<8>end Sebentar lagi kita akan menulis ulang perubahan $Delta C$ dalam bentuk $Delta v$ dan gradiennya, $ abla C$. Namun, sebelum membahasnya, saya ingin mengklarifikasi sesuatu yang terkadang membuat orang terpaku pada gradien. Saat bertemu dengan notasi $ abla C$ untuk pertama kalinya, orang terkadang bertanya-tanya bagaimana seharusnya mereka memikirkan simbol $ abla$. Apa sebenarnya yang dimaksud dengan $ abla$? Sebenarnya, tidak masalah untuk menganggap $ abla C$ sebagai objek matematika tunggal - vektor yang didefinisikan di atas - yang kebetulan ditulis menggunakan dua simbol. Dalam sudut pandang ini, $ abla$ hanyalah sepotong pengibaran bendera notasi, memberi tahu Anda "hei, $ abla C$ adalah vektor gradien". Ada sudut pandang yang lebih maju di mana $ abla$ dapat dilihat sebagai entitas matematika independen dalam dirinya sendiri (misalnya, sebagai operator diferensial), tetapi kita tidak memerlukan sudut pandang seperti itu.

Kesimpulannya, cara kerja algoritme penurunan gradien adalah dengan menghitung gradien $ abla C$ berulang kali, dan kemudian bergerak di di depan arah, "jatuh" lereng lembah. Kita bisa memvisualisasikannya seperti ini:

Perhatikan bahwa dengan aturan ini penurunan gradien tidak mereproduksi gerakan fisik nyata. Dalam kehidupan nyata, sebuah bola memiliki momentum, dan momentum itu memungkinkannya menggelinding melintasi lereng, atau bahkan (sesaat) menggelinding menanjak. Hanya setelah efek gesekan diatur, bola dijamin akan menggelinding ke bawah ke lembah. Sebaliknya, aturan kami untuk memilih $Delta v$ hanya mengatakan "turun, sekarang". Itu masih aturan yang cukup bagus untuk menemukan minimum!

Memang, bahkan ada perasaan di mana penurunan gradien adalah strategi optimal untuk mencari minimum. Misalkan kita mencoba untuk bergerak $Delta v$ pada posisi untuk mengurangi $C$ sebanyak mungkin. Ini sama dengan meminimalkan $Delta C approx abla C cdot Delta v$. Kami akan membatasi ukuran gerakan sehingga $| Delta v | = epsilon$ untuk beberapa $epsilon kecil tetap > 0$. Dengan kata lain, kami menginginkan gerakan yang merupakan langkah kecil dengan ukuran tetap, dan kami mencoba menemukan arah gerakan yang menurunkan $C$ sebanyak mungkin. Dapat dibuktikan bahwa pilihan $Delta v$ yang meminimalkan $ abla C cdot Delta v$ adalah $Delta v = - eta abla C$, dimana $eta = epsilon / | nabla C|$ ditentukan oleh batasan ukuran $|Delta v| = epsilon$. Jadi penurunan gradien dapat dilihat sebagai cara mengambil langkah-langkah kecil ke arah yang paling berhasil untuk segera menurunkan $C$.

Latihan

  • Buktikan pernyataan paragraf terakhir. Petunjuk: Jika Anda belum terbiasa dengan ketidaksetaraan Cauchy-Schwarz, Anda mungkin perlu membiasakan diri dengannya.

Orang-orang telah menyelidiki banyak variasi penurunan gradien, termasuk variasi yang lebih mirip dengan bola fisik asli. Variasi peniruan bola ini memiliki beberapa keuntungan, tetapi juga memiliki kelemahan utama: ternyata diperlukan untuk menghitung turunan parsial kedua dari $C$, dan ini bisa sangat mahal. Untuk melihat mengapa itu mahal, misalkan kita ingin menghitung semua turunan parsial kedua $partial^2 C/ partial v_j partial v_k$. Jika ada sejuta variabel $v_j$ seperti itu maka kita perlu menghitung sesuatu seperti satu triliun (yaitu, satu juta kuadrat) turunan parsial kedua* *Sebenarnya, lebih seperti setengah triliun, karena $partial^2 C/ parsial v_j partial v_k = partial^2 C/ partial v_k partial v_j$. Tetap saja, Anda mengerti maksudnya. ! Itu akan menjadi komputasi mahal. Dengan itu, ada trik untuk menghindari masalah semacam ini, dan menemukan alternatif untuk penurunan gradien adalah area penyelidikan yang aktif. Namun dalam buku ini kita akan menggunakan penurunan gradien (dan variasi) sebagai pendekatan utama kita untuk belajar dalam jaringan saraf.

Sebuah ide yang disebut penurunan gradien stokastik dapat digunakan untuk mempercepat pembelajaran. Idenya adalah untuk memperkirakan gradien $ abla C$ dengan menghitung $ abla C_x$ untuk sampel kecil dari input pelatihan yang dipilih secara acak. Dengan merata-ratakan sampel kecil ini, ternyata kita dapat dengan cepat mendapatkan perkiraan yang baik tentang gradien sebenarnya $ abla C$, dan ini membantu mempercepat penurunan gradien, dan dengan demikian belajar.

Untuk membuat ide ini lebih tepat, penurunan gradien stokastik bekerja dengan secara acak memilih sejumlah kecil $m$ dari input pelatihan yang dipilih secara acak. Kami akan memberi label pada input pelatihan acak tersebut $X_1, X_2, ldots, X_m$, dan menyebutnya sebagai mini-batch. Asalkan ukuran sampel $m$ cukup besar, kami mengharapkan nilai rata-rata dari $ abla C_$ akan kira-kira sama dengan rata-rata untuk semua $ abla C_x$, yaitu, egin frac^m abla C_<>>> kira-kira frac = abla C, ag<18>end di mana jumlah kedua lebih dari seluruh set data pelatihan. Bertukar sisi kita dapatkan egin abla C kira-kira frac<1> jumlah_^m abla C_<>>, ag<19>end mengkonfirmasikan bahwa kami dapat memperkirakan gradien keseluruhan dengan menghitung gradien hanya untuk mini-batch yang dipilih secara acak.

Untuk menghubungkan ini secara eksplisit dengan pembelajaran di jaringan saraf, misalkan $w_k$ dan $b_l$ menunjukkan bobot dan bias dalam jaringan saraf kami. Kemudian penurunan gradien stokastik bekerja dengan memilih batch mini input pelatihan yang dipilih secara acak, dan berlatih dengan itu, egin w_k & ightarrow & w_k' = w_k-frac sum_j frac> ag<20> b_l & ightarrow & b_l' = b_l-frac sum_j frac>, ag<21>end di mana jumlahnya melebihi semua contoh pelatihan $X_j$ di mini-batch saat ini. Kemudian kami memilih mini-batch lain yang dipilih secara acak dan berlatih dengan itu. Dan seterusnya, sampai kita kehabisan input pelatihan, yang dikatakan selesai dan masa dari latihan. Pada saat itu kami memulai kembali dengan periode pelatihan baru.

Kita dapat menganggap penurunan gradien stokastik seperti polling politik: jauh lebih mudah untuk mengambil sampel mini-batch kecil daripada menerapkan penurunan gradien ke batch penuh, sama seperti melakukan polling lebih mudah daripada menjalankan pemilihan penuh. Misalnya, jika kita memiliki set pelatihan ukuran $n = 60.000$, seperti dalam MNIST, dan memilih ukuran batch mini (misalnya) $m = 10$, ini berarti kita akan mendapatkan faktor percepatan $6.000$ dalam memperkirakan gradien! Tentu saja, perkiraannya tidak akan sempurna - akan ada fluktuasi statistik - tetapi tidak perlu sempurna: yang benar-benar kita pedulikan adalah bergerak ke arah umum yang akan membantu menurunkan $C$, dan itu berarti kita tidak perlu perhitungan yang tepat dari gradien. Dalam praktiknya, penurunan gradien stokastik adalah teknik yang umum digunakan dan kuat untuk pembelajaran dalam jaringan saraf, dan ini adalah dasar untuk sebagian besar teknik pembelajaran yang akan kita kembangkan dalam buku ini.

Olahraga

  • Versi ekstrim dari penurunan gradien adalah dengan menggunakan ukuran mini-batch hanya 1. Artinya, dengan input pelatihan, $x$, kami memperbarui bobot dan bias kami sesuai dengan aturan $w_k ightarrow w_k' = w_k - eta partial C_x / partial w_k$ dan $b_l ightarrow b_l' = b_l - eta partial C_x / partial b_l$. Kemudian kami memilih input pelatihan lain, dan memperbarui bobot dan bias lagi. Begitu seterusnya, berulang-ulang. Prosedur ini dikenal sebagai on line, on line, atau tambahan sedang belajar. Dalam pembelajaran online, jaringan saraf belajar hanya dari satu input pelatihan pada satu waktu (seperti yang dilakukan manusia). Sebutkan satu keuntungan dan satu kerugian dari pembelajaran online, dibandingkan dengan penurunan gradien stokastik dengan ukuran mini-batch, katakanlah, $20$.

Izinkan saya menyimpulkan bagian ini dengan membahas suatu hal yang terkadang mengganggu orang yang baru mengenal penurunan gradien. Dalam jaringan saraf, biaya $C$, tentu saja, merupakan fungsi dari banyak variabel - semua bobot dan bias - dan dalam beberapa hal mendefinisikan permukaan dalam ruang dimensi yang sangat tinggi. Beberapa orang terpaku karena berpikir: "Hei, saya harus bisa memvisualisasikan semua dimensi ekstra ini". Dan mereka mungkin mulai khawatir: "Saya tidak bisa berpikir dalam empat dimensi, apalagi lima (atau lima juta)". Apakah ada beberapa kemampuan khusus yang mereka lewatkan, beberapa kemampuan yang dimiliki oleh ahli matematika super "asli"? Tentu saja, jawabannya adalah tidak. Bahkan sebagian besar matematikawan profesional tidak dapat memvisualisasikan empat dimensi dengan sangat baik, jika sama sekali. Trik yang mereka gunakan, sebaliknya, adalah mengembangkan cara lain untuk merepresentasikan apa yang sedang terjadi. Itulah tepatnya yang kami lakukan di atas: kami menggunakan representasi aljabar (bukan visual) dari $Delta C$ untuk mengetahui cara memindahkan sehingga mengurangi $C$. Orang yang pandai berpikir dalam dimensi tinggi memiliki perpustakaan mental yang berisi banyak teknik berbeda di sepanjang garis ini, trik aljabar kami hanyalah salah satu contohnya. Teknik-teknik tersebut mungkin tidak memiliki kesederhanaan yang biasa kita gunakan saat memvisualisasikan tiga dimensi, tetapi begitu Anda membangun perpustakaan teknik semacam itu, Anda bisa menjadi cukup baik dalam berpikir dalam dimensi tinggi. Saya tidak akan membahas lebih detail di sini, tetapi jika Anda tertarik maka Anda dapat menikmati membaca diskusi ini tentang beberapa teknik yang digunakan ahli matematika profesional untuk berpikir dalam dimensi tinggi. Meskipun beberapa teknik yang dibahas cukup rumit, sebagian besar konten terbaik bersifat intuitif dan dapat diakses, serta dapat dikuasai oleh siapa saja.

Menerapkan jaringan kami untuk mengklasifikasikan angka

Baiklah, mari kita buat program yang mempelajari cara mengenali angka tulisan tangan, menggunakan penurunan gradien stokastik dan data pelatihan MNIST. Kami akan melakukannya dengan program Python (2.7) pendek, hanya 74 baris kode! Hal pertama yang kita butuhkan adalah mendapatkan data MNIST. Jika Anda seorang git pengguna maka Anda dapat memperoleh data dengan mengkloning repositori kode untuk buku ini,

Jika Anda tidak menggunakan git maka Anda dapat mengunduh data dan kode di sini.

Kebetulan, ketika saya menjelaskan data MNIST sebelumnya, saya mengatakan itu dibagi menjadi 60.000 gambar pelatihan, dan 10.000 gambar uji. Itulah deskripsi resmi MNIST. Sebenarnya, kita akan membagi data sedikit berbeda. Kami akan membiarkan gambar uji apa adanya, tetapi membagi kumpulan pelatihan MNIST 60.000 gambar menjadi dua bagian: kumpulan 50.000 gambar, yang akan kami gunakan untuk melatih jaringan saraf kami, dan 10.000 gambar terpisah set validasi. Kami tidak akan menggunakan data validasi dalam bab ini, tetapi nanti dalam buku ini kami akan menemukan berguna dalam mencari tahu bagaimana mengatur tertentu hyper-parameter jaringan saraf - hal-hal seperti kecepatan belajar, dan sebagainya, yang tidak dipilih secara langsung oleh algoritme pembelajaran kami. Meskipun data validasi bukan bagian dari spesifikasi MNIST asli, banyak orang menggunakan MNIST dengan cara ini, dan penggunaan data validasi umum di jaringan saraf. Ketika saya merujuk ke "data pelatihan MNIST" mulai sekarang, saya akan mengacu pada 50.000 kumpulan data gambar kami, bukan kumpulan data gambar 60.000 asli* *Seperti disebutkan sebelumnya, kumpulan data MNIST didasarkan pada dua kumpulan data yang dikumpulkan oleh NIST, Institut Standar dan Teknologi Nasional Amerika Serikat. Untuk membangun MNIST, set data NIST dipreteli dan dimasukkan ke dalam format yang lebih nyaman oleh Yann LeCun, Corinna Cortes, dan Christopher J. C. Burges. Lihat tautan ini untuk lebih jelasnya. Kumpulan data dalam repositori saya dalam bentuk yang memudahkan untuk memuat dan memanipulasi data MNIST dengan Python. Saya memperoleh bentuk data khusus ini dari laboratorium pembelajaran mesin LISA di Universitas Montreal (tautan). .

Selain data MNIST, kita juga memerlukan pustaka Python yang disebut Numpy, untuk mengerjakan aljabar linier cepat. Jika Anda belum menginstal Numpy, Anda bisa mendapatkannya di sini.

Biarkan saya menjelaskan fitur inti dari kode jaringan saraf, sebelum memberikan daftar lengkap, di bawah ini. Bagian tengahnya adalah Jaringan kelas, yang kami gunakan untuk mewakili jaringan saraf. Berikut kode yang kami gunakan untuk menginisialisasi a Jaringan obyek:

Dalam kode ini, daftar ukuran berisi jumlah neuron di masing-masing lapisan. Jadi, misalnya, jika kita ingin membuat Jaringan objek dengan 2 neuron di lapisan pertama, 3 neuron di lapisan kedua, dan 1 neuron di lapisan terakhir, kita akan melakukannya dengan kode:

Perhatikan juga bahwa bias dan bobot disimpan sebagai daftar matriks Numpy. Jadi, misalnya berat bersih[1] adalah matriks Numpy yang menyimpan bobot yang menghubungkan lapisan kedua dan ketiga neuron. (Ini bukan lapisan pertama dan kedua, karena pengindeksan daftar Python dimulai pada 0.) Sejak berat bersih[1] agak bertele-tele, mari kita nyatakan matriks itu $w$. Ini adalah matriks sedemikian rupa sehingga $w_$ adalah bobot untuk koneksi antara neuron $k^< m th>$ di lapisan kedua, dan neuron $j^< m th>$ di lapisan ketiga. Urutan indeks $j$ dan $k$ ini mungkin tampak aneh - tentunya akan lebih masuk akal untuk menukar indeks $j$ dan $k$? Keuntungan besar menggunakan pengurutan ini adalah bahwa vektor aktivasi neuron lapisan ketiga adalah: egin a' = sigma(w a + b). ag<22>end Ada cukup banyak hal yang terjadi dalam persamaan ini, jadi mari kita bongkar sepotong demi sepotong. $a$ adalah vektor aktivasi neuron lapis kedua. Untuk memperoleh $a'$ kita mengalikan $a$ dengan matriks bobot $w$, dan menambahkan vektor bias $b$. Kami kemudian menerapkan fungsi $sigma$ elementwise ke setiap entri dalam vektor $w a +b$. (Ini disebut membuat vektor fungsi $sigma$.) Sangat mudah untuk memverifikasi bahwa Persamaan (22) egin a' = sigma(w a + b) onumberend memberikan hasil yang sama seperti aturan kita sebelumnya, Persamaan (4) egin frac<1> <1+exp(-sum_j w_j x_j-b)> onumberend , untuk menghitung keluaran dari neuron sigmoid.

Olahraga

Dengan semua ini, mudah untuk menulis kode yang menghitung output dari a Jaringan contoh. Kita mulai dengan mendefinisikan fungsi sigmoid:

Kami kemudian menambahkan umpan maju metode ke Jaringan kelas, yang, diberi input Sebuah untuk jaringan, mengembalikan output yang sesuai* *Diasumsikan bahwa input Sebuah adalah (n, 1) Numpy ndarray, bukan (n,) vektor. Di Sini, n adalah jumlah input ke jaringan. Jika Anda mencoba menggunakan (n,) vektor sebagai input Anda akan mendapatkan hasil yang aneh. Meskipun menggunakan (n,) vektor muncul pilihan yang lebih alami, menggunakan an (n, 1) ndarray membuatnya sangat mudah untuk memodifikasi kode untuk meneruskan beberapa input sekaligus, dan itu terkadang nyaman. . Semua metode yang dilakukan adalah menerapkan Persamaan (22) egin a' = sigma(w a + b) onumberend untuk setiap lapisan:

Tentu saja, hal utama yang kami inginkan adalah Jaringan objek yang harus dilakukan adalah belajar. Untuk itu kami akan memberi mereka SGD metode yang menerapkan penurunan gradien stokastik. Berikut kodenya. Ini sedikit misterius di beberapa tempat, tetapi saya akan menguraikannya di bawah, setelah daftar.

NS data pelatihan adalah daftar tupel (x, y) mewakili input pelatihan dan output yang diinginkan. Variabel zaman dan mini_batch_size adalah apa yang Anda harapkan - jumlah epoch untuk dilatih, dan ukuran mini-batch yang digunakan saat pengambilan sampel. eta adalah kecepatan belajar, $eta$. Jika argumen opsional data_tes diberikan, maka program akan mengevaluasi jaringan setelah setiap periode pelatihan, dan mencetak kemajuan sebagian. Ini berguna untuk melacak kemajuan, tetapi memperlambat segalanya secara substansial.

Kode berfungsi sebagai berikut. Di setiap epoch, itu dimulai dengan mengacak data pelatihan secara acak, dan kemudian mempartisinya menjadi mini-batch dengan ukuran yang sesuai. Ini adalah cara mudah untuk mengambil sampel secara acak dari data pelatihan. Kemudian untuk masing-masing mini_batch kami menerapkan satu langkah penurunan gradien. Ini dilakukan dengan kode self.update_mini_batch(mini_batch, eta), yang memperbarui bobot dan bias jaringan menurut satu iterasi penurunan gradien, hanya menggunakan data pelatihan di mini_batch. Berikut kode untuk update_mini_batch metode:

Saya tidak akan menunjukkan kode untuk self.backprop sekarang. Kita akan mempelajari bagaimana backpropagation bekerja di bab berikutnya, termasuk kode untuk self.backprop. Untuk saat ini, anggap saja itu berperilaku seperti yang diklaim, mengembalikan gradien yang sesuai untuk biaya yang terkait dengan contoh pelatihan x.

Mari kita lihat program lengkapnya, termasuk string dokumentasi, yang saya hilangkan di atas. Selain dari self.backprop program ini cukup jelas - semua pekerjaan berat dilakukan di diri.SGD dan self.update_mini_batch, yang sudah kita bahas. NS self.backprop Metode ini menggunakan beberapa fungsi tambahan untuk membantu dalam menghitung gradien, yaitu sigmoid_prime, yang menghitung turunan dari fungsi $sigma$, dan self.cost_derivative, yang tidak akan saya jelaskan di sini. Anda bisa mendapatkan inti dari ini (dan mungkin detailnya) hanya dengan melihat kode dan string dokumentasi. Kita akan melihat mereka secara rinci di bab berikutnya. Perhatikan bahwa meskipun program tampak panjang, sebagian besar kode adalah string dokumentasi yang dimaksudkan untuk membuat kode mudah dipahami. Faktanya, program ini hanya berisi 74 baris kode non-spasi, non-komentar. Semua kode dapat ditemukan di GitHub di sini.

Seberapa baik program mengenali angka tulisan tangan? Nah, mari kita mulai dengan memuat data MNIST. Saya akan melakukan ini menggunakan program pembantu kecil, mnist_loader.py, akan dijelaskan di bawah ini. Kami menjalankan perintah berikut dalam shell Python,

Tentu saja, ini juga bisa dilakukan dalam program Python yang terpisah, tetapi jika Anda mengikutinya, ini mungkin paling mudah dilakukan di shell Python.

Setelah memuat data MNIST, kami akan menyiapkan Jaringan dengan $30$ neuron tersembunyi. Kami melakukan ini setelah mengimpor program Python yang tercantum di atas, yang bernama jaringan,

Terakhir, kita akan menggunakan penurunan gradien stokastik untuk belajar dari MNIST data pelatihan lebih dari 30 epoch, dengan ukuran mini-batch 10, dan tingkat pembelajaran $eta = 3.0$,

Perhatikan bahwa jika Anda menjalankan kode saat Anda membaca, ini akan memakan waktu untuk dieksekusi - untuk mesin biasa (per 2015) kemungkinan akan memakan waktu beberapa menit untuk dijalankan. Saya sarankan Anda mengatur semuanya berjalan, terus membaca, dan secara berkala memeriksa output dari kode. Jika Anda sedang terburu-buru, Anda dapat mempercepatnya dengan mengurangi jumlah epoch, dengan mengurangi jumlah neuron tersembunyi, atau dengan menggunakan hanya sebagian dari data pelatihan. Perhatikan bahwa kode produksi akan jauh, jauh lebih cepat: skrip Python ini dimaksudkan untuk membantu Anda memahami cara kerja jaringan saraf, bukan untuk menjadi kode berkinerja tinggi! Dan, tentu saja, setelah kami melatih jaringan, jaringan itu dapat dijalankan dengan sangat cepat, di hampir semua platform komputasi. Misalnya, setelah kita mempelajari serangkaian bobot dan bias yang baik untuk suatu jaringan, jaringan dapat dengan mudah di-porting untuk dijalankan dalam Javascript di browser web, atau sebagai aplikasi asli di perangkat seluler. Bagaimanapun, ini adalah transkrip parsial dari output dari satu pelatihan jaringan saraf. Transkrip menunjukkan jumlah gambar uji yang dikenali dengan benar oleh jaringan saraf setelah setiap periode pelatihan. Seperti yang Anda lihat, setelah hanya satu zaman ini telah mencapai 9.129 dari 10.000, dan jumlahnya terus bertambah,

Artinya, jaringan yang terlatih memberi kita tingkat klasifikasi sekitar $95$ persen - $95,42$ persen pada puncaknya ("Epoch 28")! Itu cukup menggembirakan sebagai upaya pertama. Saya harus memperingatkan Anda, bagaimanapun, bahwa jika Anda menjalankan kode maka hasil Anda belum tentu akan sama dengan saya, karena kami akan menginisialisasi jaringan kami menggunakan bobot dan bias acak (berbeda). Untuk menghasilkan hasil dalam bab ini, saya telah melakukan best-of-three run.

Mari kita jalankan kembali percobaan di atas, ubah jumlah neuron tersembunyi menjadi $100$. Seperti yang terjadi sebelumnya, jika Anda menjalankan kode saat membaca, Anda harus diperingatkan bahwa perlu waktu yang cukup lama untuk mengeksekusi (di komputer saya, eksperimen ini membutuhkan waktu puluhan detik untuk setiap periode pelatihan), jadi sebaiknya Anda lanjutkan membaca secara paralel saat kode dijalankan.

Benar saja, ini meningkatkan hasil menjadi $96,59$ persen. Setidaknya dalam kasus ini, menggunakan lebih banyak neuron tersembunyi membantu kami mendapatkan hasil yang lebih baik* *Umpan balik pembaca menunjukkan beberapa variasi dalam hasil untuk eksperimen ini, dan beberapa latihan memberikan hasil yang sedikit lebih buruk. Menggunakan teknik yang diperkenalkan di bab 3 akan sangat mengurangi variasi kinerja di berbagai pelatihan yang berjalan untuk jaringan kami. .

Tentu saja, untuk mendapatkan akurasi ini saya harus membuat pilihan khusus untuk jumlah epoch pelatihan, ukuran mini-batch, dan kecepatan pembelajaran, $eta$. Seperti yang saya sebutkan di atas, ini dikenal sebagai parameter hiper untuk jaringan saraf kami, untuk membedakannya dari parameter (bobot dan bias) yang dipelajari oleh algoritma pembelajaran kami. Jika kita memilih hyper-parameter kita dengan buruk, kita bisa mendapatkan hasil yang buruk. Misalkan, misalnya, kita telah memilih tingkat pembelajaran menjadi $eta = 0,001$,

Hasilnya kurang menggembirakan,

Secara umum, men-debug jaringan saraf dapat menjadi tantangan. Hal ini terutama benar ketika pilihan awal hyper-parameter menghasilkan hasil yang tidak lebih baik dari derau acak. Misalkan kita mencoba arsitektur jaringan neuron tersembunyi 30 yang berhasil dari sebelumnya, tetapi dengan tingkat pembelajaran berubah menjadi $eta = 100,0$:

Pelajaran yang dapat diambil dari ini adalah bahwa men-debug jaringan saraf bukanlah hal yang sepele, dan, seperti halnya pemrograman biasa, ada seninya.Anda perlu mempelajari seni debugging untuk mendapatkan hasil yang baik dari jaringan saraf. Secara umum, kita perlu mengembangkan heuristik untuk memilih parameter hiper yang baik dan arsitektur yang baik. Kita akan membahas semua ini secara panjang lebar melalui buku ini, termasuk bagaimana saya memilih parameter hiper di atas.

Olahraga

Sebelumnya, saya melewatkan detail tentang bagaimana data MNIST dimuat. Ini cukup mudah. Untuk kelengkapannya, ini kodenya. Struktur data yang digunakan untuk menyimpan data MNIST dijelaskan dalam string dokumentasi - ini adalah hal-hal sederhana, tupel, dan daftar Numpy ndarray objek (anggap mereka sebagai vektor jika Anda tidak terbiasa dengan ndarrayS):

Saya katakan di atas bahwa program kami mendapatkan hasil yang cukup baik. Apa artinya? Baik dibandingkan dengan apa? Sangat informatif untuk memiliki beberapa tes dasar (non-jaringan saraf) sederhana untuk dibandingkan, untuk memahami apa artinya berkinerja baik. Dasar paling sederhana dari semuanya, tentu saja, adalah menebak angka secara acak. Itu akan benar sekitar sepuluh persen dari waktu. Kami melakukan jauh lebih baik dari itu!

Bagaimana dengan dasar yang tidak terlalu sepele? Mari kita coba ide yang sangat sederhana: kita akan melihat caranya gelap sebuah gambar adalah. Misalnya, gambar seharga $2$ biasanya akan sedikit lebih gelap daripada gambar $1$, hanya karena lebih banyak piksel yang dihitamkan, seperti yang diilustrasikan oleh contoh berikut:

Ini menyarankan penggunaan data pelatihan untuk menghitung kegelapan rata-rata untuk setiap digit, , 1, 2,ldots, 9$. Saat disajikan dengan gambar baru, kami menghitung seberapa gelap gambar tersebut, dan kemudian menebak bahwa digit mana saja yang memiliki rata-rata kegelapan terdekat. Ini adalah prosedur sederhana, dan mudah untuk dikodekan, jadi saya tidak akan menulis kode secara eksplisit - jika Anda tertarik, kode itu ada di repositori GitHub. Tapi ini adalah peningkatan besar dari tebakan acak, mendapatkan $2.225$ dari gambar uji $10.000$ dengan benar, yaitu, $22,25 persen akurasi.

Tidak sulit untuk menemukan ide lain yang mencapai akurasi dalam kisaran $20$ hingga $50$ persen. Jika Anda bekerja sedikit lebih keras, Anda bisa mendapatkan lebih dari $50$ persen. Tetapi untuk mendapatkan akurasi yang jauh lebih tinggi, ada baiknya menggunakan algoritme pembelajaran mesin yang sudah mapan. Mari kita coba menggunakan salah satu algoritma yang paling terkenal, yaitu mendukung mesin vektor atau SVM. Jika Anda tidak terbiasa dengan SVM, jangan khawatir, kami tidak perlu memahami detail cara kerja SVM. Sebagai gantinya, kami akan menggunakan pustaka Python yang disebut scikit-learn, yang menyediakan antarmuka Python sederhana ke pustaka berbasis C cepat untuk SVM yang dikenal sebagai LIBSVM.

Jika kita menjalankan pengklasifikasi SVM scikit-learn menggunakan pengaturan default, maka ia mendapatkan 9.435 dari 10.000 gambar uji yang benar. (Kode tersedia di sini.) Itu adalah peningkatan besar atas pendekatan naif kami dalam mengklasifikasikan gambar berdasarkan seberapa gelapnya. Memang, itu berarti kinerja SVM secara kasar sebaik jaringan saraf kita, hanya sedikit lebih buruk. Dalam bab-bab selanjutnya, kami akan memperkenalkan teknik baru yang memungkinkan kami meningkatkan jaringan saraf kami sehingga kinerjanya jauh lebih baik daripada SVM.

Itu bukan akhir dari cerita, namun. Hasil 9.435 dari 10.000 adalah untuk pengaturan default scikit-learn untuk SVM. SVM memiliki sejumlah parameter yang dapat disetel, dan dimungkinkan untuk mencari parameter yang meningkatkan kinerja out-of-the-box ini. Saya tidak akan secara eksplisit melakukan pencarian ini, melainkan merujuk Anda ke posting blog ini oleh Andreas Mueller jika Anda ingin tahu lebih banyak. Mueller menunjukkan bahwa dengan beberapa pekerjaan yang mengoptimalkan parameter SVM, dimungkinkan untuk mendapatkan kinerja di atas akurasi 98,5 persen. Dengan kata lain, SVM yang disetel dengan baik hanya membuat kesalahan pada sekitar satu digit dalam 70. Itu cukup bagus! Bisakah jaringan saraf melakukan lebih baik?

Sebenarnya, mereka bisa. Saat ini, jaringan saraf yang dirancang dengan baik mengungguli setiap teknik lain untuk memecahkan MNIST, termasuk SVM. Rekor (2013) saat ini mengklasifikasikan 9.979 dari 10.000 gambar dengan benar. Ini dilakukan oleh Li Wan, Matthew Zeiler, Sixin Zhang, Yann LeCun, dan Rob Fergus. Kita akan melihat sebagian besar teknik yang mereka gunakan nanti di buku ini. Pada tingkat itu, kinerjanya mendekati setara manusia, dan bisa dibilang lebih baik, karena beberapa gambar MNIST sulit dikenali bahkan oleh manusia dengan percaya diri, misalnya:

Saya percaya Anda akan setuju bahwa itu sulit untuk diklasifikasikan! Dengan gambar seperti ini dalam kumpulan data MNIST, sungguh luar biasa bahwa jaringan saraf dapat secara akurat mengklasifikasikan semua kecuali 21 dari 10.000 gambar uji. Biasanya, ketika memprogram, kami percaya bahwa memecahkan masalah rumit seperti mengenali digit MNIST membutuhkan algoritma yang canggih. Tetapi bahkan jaringan saraf di Wan dkk makalah yang baru saja disebutkan melibatkan algoritma yang cukup sederhana, variasi pada algoritma yang telah kita lihat dalam bab ini. Semua kerumitan dipelajari, secara otomatis, dari data pelatihan. Dalam beberapa hal, moral dari hasil kami dan yang ada di makalah yang lebih canggih, adalah untuk beberapa masalah: algoritma canggih $leq$ algoritma pembelajaran sederhana + data pelatihan yang baik.

Menuju pembelajaran yang mendalam

Sementara jaringan saraf kami memberikan kinerja yang mengesankan, kinerja itu agak misterius. Bobot dan bias dalam jaringan ditemukan secara otomatis. Dan itu berarti kami tidak segera memiliki penjelasan tentang bagaimana jaringan melakukan apa yang dilakukannya. Bisakah kita menemukan cara untuk memahami prinsip-prinsip yang digunakan jaringan kita untuk mengklasifikasikan angka tulisan tangan? Dan, dengan prinsip-prinsip seperti itu, dapatkah kita berbuat lebih baik?

Untuk menempatkan pertanyaan-pertanyaan ini lebih gamblang, anggaplah bahwa beberapa dekade kemudian jaringan saraf mengarah ke kecerdasan buatan (AI). Akankah kita memahami bagaimana jaringan cerdas seperti itu bekerja? Mungkin jaringan akan buram bagi kita, dengan bobot dan bias yang tidak kita pahami, karena mereka telah dipelajari secara otomatis. Pada hari-hari awal penelitian AI, orang berharap bahwa upaya untuk membangun AI juga akan membantu kita memahami prinsip-prinsip di balik kecerdasan dan, mungkin, fungsi otak manusia. Tapi mungkin hasilnya adalah kita akhirnya tidak memahami otak maupun cara kerja kecerdasan buatan!

Untuk menjawab pertanyaan-pertanyaan ini, mari kita pikirkan kembali interpretasi neuron buatan yang saya berikan di awal bab ini, sebagai alat untuk menimbang bukti. Misalkan kita ingin menentukan apakah suatu gambar menunjukkan wajah manusia atau tidak:

Kredit: 1. Ester Inbar. 2. Tidak diketahui. 3. NASA, ESA, G. Illingworth, D. Magee, dan P. Oesch (University of California, Santa Cruz), R. Bouwens (Leiden University), dan Tim HUDF09. Klik pada gambar untuk lebih jelasnya.

Kita dapat mengatasi masalah ini dengan cara yang sama seperti kita menyerang pengenalan tulisan tangan - dengan menggunakan piksel pada gambar sebagai input ke jaringan saraf, dengan output dari jaringan satu neuron menunjukkan "Ya, itu wajah" atau "Tidak, itu bukan wajah".

Misalkan kita melakukan ini, tetapi kita tidak menggunakan algoritma pembelajaran. Sebagai gantinya, kita akan mencoba merancang jaringan dengan tangan, memilih bobot dan bias yang sesuai. Bagaimana kita bisa melakukannya? Melupakan jaringan saraf sepenuhnya untuk saat ini, heuristik yang dapat kita gunakan adalah menguraikan masalah menjadi sub-masalah: apakah gambar memiliki mata di kiri atas? Apakah ada mata di kanan atas? Apakah ada hidung di tengah? Apakah ada mulut di tengah bawah? Apakah ada rambut di atas? Dan seterusnya.

Jika jawaban dari beberapa pertanyaan ini adalah "ya", atau bahkan hanya "mungkin ya", maka kita akan menyimpulkan bahwa gambar tersebut kemungkinan adalah wajah. Sebaliknya, jika jawaban sebagian besar pertanyaan adalah "tidak", maka gambar tersebut kemungkinan bukan wajah.

Tentu saja, ini hanya heuristik kasar, dan menderita banyak kekurangan. Mungkin orangnya botak, jadi tidak punya rambut. Mungkin kita hanya bisa melihat bagian wajah saja, atau wajah itu miring, sehingga beberapa fitur wajah menjadi kabur. Namun, heuristik menunjukkan bahwa jika kita dapat memecahkan sub-masalah menggunakan jaringan saraf, maka mungkin kita dapat membangun jaringan saraf untuk deteksi wajah, dengan menggabungkan jaringan untuk sub-masalah. Berikut adalah arsitektur yang mungkin, dengan persegi panjang yang menunjukkan sub-jaringan. Perhatikan bahwa ini tidak dimaksudkan sebagai pendekatan realistis untuk memecahkan masalah deteksi wajah, melainkan untuk membantu kita membangun intuisi tentang bagaimana jaringan berfungsi. Berikut arsitekturnya:

Masuk akal juga bahwa sub-jaringan dapat diurai. Misalkan kita sedang mempertimbangkan pertanyaan: "Apakah ada mata di kiri atas?" Ini dapat diuraikan menjadi pertanyaan seperti: "Apakah ada alis?" "Apakah ada bulu mata?" "Apakah ada iris?" dan seterusnya. Tentu saja, pertanyaan-pertanyaan ini harus benar-benar mencakup informasi posisi, juga - "Apakah alis di kiri atas, dan di atas iris?", Hal semacam itu - tetapi mari kita buat sederhana. Jaringan untuk menjawab pertanyaan "Apakah ada mata di kiri atas?" sekarang dapat diuraikan:

Pertanyaan-pertanyaan itu juga dapat dipecah, lebih jauh dan lebih jauh melalui beberapa lapisan. Pada akhirnya, kami akan bekerja dengan sub-jaringan yang menjawab pertanyaan dengan sangat sederhana sehingga dapat dengan mudah dijawab pada tingkat piksel tunggal. Pertanyaan-pertanyaan itu mungkin, misalnya, tentang ada atau tidak adanya bentuk yang sangat sederhana pada titik-titik tertentu dalam gambar. Pertanyaan semacam itu dapat dijawab oleh neuron tunggal yang terhubung ke piksel mentah dalam gambar.

Hasil akhirnya adalah jaringan yang memecah pertanyaan yang sangat rumit - apakah gambar ini menunjukkan wajah atau tidak - menjadi pertanyaan yang sangat sederhana yang dapat dijawab pada tingkat piksel tunggal. Ini dilakukan melalui serangkaian banyak lapisan, dengan lapisan awal menjawab pertanyaan yang sangat sederhana dan spesifik tentang gambar input, dan lapisan selanjutnya membangun hierarki konsep yang semakin kompleks dan abstrak. Jaringan dengan struktur banyak lapisan semacam ini - dua atau lebih lapisan tersembunyi - disebut jaringan saraf yang dalam.

Tentu saja, saya belum mengatakan bagaimana melakukan dekomposisi rekursif ini menjadi sub-jaringan. Tentu saja tidak praktis untuk mendesain sendiri bobot dan bias dalam jaringan. Sebagai gantinya, kami ingin menggunakan algoritme pembelajaran sehingga jaringan dapat secara otomatis mempelajari bobot dan bias - dan dengan demikian, hierarki konsep - dari data pelatihan. Para peneliti pada 1980-an dan 1990-an mencoba menggunakan penurunan gradien stokastik dan propagasi balik untuk melatih jaringan dalam. Sayangnya, kecuali untuk beberapa arsitektur khusus, mereka tidak memiliki banyak keberuntungan. Jaringan akan belajar, tetapi sangat lambat, dan dalam praktiknya seringkali terlalu lambat untuk berguna.

Sejak 2006, serangkaian teknik telah dikembangkan yang memungkinkan pembelajaran di jaringan saraf yang dalam. Teknik pembelajaran mendalam ini didasarkan pada penurunan gradien stokastik dan propagasi balik, tetapi juga memperkenalkan ide-ide baru. Teknik-teknik ini telah memungkinkan jaringan yang jauh lebih dalam (dan lebih besar) untuk dilatih - orang sekarang secara rutin melatih jaringan dengan 5 hingga 10 lapisan tersembunyi. Dan, ternyata ini bekerja jauh lebih baik pada banyak masalah daripada jaringan saraf dangkal, yaitu jaringan dengan hanya satu lapisan tersembunyi. Alasannya, tentu saja, adalah kemampuan jaring dalam untuk membangun hierarki konsep yang kompleks. Ini sedikit seperti cara bahasa pemrograman konvensional menggunakan desain modular dan ide tentang abstraksi untuk memungkinkan pembuatan program komputer yang kompleks. Membandingkan jaringan yang dalam dengan jaringan yang dangkal sedikit seperti membandingkan bahasa pemrograman dengan kemampuan untuk membuat panggilan fungsi ke bahasa yang dipreteli tanpa kemampuan untuk melakukan panggilan seperti itu. Abstraksi mengambil bentuk yang berbeda dalam jaringan saraf daripada dalam pemrograman konvensional, tetapi sama pentingnya.

Dalam karya akademis, silakan kutip buku ini sebagai: Michael A. Nielsen, "Neural Networks and Deep Learning", Determination Press, 2015

Karya ini dilisensikan di bawah Creative Commons Attribution-NonCommercial 3.0 Unported License. Ini berarti Anda bebas menyalin, membagikan, dan membuat buku ini, tetapi tidak untuk menjualnya. Jika Anda tertarik dalam penggunaan komersial, silahkan hubungi saya. Pembaruan terakhir: Kam 26 Des 15:26:33 2019


Panduan Pemrograman Serial untuk Sistem Operasi POSIX

Panduan Pemrograman Serial untuk Sistem Operasi POSIX akan mengajari Anda cara memprogram port serial dengan sukses, efisien, dan portabel pada workstation atau PC UNIX® Anda. Setiap bab memberikan contoh pemrograman yang menggunakan fungsi kontrol terminal POSIX (Portable Standard for UNIX) dan harus bekerja dengan sedikit modifikasi di bawah IRIX®, HP-UX, SunOS®, Solaris®, Digital UNIX®, Linux®, dan sebagian besar sistem operasi UNIX lainnya. Perbedaan terbesar antara sistem operasi yang akan Anda temukan adalah nama file yang digunakan untuk perangkat port serial dan file kunci.

Panduan ini disusun ke dalam bab dan lampiran berikut:

Bab ini memperkenalkan komunikasi serial, RS-232 dan standar lain yang digunakan pada kebanyakan komputer serta cara mengakses port serial dari program C.

Komputer mentransfer informasi (data) satu atau lebih bit pada suatu waktu. Serial mengacu pada transfer data satu bit pada satu waktu. Komunikasi serial mencakup sebagian besar perangkat jaringan, keyboard, mouse, MODEM, dan terminal.

Saat melakukan komunikasi serial, setiap kata (yaitu byte atau karakter) dari data yang Anda kirim atau terima dikirim satu per satu. Setiap bit aktif atau nonaktif. Istilah yang terkadang Anda dengar adalah tanda untuk status aktif dan spasi untuk status tidak aktif.

Kecepatan data serial paling sering dinyatakan sebagai bit per detik ("bps") atau kecepatan baudot ("baud"). Ini hanya mewakili jumlah satu dan nol yang dapat dikirim dalam satu detik. Kembali pada awal era komputer, 300 baud dianggap cepat, tetapi hari ini komputer dapat menangani kecepatan RS-232 setinggi 430.800 baud! Ketika baud rate melebihi 1.000, Anda biasanya akan melihat rate yang ditampilkan dalam kilo baud, atau kbps (mis. 9.6k, 19.2k, dll). Untuk tarif di atas 1.000.000, tarif tersebut ditampilkan dalam mega baud, atau Mbps (mis. 1,5Mbps).

Saat merujuk ke perangkat atau port serial, keduanya diberi label sebagai Peralatan Komunikasi Data ("DCE") atau Peralatan Terminal Data ("DTE"). Perbedaan antara ini sederhana - setiap pasangan sinyal, seperti mengirim dan menerima, ditukar. Saat menghubungkan dua DTE atau dua antarmuka DCE bersama-sama, kabel atau adaptor null-MODEM serial digunakan yang menukar pasangan sinyal.

RS-232 adalah antarmuka listrik standar untuk komunikasi serial yang ditentukan oleh Electronic Industries Association ("EIA"). RS-232 sebenarnya hadir dalam 3 rasa yang berbeda (A, B, dan C) dengan masing-masing menentukan rentang tegangan yang berbeda untuk level on dan off. Varietas yang paling umum digunakan adalah RS-232C, yang mendefinisikan bit tanda (on) sebagai tegangan antara -3V dan -12V dan bit spasi (mati) sebagai tegangan antara +3V dan +12V. Spesifikasi RS-232C mengatakan sinyal ini bisa mencapai sekitar 25 kaki (8m) sebelum menjadi tidak dapat digunakan. Anda biasanya dapat mengirim sinyal sedikit lebih jauh dari ini selama baud cukup rendah.

Selain kabel untuk data masuk dan keluar, ada kabel lain yang menyediakan pengaturan waktu, status, dan handshaking:

Tabel 1 - Penetapan Pin RS-232
PinKeteranganPinKeterangan PinKeteranganPinKeteranganPin Keterangan
1Tanah Bumi6 DSR - Kumpulan Data Siap11Belum ditetapkan16RXD sekunder 21Deteksi Kualitas Sinyal
2 TXD - Data yang Ditransmisikan7 GND - Dasar Logika12DCD sekunder17 Jam Penerima22Deteksi Cincin
3 RXD - Data yang Diterima8 DCD - Deteksi Pembawa Data13CTS sekunder18 Belum ditetapkan23Pilihan Kecepatan Data
4 RTS - Permintaan Untuk Mengirim9 Disimpan14TXD sekunder19RTS sekunder24Mengirimkan Jam
5 CTS - Hapus Untuk Dikirim10Disimpan 15Mengirimkan Jam20 DTR - Terminal Data Siap25Belum ditetapkan

Dua standar untuk antarmuka serial yang mungkin juga Anda lihat adalah RS-422 dan RS-574. RS-422 menggunakan tegangan yang lebih rendah dan sinyal diferensial untuk memungkinkan panjang kabel hingga sekitar 1000 kaki (300m). RS-574 mendefinisikan konektor serial dan voltase PC 9-pin.

Standar RS-232 mendefinisikan sekitar 18 sinyal berbeda untuk komunikasi serial. Dari jumlah tersebut, hanya enam yang umumnya tersedia di lingkungan UNIX.

GND - Dasar Logika

Secara teknis ground logika bukanlah sinyal, tetapi tanpanya tidak ada sinyal lain yang akan beroperasi. Pada dasarnya, ground logika bertindak sebagai tegangan referensi sehingga elektronik mengetahui tegangan mana yang positif atau negatif.

TXD - Data yang Ditransmisikan

Sinyal TXD membawa data yang dikirimkan dari workstation Anda ke komputer atau perangkat di ujung yang lain (seperti MODEM). Tegangan tanda ditafsirkan sebagai nilai 1, sedangkan tegangan ruang ditafsirkan sebagai nilai 0.

RXD - Data yang Diterima

Sinyal RXD membawa data yang dikirimkan dari komputer atau perangkat di ujung lain ke stasiun kerja Anda. Seperti TXD, tegangan tanda dan spasi diinterpretasikan sebagai 1 dan 0, masing-masing.

DCD - Deteksi Pembawa Data

Sinyal DCD diterima dari komputer atau perangkat di ujung lain kabel serial Anda. Tegangan spasi pada saluran sinyal ini menunjukkan bahwa komputer atau perangkat sedang terhubung atau tersambung. DCD tidak selalu digunakan atau tersedia.

DTR - Terminal Data Siap

Sinyal DTR dihasilkan oleh stasiun kerja Anda dan memberi tahu komputer atau perangkat di ujung lain bahwa Anda siap (tegangan spasi) atau tidak siap (tegangan tanda). DTR biasanya diaktifkan secara otomatis setiap kali Anda membuka antarmuka serial di workstation.

CTS - Hapus Untuk Dikirim

Sinyal CTS diterima dari ujung lain kabel serial. Tegangan spasi menunjukkan bahwa boleh saja mengirim lebih banyak data serial dari workstation Anda.

CTS biasanya digunakan untuk mengatur aliran data serial dari workstation Anda ke ujung yang lain.

RTS - Permintaan Untuk Mengirim

Sinyal RTS diatur ke tegangan ruang oleh stasiun kerja Anda untuk menunjukkan bahwa lebih banyak data siap dikirim.

Seperti CTS, RTS membantu mengatur aliran data antara workstation Anda dan komputer atau perangkat di ujung lain kabel serial. Sebagian besar stasiun kerja membiarkan sinyal ini disetel ke tegangan ruang sepanjang waktu.

Agar komputer dapat memahami data serial yang masuk ke dalamnya, diperlukan beberapa cara untuk menentukan di mana satu karakter berakhir dan karakter berikutnya dimulai. Panduan ini membahas secara eksklusif dengan data serial asinkron.

Dalam mode asinkron, jalur data serial tetap dalam status tanda (1) sampai karakter ditransmisikan. Sebuah bit awal mendahului setiap karakter dan segera diikuti oleh setiap bit dalam karakter, bit paritas opsional, dan satu atau lebih stop bit. Bit awal selalu berupa spasi (0) dan memberitahu komputer bahwa data serial baru tersedia. Data dapat dikirim atau diterima kapan saja, demikian namanya asynchronous.

Gambar 1 - Transmisi Data Asinkron

Bit paritas opsional adalah jumlah sederhana dari bit data yang menunjukkan apakah data tersebut berisi angka genap atau ganjil dari 1 bit. Dengan parity genap , bit paritas adalah 0 jika ada angka genap 1 dalam karakter.Dengan paritas ganjil, bit paritas adalah 0 jika ada angka ganjil 1 dalam data. Anda mungkin juga mendengar istilah paritas ruang, paritas tanda, dan tidak ada paritas. Space parity berarti bit parity selalu 0, sedangkan mark parity berarti bit selalu 1. No parity berarti tidak ada bit parity yang ada atau ditransmisikan.

Bit yang tersisa disebut stop bit. Mungkin ada 1, 1,5, atau 2 stop bit antara karakter dan mereka selalu memiliki nilai 1. Stop bit secara tradisional digunakan untuk memberi waktu komputer untuk memproses karakter sebelumnya, tetapi sekarang hanya berfungsi untuk menyinkronkan komputer penerima ke komputer masuk. karakter.

Format data asinkron biasanya dinyatakan sebagai "8N1", "7E1", dan seterusnya. Ini berdiri untuk "8 bit data, tanpa paritas, 1 stop bit" dan "7 bit data, bahkan paritas, 1 stop bit".

Dupleks penuh berarti bahwa komputer dapat mengirim dan menerima data secara bersamaan - ada dua saluran data terpisah (satu masuk, satu keluar).

Half duplex berarti komputer tidak dapat mengirim atau menerima data secara bersamaan. Biasanya ini berarti hanya ada satu saluran data untuk dibicarakan. Ini tidak berarti bahwa sinyal RS-232 tidak digunakan. Sebaliknya, ini biasanya berarti bahwa tautan komunikasi menggunakan beberapa standar selain RS-232 yang tidak mendukung operasi dupleks penuh.

Seringkali diperlukan untuk mengatur aliran data saat mentransfer data antara dua antarmuka serial. Hal ini dapat disebabkan oleh keterbatasan dalam tautan komunikasi serial perantara, salah satu antarmuka serial, atau beberapa media penyimpanan. Dua metode biasanya digunakan untuk data asinkron.

Metode pertama sering disebut "software" flow control dan menggunakan karakter khusus untuk memulai (XON atau DC1, 021 oktal) atau menghentikan (XOFF atau DC3, 023 oktal) aliran data. Karakter ini didefinisikan dalam American Standard Code for Information Interchange ("ASCII"). Meskipun kode ini berguna saat mentransfer informasi tekstual, kode ini tidak dapat digunakan saat mentransfer jenis informasi lain tanpa pemrograman khusus.

Metode kedua disebut kontrol aliran "hardware" dan menggunakan sinyal RS-232 CTS dan RTS alih-alih karakter khusus. Penerima menyetel CTS ke tegangan ruang saat siap menerima lebih banyak data dan ke tegangan tanda saat belum siap. Demikian juga, pengirim mengatur RTS ke tegangan ruang ketika siap untuk mengirim lebih banyak data. Karena kontrol aliran perangkat keras menggunakan serangkaian sinyal yang terpisah, ini jauh lebih cepat daripada kontrol aliran perangkat lunak yang perlu mengirim atau menerima beberapa bit informasi untuk melakukan hal yang sama. Kontrol aliran CTS/RTS tidak didukung oleh semua perangkat keras atau sistem operasi.

Biasanya sinyal penerimaan atau pengiriman data tetap pada tegangan tanda sampai karakter baru ditransfer. Jika sinyal dijatuhkan ke tegangan ruang untuk jangka waktu yang lama, biasanya 1/4 hingga 1/2 detik, maka dikatakan ada kondisi putus.

Istirahat kadang-kadang digunakan untuk mengatur ulang jalur komunikasi atau mengubah mode operasi perangkat keras komunikasi seperti MODEM. Bab 3, Berbicara dengan MODEM membahas aplikasi ini secara lebih mendalam.

Tidak seperti data asinkron, data sinkron muncul sebagai aliran bit yang konstan. Untuk membaca data di saluran, komputer harus menyediakan atau menerima jam bit yang sama sehingga pengirim dan penerima disinkronkan.

Bahkan dengan sinkronisasi ini, komputer harus menandai awal data entah bagaimana. Cara paling umum untuk melakukannya adalah dengan menggunakan protokol paket data seperti Serial Data Link Control ("SDLC") atau High-Speed ​​Data Link Control ("HDLC").

Setiap protokol mendefinisikan urutan bit tertentu untuk mewakili awal dan akhir paket data. Masing-masing juga mendefinisikan urutan bit yang digunakan ketika tidak ada data. Urutan bit ini memungkinkan komputer melihat awal dari sebuah paket data.

Karena protokol sinkron tidak menggunakan bit sinkronisasi per karakter, mereka biasanya memberikan setidaknya 25% peningkatan kinerja melalui komunikasi asinkron dan cocok untuk jaringan jarak jauh dan konfigurasi dengan lebih dari dua antarmuka serial.

Terlepas dari keunggulan kecepatan komunikasi sinkron, sebagian besar perangkat keras RS-232 tidak mendukungnya karena perangkat keras dan perangkat lunak tambahan yang diperlukan.

Seperti semua perangkat, UNIX menyediakan akses ke port serial melalui file perangkat. Untuk mengakses port serial Anda cukup membuka file perangkat yang sesuai.

Setiap port serial pada sistem UNIX memiliki satu atau lebih file perangkat (file di direktori /dev) yang terkait dengannya:

Tabel 2 - File Perangkat Port Serial
SistemPelabuhan 1Pelabuhan 2
IRIX®/dev/ttyf1/dev/ttyf2
HP-UX/dev/tty1p0/dev/tty2p0
Solaris®/SunOS®/dev/ttya/dev/ttyb
Linux®/dev/ttyS0/dev/ttyS1
UNIX® digital/dev/tty01/dev/tty02

Karena port serial adalah file, fungsi open(2) digunakan untuk mengaksesnya. Satu halangan dengan UNIX adalah bahwa file perangkat biasanya tidak dapat diakses oleh pengguna biasa. Solusinya termasuk mengubah izin akses ke file yang dipermasalahkan, menjalankan program Anda sebagai super-user (root), atau membuat program Anda set-userid sehingga berjalan sebagai pemilik file perangkat.

Untuk saat ini kita akan menganggap bahwa file tersebut dapat diakses oleh semua pengguna. Kode untuk membuka port serial 1 pada workstation sgi ® yang menjalankan IRIX adalah:

Daftar 1 - Membuka port serial.

Sistem lain akan memerlukan nama file perangkat yang sesuai, tetapi kodenya sama.

Buka Opsi

Anda akan melihat bahwa ketika kami membuka file perangkat, kami menggunakan dua tanda lain bersama dengan mode baca+tulis:

Bendera O_NOCTTY memberitahu UNIX bahwa program ini tidak ingin menjadi "mengendalikan terminal" untuk port tersebut. Jika Anda tidak menentukan ini, maka input apa pun (seperti sinyal pembatalan keyboard dan sebagainya) akan memengaruhi proses Anda. Program seperti getty(1M/8) menggunakan fitur ini saat memulai proses login, tetapi biasanya program pengguna tidak menginginkan perilaku ini.

Bendera O_NDELAY memberi tahu UNIX bahwa program ini tidak peduli status jalur sinyal DCD - apakah ujung port yang lain aktif dan berjalan. Jika Anda tidak menentukan flag ini, proses Anda akan ditidurkan sampai garis sinyal DCD adalah tegangan ruang.

Menulis data ke port itu mudah - cukup gunakan panggilan sistem tulis (2) untuk mengirim datanya:

Fungsi tulis mengembalikan jumlah byte yang dikirim atau -1 jika terjadi kesalahan. Biasanya satu-satunya kesalahan yang akan Anda hadapi adalah EIO ketika MODEM atau tautan data menjatuhkan jalur Data Carrier Detect (DCD). Kondisi ini akan bertahan sampai Anda menutup port.

Membaca data dari port sedikit lebih rumit. Saat Anda mengoperasikan port dalam mode data mentah, setiap panggilan sistem baca(2) akan kembali namun banyak karakter sebenarnya tersedia di buffer input serial. Jika tidak ada karakter yang tersedia, panggilan akan memblokir (menunggu) hingga karakter masuk, penghitung waktu interval berakhir, atau terjadi kesalahan. Fungsi baca dapat dibuat untuk segera kembali dengan melakukan hal berikut:

Opsi FNDELAY menyebabkan fungsi baca mengembalikan 0 jika tidak ada karakter yang tersedia di port. Untuk memulihkan perilaku (pemblokiran) normal, panggil fcntl() tanpa opsi FNDELAY:

Ini juga digunakan setelah membuka port serial dengan opsi O_NDELAY.

Untuk menutup port serial, cukup gunakan panggilan sistem tutup:

Menutup port serial juga biasanya akan mengatur sinyal DTR rendah yang menyebabkan sebagian besar MODEM hang.

Bab ini membahas cara mengkonfigurasi port serial dari C menggunakan antarmuka termios POSIX.

Sebagian besar sistem mendukung antarmuka terminal (serial) POSIX untuk mengubah parameter seperti baud rate, ukuran karakter, dan sebagainya. Hal pertama yang perlu Anda lakukan adalah menyertakan file <termios.h> ini mendefinisikan struktur kontrol terminal serta fungsi kontrol POSIX.

Dua fungsi POSIX yang paling penting adalah tcgetattr(3) dan tcsetattr(3) . Ini mendapatkan dan mengatur atribut terminal, masing-masing Anda memberikan pointer ke struktur termios yang berisi semua opsi serial yang tersedia:

Tabel 3 - Anggota Struktur Termios
AnggotaKeterangan
c_cflagOpsi kontrol
c_lflagOpsi baris
c_iflagOpsi masukan
c_oflagOpsi keluaran
c_ccKarakter kontrol
c_ispeedMasukan baud (antarmuka baru)
c_ospeedBaud keluaran (antarmuka baru)

Anggota c_cflag mengontrol baud rate, jumlah bit data, paritas, stop bit, dan kontrol aliran perangkat keras. Ada konstanta untuk semua konfigurasi yang didukung. Tabel 4 - Konstanta untuk Anggota c_cflag
KonstanKeterangan
CBAUDMasker bit untuk baud rate
B00 baud (jatuhkan DTR)
B5050 baud
B7575 baud
B110110 baud
B134134,5 baud
B150150 baud
B200200 baud
B300300 baud
B600600 baud
B12001200 baud
B18001800 baud
B24002400 baud
B48004800 baud
B96009600 baud
B19200tahun 2000 baud
B3840038400 baud
B5760057.600 baud
B7680076.800 baud
B115200115.200 baud
EXTAJam tarif eksternal
EXTBJam tarif eksternal
UKURAN CSMasker bit untuk bit data
CS55 bit data
CS66 bit data
CS77 bit data
CS88 bit data
CSTOPB2 stop bit (1 sebaliknya)
CREADAktifkan penerima
PARENBAktifkan bit paritas
parodiGunakan paritas ganjil alih-alih genap
HUPCLHangup (jatuhkan DTR) pada penutupan terakhir
KLOKALJalur lokal - jangan ubah "owner" dari port
LOBLKBlokir keluaran kontrol pekerjaan
CNEW_RTSCTS
CRTSCTS
Aktifkan kontrol aliran perangkat keras (tidak didukung di semua platform)

Anggota c_cflag berisi dua opsi yang harus selalu diaktifkan, CLOCAL dan CREAD . Ini akan memastikan bahwa program Anda tidak menjadi 'pemilik' port yang tunduk pada kontrol pekerjaan sporadis dan sinyal hangup, dan juga bahwa driver antarmuka serial akan membaca byte data yang masuk.

Konstanta baud rate ( CBAUD , B9600 , dll.) digunakan untuk antarmuka lama yang tidak memiliki anggota c_ispeed dan c_ospeed. Lihat bagian selanjutnya untuk informasi tentang fungsi POSIX yang digunakan untuk mengatur baud rate.

Jangan pernah menginisialisasi anggota c_cflag (atau flag lainnya) secara langsung, Anda harus selalu menggunakan operator bitwise AND, OR, dan NOT untuk mengatur atau menghapus bit pada anggota. Versi sistem operasi yang berbeda (dan bahkan tambalan) dapat dan memang menggunakan bit secara berbeda, jadi menggunakan operator bitwise akan mencegah Anda menghancurkan bit flag yang diperlukan dalam driver serial yang lebih baru.

Mengatur Baud Rate

Baud rate disimpan di tempat yang berbeda tergantung pada sistem operasi. Antarmuka yang lebih lama menyimpan baud rate di anggota c_cflag menggunakan salah satu konstanta baud rate pada tabel 4, sementara implementasi yang lebih baru menyediakan anggota c_ispeed dan c_ospeed yang berisi nilai baud rate yang sebenarnya.

Fungsi cfsetospeed(3) dan cfsetispeed(3) disediakan untuk mengatur baud rate dalam struktur termios terlepas dari antarmuka sistem operasi yang mendasarinya. Biasanya Anda akan menggunakan kode berikut untuk mengatur baud rate:

Listing 2 - Mengatur baud rate.

Fungsi tcgetattr(3) mengisi struktur termios yang Anda berikan dengan konfigurasi port serial saat ini. Setelah kita mengatur baud rate dan mengaktifkan mode lokal dan penerimaan data serial, kita memilih konfigurasi baru menggunakan tcsetattr(3) . Konstanta TCSANOW menetapkan bahwa semua perubahan harus segera terjadi tanpa menunggu data keluaran selesai dikirim atau data masukan selesai diterima. Ada konstanta lain untuk menunggu input dan output selesai atau untuk menyiram buffer input dan output.

Sebagian besar sistem tidak mendukung kecepatan input dan output yang berbeda, jadi pastikan untuk mengatur keduanya ke nilai yang sama untuk portabilitas maksimum.

Tabel 5 - Konstanta untuk tcsetattr
KonstanKeterangan
TCSANOWLakukan perubahan sekarang tanpa menunggu data selesai
TCSADRAINTunggu sampai semuanya telah terkirim
TCSAFLUSHSiram buffer input dan output dan buat perubahannya

Mengatur Ukuran Karakter

Berbeda dengan baud rate, tidak ada fungsi kenyamanan untuk mengatur ukuran karakter. Sebaliknya Anda harus melakukan sedikit bitmasking untuk mengatur segalanya. Ukuran karakter ditentukan dalam bit:

Mengatur Pemeriksaan Paritas

Seperti ukuran karakter, Anda harus secara manual mengatur pengaktifan paritas dan bit jenis paritas. Driver serial UNIX mendukung generasi bit genap, ganjil, dan tanpa paritas. Paritas ruang dapat disimulasikan dengan pengkodean yang cerdas.

  • Tidak ada paritas (8N1):
  • Paritas genap (7E1):
  • Paritas ganjil (7O1):
  • Paritas ruang diatur sama dengan tanpa paritas (7S1):

Mengatur Kontrol Aliran Perangkat Keras

Beberapa versi UNIX mendukung kontrol aliran perangkat keras menggunakan jalur sinyal CTS (Clear To Send) dan RTS (Request To Send). Jika konstanta CNEW_RTSCTS atau CRTSCTS ditentukan pada sistem Anda, maka kontrol aliran perangkat keras mungkin didukung. Lakukan hal berikut untuk mengaktifkan kontrol aliran perangkat keras:

Demikian pula, untuk menonaktifkan kontrol aliran perangkat keras:

Anggota mode lokal c_lflag mengontrol bagaimana karakter input dikelola oleh driver serial. Secara umum Anda akan mengonfigurasi anggota c_lflag untuk input kanonik atau mentah.

Tabel 6 - Konstanta untuk Anggota c_lflag
KonstanKeterangan
ISIGAktifkan sinyal SIGINTR, SIGSUSP, SIGDSUSP, dan SIGQUIT
ICANOAktifkan input kanonik (yang lain mentah)
XCASEPetakan huruf besar huruf kecil (usang)
GEMAAktifkan gema karakter input
gemaGema menghapus karakter sebagai BS-SP-BS
gemaGema NL setelah membunuh karakter
ECONLGema NL
NOFLSHNonaktifkan pembilasan buffer input setelah interupsi atau keluar dari karakter
IEXTENAktifkan fungsi yang diperluas
ECHOCTLGema karakter kontrol sebagai ^char dan hapus sebagai

?

ECHORTEcho menghapus karakter saat karakter terhapus
gemaBS-SP-BS seluruh baris on line kill
FLUSHOOutput sedang memerah
PENDINKetik ulang input yang tertunda pada pembacaan berikutnya atau input char
TOSTOPKirim SIGTTOU untuk output latar belakang

Memilih Input Kanonik

Input kanonik berorientasi pada garis. Karakter input dimasukkan ke dalam buffer yang dapat diedit secara interaktif oleh pengguna hingga karakter CR (carriage return) atau LF (line feed) diterima.

Saat memilih mode ini, Anda biasanya memilih opsi ICANON , ECHO , dan ECHOE:

Memilih Masukan Mentah

Masukan mentah tidak diproses. Karakter input dilewatkan persis seperti yang diterima, saat diterima. Umumnya Anda akan membatalkan pilihan ICANON , ECHO , ECHOE , dan ISIG saat menggunakan input mentah:

Catatan Tentang Masukan Gema

Jangan pernah mengaktifkan input echo ( ECHO, ECHOE ) saat mengirim perintah ke MODEM atau komputer lain yang menggemakan karakter, karena Anda akan menghasilkan loop umpan balik antara dua antarmuka serial!

Anggota mode input c_iflag mengontrol pemrosesan input apa pun yang dilakukan pada karakter yang diterima di port. Seperti bidang c_cflag, nilai akhir yang disimpan dalam c_iflag adalah bitwise OR dari opsi yang diinginkan.

Tabel 7 - Konstanta untuk Anggota c_iflag
KonstanKeterangan
INPCKAktifkan pemeriksaan paritas
IGNPARAbaikan kesalahan paritas
PARMRKTandai kesalahan paritas
ISTRIPStrip paritas bit
IXONAktifkan kontrol aliran perangkat lunak (keluar)
IXOFFAktifkan kontrol aliran perangkat lunak (masuk)
IXANYIzinkan karakter apa pun untuk mulai mengalir lagi
IGNBRKAbaikan kondisi istirahat
BRKINTKirim SIGINT ketika kondisi break terdeteksi
INLCRPetakan NL ke CR
IGNCRAbaikan CR
ICRNLPetakan CR ke NL
IUCLCPetakan huruf besar ke huruf kecil
IMAXBELGema BEL pada saluran input terlalu panjang

Mengatur Opsi Paritas Masukan

Anda harus mengaktifkan pemeriksaan paritas input ketika Anda telah mengaktifkan paritas di anggota c_cflag ( PARENB ). Konstanta yang relevan untuk pemeriksaan paritas masukan adalah INPCK , IGNPAR , PARMRK , dan ISTRIP . Umumnya Anda akan memilih INPCK dan ISTRIP untuk mengaktifkan pemeriksaan dan pengupasan bit paritas:

IGNPAR adalah opsi yang agak berbahaya yang memberi tahu driver serial untuk mengabaikan kesalahan paritas dan meneruskan data yang masuk seolah-olah tidak ada kesalahan yang terjadi. Ini dapat berguna untuk menguji kualitas tautan komunikasi, tetapi secara umum tidak digunakan untuk alasan praktis.

PARMRK menyebabkan kesalahan paritas 'ditandai' di aliran input menggunakan karakter khusus. Jika IGNPAR diaktifkan, karakter NUL (000 oktal) dikirim ke program Anda sebelum setiap karakter dengan kesalahan paritas. Jika tidak, karakter DEL (177 oktal) dan NUL dikirim bersama dengan karakter buruk.

Mengatur Kontrol Aliran Perangkat Lunak

Kontrol aliran perangkat lunak diaktifkan menggunakan konstanta IXON , IXOFF , dan IXANY:

Untuk menonaktifkan kontrol aliran perangkat lunak, cukup sembunyikan bit-bit itu:

Karakter XON (data awal) dan XOFF (data berhenti) didefinisikan dalam larik c_cc yang dijelaskan di bawah ini.

Anggota c_oflag berisi opsi pemfilteran keluaran. Seperti mode input, Anda dapat memilih output data yang diproses atau mentah.

Tabel 8 - Konstanta untuk Anggota c_oflag
KonstanKeterangan
OPOSTKeluaran pascaproses (tidak disetel = keluaran mentah)
OLCUPetakan huruf kecil ke huruf besar
ONLCRPetakan NL ke CR-NL
OCRNLPetakan CR ke NL
NOCRTidak ada keluaran CR pada kolom 0
ONLRETNL melakukan fungsi CR
OFILLGunakan karakter isian untuk penundaan
OFDELIsi karakter adalah DEL
NLDLYMasker untuk waktu tunda yang dibutuhkan antar baris
NL0Tidak ada penundaan untuk NL
NL1Tunda keluaran lebih lanjut setelah baris baru selama 100 milidetik
CRDLYMasker untuk waktu tunda yang diperlukan untuk mengembalikan kereta ke kolom kiri
CR0Tidak ada penundaan untuk CR
CR1Penundaan setelah CR tergantung pada posisi kolom saat ini
CR2Tunda 100 milidetik setelah mengirim CR
CR3Tunda 150 milidetik setelah mengirim CR
TABDLYMasker untuk waktu tunda yang dibutuhkan setelah TAB
TAB0Tidak ada penundaan untuk TAB
TAB1Penundaan setelah TAB tergantung pada posisi kolom saat ini
TAB2Tunda 100 milidetik setelah mengirim TAB
TAB3Perluas karakter TAB ke spasi
BSDLYMasker untuk waktu tunda yang dibutuhkan setelah BS
BS0Tidak ada penundaan untuk BS
BS1Tunda 50 milidetik setelah mengirim BS
VTDLYMasker untuk waktu tunda yang dibutuhkan setelah VT
VT0Tidak ada penundaan untuk VT
VT1Tunda 2 detik setelah mengirim VT
FFDLYMasker untuk waktu tunda yang diperlukan setelah FF
FF0Tidak ada penundaan untuk FF
FF1Tunda 2 detik setelah mengirim FF

Memilih Output yang Diproses

Output yang diproses dipilih dengan mengatur opsi OPOST di anggota c_oflag:

Dari semua opsi yang berbeda, Anda mungkin hanya akan menggunakan opsi ONLCR yang memetakan baris baru ke dalam pasangan CR-LF. Pilihan output lainnya terutama bersejarah dan berasal dari waktu ketika printer dan terminal saluran tidak dapat mengikuti aliran data serial!

Memilih Output Mentah

Output mentah dipilih dengan mengatur ulang opsi OPOST di anggota c_oflag:

Ketika opsi OPOST dinonaktifkan, semua bit opsi lain di c_oflag diabaikan.

Array karakter c_cc berisi definisi karakter kontrol serta parameter batas waktu. Konstanta didefinisikan untuk setiap elemen array ini.

Tabel 9 - Karakter Kontrol di Anggota c_cc
KonstanKeteranganKunci
VINTRMenggangguCTRL-C
VQUITBerhentiCTRL-Z
AYATMenghapusSpasi Belakang (BS)
VKILLGaris pembunuhanCTRL-U
VEOFAkhir fileCTRL-D
VEOLAkhir barisPengembalian kereta (CR)
VEOL2Akhir baris keduaUmpan baris (LF)
VMINJumlah minimum karakter untuk dibaca
VTIMEWaktu untuk menunggu data (sepersepuluh detik)

Mengatur Karakter Kontrol Aliran Perangkat Lunak

Elemen VSTART dan VSTOP dari larik c_cc berisi karakter yang digunakan untuk kontrol aliran perangkat lunak. Biasanya mereka harus diatur ke DC1 (021 oktal) dan DC3 (023 oktal) yang mewakili karakter XON dan XOFF standar ASCII.

Menyetel Batas Waktu Baca

Driver antarmuka serial UNIX menyediakan kemampuan untuk menentukan karakter dan batas waktu paket. Dua elemen array c_cc digunakan untuk timeout: VMIN dan VTIME . Batas waktu diabaikan dalam mode input kanonik atau ketika opsi NDELAY diatur pada file melalui open atau fcntl .

VMIN menentukan jumlah minimum karakter untuk dibaca. Jika disetel ke 0, maka nilai VTIME menentukan waktu untuk menunggu setiap karakter dibaca. Perhatikan bahwa ini tidak berarti bahwa panggilan baca untuk N byte akan menunggu N karakter masuk. Sebaliknya, batas waktu akan berlaku untuk karakter pertama dan panggilan baca akan mengembalikan jumlah karakter yang tersedia segera (hingga jumlah yang Anda meminta).

Jika VMIN bukan nol, VTIME menentukan waktu untuk menunggu karakter pertama dibaca. Jika karakter dibaca dalam waktu yang diberikan, setiap pembacaan akan memblokir (menunggu) hingga semua karakter VMIN dibaca. Artinya, setelah karakter pertama dibaca, driver antarmuka serial mengharapkan untuk menerima seluruh paket karakter (total VMIN byte). Jika tidak ada karakter yang dibaca dalam waktu yang diizinkan, maka panggilan untuk membaca mengembalikan 0. Metode ini memungkinkan Anda untuk memberi tahu driver serial bahwa Anda membutuhkan N byte dengan tepat dan panggilan baca apa pun akan mengembalikan 0 atau N byte. Namun, batas waktu hanya berlaku untuk karakter pertama yang dibaca, jadi jika karena alasan tertentu driver melewatkan satu karakter di dalam paket N byte maka panggilan baca dapat memblokir selamanya menunggu karakter input tambahan.

VTIME menentukan jumlah waktu untuk menunggu karakter yang masuk dalam sepersepuluh detik. Jika VTIME diatur ke 0 (default), pembacaan akan memblokir (menunggu) tanpa batas waktu kecuali opsi NDELAY diatur pada port dengan open atau fcntl .

Bab ini mencakup dasar-dasar komunikasi Modulator/Demodulator (MODEM) telepon dialup. Contoh disediakan untuk MODEM yang menggunakan set perintah standar de facto "AT".

MODEM adalah perangkat yang memodulasi data serial menjadi frekuensi yang dapat ditransfer melalui tautan data analog seperti saluran telepon atau sambungan TV kabel. Sebuah MODEM telepon standar mengubah data serial menjadi nada yang dapat dilewatkan melalui saluran telepon karena kecepatan dan kompleksitas konversi nada ini terdengar lebih seperti melengking keras jika Anda mendengarkan mereka.

MODEM Telepon tersedia saat ini yang dapat mentransfer data melalui saluran telepon dengan kecepatan hampir 53.000 bit per detik, atau 53kbps. Selain itu, sebagian besar MODEM menggunakan teknologi kompresi data yang dapat meningkatkan bit rate hingga lebih dari 100kbps pada beberapa jenis data.

Langkah pertama dalam berkomunikasi dengan MODEM adalah membuka dan mengkonfigurasi port untuk input mentah:

Listing 3 - Mengkonfigurasi port untuk input mentah.

Selanjutnya Anda perlu menjalin komunikasi dengan MODEM. Cara terbaik untuk melakukannya adalah dengan mengirimkan perintah "AT" ke MODEM. Ini juga memungkinkan MODEM pintar untuk mendeteksi baud yang Anda gunakan. Ketika MODEM terhubung dengan benar dan dihidupkan, itu akan merespons dengan respons "OK".

Listing 4 - Inisialisasi MODEM.

Kebanyakan MODEM mendukung kumpulan perintah "AT", disebut demikian karena setiap perintah dimulai dengan karakter "AT". Setiap perintah dikirim dengan karakter "AT" yang dimulai dari kolom pertama diikuti dengan perintah khusus dan carriage return (CR, 015 oktal). Setelah memproses perintah, MODEM akan membalas dengan salah satu dari beberapa pesan tekstual tergantung pada perintahnya.

ATD - Tekan Nomor

Perintah ATD memanggil nomor yang ditentukan. Selain angka dan tanda hubung, Anda dapat menentukan panggilan nada ("T") atau pulsa ("P"), jeda selama satu detik (","), dan tunggu nada panggil ("W"):

MODEM akan membalas dengan salah satu pesan berikut:

ATH - Tutup

Perintah ATH menyebabkan MODEM hang. Karena MODEM harus dalam mode "perintah", Anda mungkin tidak akan menggunakannya selama panggilan telepon biasa.

Sebagian besar MODEM juga akan hang jika DTR dijatuhkan, Anda dapat melakukan ini dengan mengatur baud ke 0 setidaknya selama 1 detik. Menjatuhkan DTR juga mengembalikan MODEM ke mode perintah.

Setelah berhasil menutup, MODEM akan membalas dengan "NO CARRIER". Jika MODEM masih terhubung, pesan "CONNECT" atau "CONNECT baud" akan terkirim.

ATZ - Setel Ulang MODEM

Pertama dan terpenting, jangan lupa untuk menonaktifkan input echoing . Gema input akan menyebabkan loop umpan balik antara MODEM dan komputer.

Kedua, saat mengirim perintah MODEM, Anda harus menghentikannya dengan carriage return (CR) dan bukan baris baru (NL). Konstanta karakter C untuk CR adalah " ".

Terakhir, ketika berhadapan dengan MODEM pastikan Anda menggunakan baud yang didukung MODEM. Sementara banyak MODEM melakukan deteksi baud otomatis, beberapa memiliki batasan (19.2kbps umum) yang harus Anda amati.

Bab ini membahas teknik pemrograman serial tingkat lanjut menggunakan panggilan sistem ioctl(2) dan pilih(2).

Dalam Bab 2, Mengkonfigurasi Port Serial kami menggunakan fungsi tcgetattr dan tcsetattr untuk mengkonfigurasi port serial. Di bawah UNIX fungsi-fungsi ini menggunakan panggilan sistem ioctl(2) untuk melakukan keajaibannya.

Panggilan sistem ioctl membutuhkan tiga argumen:

Argumen fd menentukan deskriptor file port serial. Argumen permintaan adalah konstanta yang ditentukan dalam file header <termios.h> dan biasanya salah satu dari berikut ini:

Tabel 10 - Permintaan IOCTL untuk Port Serial
MemintaKeteranganFungsi POSIX
TCGETSMendapatkan pengaturan port serial saat ini. tcgetattr
TCSETSMengatur pengaturan port serial dengan segera.tcsetattr(fd, TCSANOW, &amp;amp;amp;amp;amp;amp;)
TCSETSFMengatur pengaturan port serial setelah membilas buffer input dan output.tcsetattr(fd, TCSANOW, &amp;amp;amp;amp;amp;amp;)
TCSETSWMenyetel pengaturan port serial setelah membiarkan buffer input dan output terkuras/kosong. tcsetattr(fd, TCSANOW, &amp;amp;amp;amp;amp;amp;)
TCSBRKMengirim istirahat untuk waktu yang ditentukan. tcsendbreak, tcdrain
TCXONCMengontrol kontrol aliran perangkat lunak. tcflow
TCFLSHMembersihkan antrian input dan/atau output. tcflush
TIOCMGETMengembalikan status bit "MODEM". Tidak ada
TIOCMSETMenyetel status bit "MODEM". Tidak ada
BACA JUGAMengembalikan jumlah byte dalam buffer input.Tidak ada

TIOCMGET ioctl mendapatkan bit status "MODEM" saat ini, yang terdiri dari semua jalur sinyal RS-232 kecuali RXD dan TXD :

Tabel 11 - Konstanta Sinyal Kontrol
KonstanKeterangan
TIOCM_LEDSR (set data siap/line diaktifkan)
TIOCM_DTRDTR (terminal data siap)
TIOCM_RTSRTS (permintaan untuk mengirim)
TIOCM_STTXD sekunder (transmisi)
TIOCM_SRRXD sekunder (menerima)
TIOCM_CTSCTS (jelas untuk dikirim)
TIOCM_CARDCD (deteksi pembawa data)
TIOCM_CDSinonim untuk TIOCM_CAR
TIOCM_RNGRNG (cincin)
TIOCM_RISinonim untuk TIOCM_RNG
TIOCM_DSRDSR (set data siap)

Untuk mendapatkan bit status, panggil ioctl dengan pointer ke integer untuk menampung bit:

Listing 5 - Mendapatkan bit status MODEM.

TIOCMSET ioctl menyetel bit status "MODEM" yang ditentukan di atas. Untuk menjatuhkan sinyal DTR yang dapat Anda lakukan:

Daftar 6 - Menjatuhkan DTR dengan TIOCMSET ioctl.

Bit yang dapat diatur tergantung pada sistem operasi, driver, dan mode yang digunakan. Konsultasikan dokumentasi sistem operasi Anda untuk informasi lebih lanjut.

FIONREAD ioctl mendapatkan jumlah byte dalam buffer input port serial. Seperti halnya TIOCMGET, Anda memasukkan pointer ke integer untuk menampung jumlah byte:

Listing 7 - Mendapatkan jumlah byte dalam buffer input.

Ini dapat berguna saat polling port serial untuk data, karena program Anda dapat menentukan jumlah byte dalam buffer input sebelum mencoba membaca.

Sementara aplikasi sederhana dapat melakukan polling atau menunggu data yang datang dari port serial, sebagian besar aplikasi tidak sederhana dan perlu menangani input dari berbagai sumber.

UNIX menyediakan kemampuan ini melalui panggilan sistem pilih (2). Panggilan sistem ini memungkinkan program Anda untuk memeriksa kondisi input, output, atau kesalahan pada satu atau lebih deskriptor file. Deskriptor file dapat menunjuk ke port serial, file biasa, perangkat lain, pipa, atau soket. Anda dapat melakukan polling untuk memeriksa input yang tertunda, menunggu input tanpa batas waktu, atau batas waktu setelah jangka waktu tertentu, membuat panggilan sistem yang dipilih menjadi sangat fleksibel.

Sebagian besar GUI Toolkit menyediakan antarmuka untuk dipilih. Kami akan membahas pustaka X Intrinsik ("Xt") nanti di bab ini.

Panggilan sistem pilih menerima 5 argumen:

Argumen max_fd menentukan deskriptor file bernomor tertinggi dalam set input, output, dan kesalahan. Argumen input , output , dan error menentukan kumpulan deskriptor file untuk kondisi input, output, atau error yang tertunda menentukan NULL untuk menonaktifkan pemantauan kondisi terkait. Set ini diinisialisasi menggunakan tiga makro:

Makro FD_ZERO menghapus set seluruhnya. Makro FD_SET dan FD_CLR masing-masing menambah dan menghapus deskriptor file dari set.

Argumen timeout menentukan nilai timeout yang terdiri dari detik ( timeout.tv_sec ) dan mikrodetik ( timeout.tv_usec ). Untuk polling satu atau lebih deskriptor file, atur detik dan mikrodetik ke nol. Untuk menunggu tanpa batas, tentukan NULL untuk penunjuk batas waktu.

Panggilan sistem pilih mengembalikan jumlah deskriptor file yang memiliki kondisi tertunda, atau -1 jika ada kesalahan.

Misalkan kita membaca data dari port serial dan soket. Kami ingin memeriksa input dari salah satu deskriptor file, tetapi ingin memberi tahu pengguna jika tidak ada data yang terlihat dalam 10 detik. Untuk melakukan ini, kita perlu menggunakan panggilan sistem pilih:

Listing 8 - Menggunakan SELECT untuk memproses input dari lebih dari satu sumber.

Anda akan melihat bahwa pertama-tama kami memeriksa nilai pengembalian dari panggilan sistem yang dipilih. Nilai 0 dan -1 menghasilkan pesan peringatan dan kesalahan yang sesuai. Nilai yang lebih besar dari 0 berarti bahwa kami memiliki data yang tertunda pada satu atau lebih deskriptor file.

Untuk menentukan deskriptor file mana yang memiliki input tertunda, kami menggunakan makro FD_ISSET untuk menguji set input untuk setiap deskriptor file. Jika flag deskriptor file diatur maka kondisinya ada (input tertunda dalam kasus ini) dan kita perlu melakukan sesuatu.

Pustaka X Intrinsics menyediakan antarmuka ke panggilan sistem terpilih melalui fungsi XtAppAddInput(3x) dan XtAppRemoveInput(3x):

Panggilan sistem pilih digunakan secara internal untuk menerapkan batas waktu, prosedur kerja, dan memeriksa input dari server X. Fungsi-fungsi ini dapat digunakan dengan toolkit berbasis Xt termasuk Xaw, Lesstif, dan Motif.

Argumen proc ke XtAppAddInput menentukan fungsi yang akan dipanggil saat kondisi yang dipilih (mis. input tersedia) ada pada deskriptor file. Pada contoh sebelumnya Anda dapat menentukan fungsi process_fd atau process_socket.

Karena Xt membatasi akses Anda ke panggilan sistem tertentu, Anda harus menerapkan batas waktu melalui mekanisme lain, mungkin melalui XtAppAddTimeout(3x) .

Lampiran ini memberikan informasi pinout untuk banyak port serial umum yang akan Anda temukan.

RS-232 hadir dalam tiga rasa (A, B, C) dan menggunakan konektor D-Sub 25-pin:

Gambar 2 - Konektor RS-232

Tabel 12 - Sinyal RS-232
PinKeteranganPinKeterangan
1Tanah Bumi14TXD sekunder
2 TXD - Data yang Ditransmisikan15 Mengirimkan Jam
3 RXD - Data yang Diterima16 RXD sekunder
4 RTS - Permintaan Untuk Mengirim17 Jam Penerima
5 CTS - Hapus Untuk Dikirim18 Belum ditetapkan
6 DSR - Kumpulan Data Siap19 RTS sekunder
7 GND - Dasar Logika20 DTR - Terminal Data Siap
8 DCD - Deteksi Pembawa Data21 Deteksi Kualitas Sinyal
9Disimpan22Deteksi Cincin
10Disimpan23Pilihan Kecepatan Data
11Belum ditetapkan24Mengirimkan Jam
12DCD sekunder25Belum ditetapkan
13CTS sekunder

RS-422 juga menggunakan konektor D-Sub 25-pin, tetapi dengan sinyal diferensial:

Gambar 3 - Konektor RS-422

Tabel 13 - Sinyal RS-422
PinKeteranganPinKeterangan
1Tanah Bumi14TXD+
2 TXD- - Data yang Ditransmisikan15 Mengirimkan Jam-
3 RXD- - Data yang Diterima16RXD+
4 RTS- - Permintaan Untuk Mengirim17 Jam Penerima-
5 CTS- - Hapus Untuk Mengirim18 Belum ditetapkan
6 DSR - Kumpulan Data Siap19RTS+
7 GND - Dasar Logika20 DTR- - Terminal Data Siap
8 DCD- - Deteksi Pembawa Data21 Deteksi Kualitas Sinyal
9Disimpan22Belum ditetapkan
10Disimpan23 DTR+
11Belum ditetapkan24Kirim Jam+
12DCD+25Jam Penerima+
13CTS+

Antarmuka RS-574 digunakan secara eksklusif oleh produsen PC dan menggunakan konektor D-Sub pria 9-pin:

Gambar 4 - Konektor RS-574

Tabel 14 - Sinyal RS-574 (IBM PC/AT)
PinKeteranganPinKeterangan
1 DCD - Deteksi Pembawa Data6 Kumpulan Data Siap
2 RXD - Data yang Diterima7 RTS - Permintaan Untuk Mengirim
3 TXD - Data yang Ditransmisikan8 CTS - Hapus Untuk Dikirim
4 DTR - Terminal Data Siap9 Deteksi Cincin
5 GND - Dasar Logika

Peralatan SGI yang lebih lama menggunakan konektor D-Sub perempuan 9-pin. Tidak seperti RS-574, pinout SGI hampir sama dengan pinout RS-232:

Gambar 5 - Konektor 9-Pin SGI

Tabel 15 - Sinyal DSUB 9-Pin SGI
PinKeteranganPinKeterangan
1Tanah Bumi6 DSR - Kumpulan Data Siap
2 TXD - Data yang Ditransmisikan7 GND - Dasar Logika
3 RXD - Data yang Diterima8 DCD - Deteksi Pembawa Data
4 RTS - Permintaan Untuk Mengirim9 DTR - Terminal Data Siap
5 CTS - Hapus Untuk Dikirim

Workstation SGI Indigo, Indigo2, dan Indy menggunakan konektor MiniDIN Apple 8-pin untuk port serialnya:


Tonton videonya: TUTORIAL Cara Gampang Setting Metatrader. MT4 versi PC. Komputer (Oktober 2021).