รหัสโพลาร์

รหัสโพลาร์ ถูกคิดค้นในปี พ.ศ.2552 โดยเออร์ดัล อริกาน (Erdal Arikan) ซึ่งเป็นรหัสช่องสัญญาณชนิดแรกที่สามารถพิสูจน์ได้โดยตรงว่าเข้าใกล้ทฤษฎีความจุช่องสัญญาณของแชนนอน (Shannon’s limit) ต่างจากรหัสช่องสัญญาณชนิดอื่นที่ต้องใช้การพิสูจน์ทางอ้อม

รูปที่ 1 Erdal Arikan ผู้คิดค้นรหัสโพล่าร์ในปี่ พ.ศ.2552
รูปที่ 2 Erdal Arikan รับรางวัลในฐานะบิดาแห่งรหัสโพล่าร์จากบริษัท Huawei
"I am honored to be here today receiving this award," Dr. Erdal Arikan said to more than a hundred of his fellow scientists and engineers. "As engineers, there is no greater reward than seeing our ideas turn into reality."
Erdal Arikan
Father of polar code

แนวคิดหลักของรหัสโพลาร์คือการแปลงช่องสัญญาณให้กลายเป็นช่องสัญญาณย่อยที่มีคุณสมบัติแตกต่างกัน โดยช่องสัญญาณย่อยส่วนหนึ่งจะมีปริมาณของสัญญาณรบกวนมากกว่าช่องสัญญาณเดิม และช่องสัญญาณย่อยอีกส่วนหนึ่งจะมีปริมาณของสัญญาณรบกวนน้อยกว่าช่องสัญญาณเดิม หลักการดังกล่าวเรียกว่า การโพลาไรซ์ของช่องสัญญาณ (Channel polarization) ช่องสัญญาณที่ผ่านโพลาไรซ์จะถูกนำมาใช้สำหรับส่งบิตข้อมูล โดยเลือกช่องสัญญาณที่มีคุณภาพดีที่สุดหรือมีปริมาณของสัญญาณรบกวนน้อยที่สุด และช่องสัญญาณที่เหลือจะถูกใช้สำหรับส่งบิตที่ถูกกำหนดไว้ เรียกว่า บิตแช่แข็ง (Frozen bit)

รูปที่ 3 แผนภาพการเข้ารหัสโพลาร์ที่มีความยาวของคำรหัสเท่ากับ 8 บิต
รูปที่ 4 แผนภาพการถอดรหัสโพลาร์มีความยาวของคำรหัสเท่ากับ 8 บิต

รายละเอียดเพิ่มเติม . . .

การนิยามรหัสโพลาร์สามารถทำได้โดยใช้พารามิเตอร์ 4 ค่า คือ \((N,K,\mathcal{I},\mathcal{F})\) โดยที่

\(N\) คือ ความยาวของคำรหัส

\(K\) คือ ความยาวของบิตข้อมูล

\(\mathcal{I}\) คือ เซตของตำแหน่งบิตข้อมูล

\(\mathcal{F}\) คือ เซตของตำแหน่งบิตแช่แข็ง

การเข้ารหัสโพลาร์สามารถทำได้โดย

\(\displaystyle \mathbf{x}_{1}^{N}=\mathbf{u}_{1}^{N}{{\mathbf{G}}_{N}}\)

โดยที่ \(\mathbf{u}_{1}^{N}=[{{u}_{1}},\ldots ,{{u}_{N}}]\) คือ เวกเตอร์ของข่าวสารที่ประกอบด้วยบิตข้อมูลและบิตแช่แข็ง

\(\mathbf{x}_{1}^{N}=[{{x}_{1}},\ldots ,{{x}_{N}}]\)  คือ เวกเตอร์ของคำรหัส

\({{\mathbf{G}}_{N}}\)  คือ เมทริกโพลาไรซ์

การสร้างเมทริกซ์โพลาไรซ์ \({{\mathbf{G}}_{N}}\) ทำได้โดยการหาผลคูณแบบครอนเนกเกอร์ (Kronecker product) ของเมทริกซ์ \(\mathbf{F}=\left[ {\begin{array}{*{20}{c}} 1 & 0 \\ 1 & 1 \end{array}} \right]\)  เมทริกซ์โพลาร์จำนวน  \(n\) ครั้ง โดยที่ \(n={{\log }_{2}}(N)\) ดังแสดงในสมการ

\({{\mathbf{G}}_{N}}={{\mathbf{F}}^{{\otimes n}}}\)

นอกจากนี้ การเข้ารหัสโพลาร์สามารถสามารถพิจารณาในรูปแผนภาพวงจรได้ดังรูปที่ 3 โดยที่ \(\oplus \) เป็นการบวกแบบมอดูโล 2 (mod-2)

จากรูปที่ 1.1 แสดงแผนภาพการเข้ารหัสโพลาร์ซึ่งสอดคล้องกับเมทริกซ์โพลาไรซ์ ซึ่งจะเห็นว่า
เมทริกซ์โพลาไรซ์ \({{\mathbf{G}}_{N}}\)  สามารถขยายให้เป็นเมทริกซ์โพลาไรซ์ \({{\mathbf{G}}_{{2N}}}\) ได้โดย

\({{\mathbf{G}}_{{2N}}}=\left[ {\begin{array}{*{20}{c}} {{{\mathbf{G}}_{N}}} & 0 \\ {{{\mathbf{G}}_{N}}} & {{{\mathbf{G}}_{N}}} \end{array}} \right]\)

หมายเหตุ นิยามของผลคูณแบบครอนเนกเกอร์

กำหนดให้ \(\mathbf{A}=\left[ {\begin{array}{*{20}{c}} {{{\mathbf{a}}_{{11}}}} & {{{\mathbf{a}}_{{12}}}} \\ {{{\mathbf{a}}_{{21}}}} & {{{\mathbf{a}}_{{22}}}} \end{array}} \right]\)  และ  \(\mathbf{B}=\left[ {\begin{array}{*{20}{c}} {{{\mathbf{b}}_{{11}}}} & {{{\mathbf{b}}_{{12}}}} \\ {{{\mathbf{b}}_{{21}}}} & {{{\mathbf{b}}_{{22}}}} \end{array}} \right]\) ผลคูณแบบครอนเนกเกอร์ของเมทริกซ์ \(\mathbf{A}\) และ  \(\mathbf{B}\) หาได้จาก

\(\displaystyle \mathbf{A}\otimes \mathbf{B}=\left[ {\begin{array}{*{20}{c}} {{{\mathbf{a}}_{{11}}}\mathbf{B}} & {{{\mathbf{a}}_{{12}}}\mathbf{B}} \\ {{{\mathbf{a}}_{{21}}}\mathbf{B}} & {{{\mathbf{a}}_{{22}}}\mathbf{B}} \end{array}} \right]=\left[ {\begin{array}{*{20}{c}} {{{\mathbf{a}}_{{11}}}{{\mathbf{b}}_{{11}}}} & {{{\mathbf{a}}_{{11}}}{{\mathbf{b}}_{{12}}}} & {{{\mathbf{a}}_{{12}}}{{\mathbf{b}}_{{11}}}} & {{{\mathbf{a}}_{{12}}}{{\mathbf{b}}_{{12}}}} \\ {{{\mathbf{a}}_{{11}}}{{\mathbf{b}}_{{21}}}} & {{{\mathbf{a}}_{{11}}}{{\mathbf{b}}_{{22}}}} & {{{\mathbf{a}}_{{12}}}{{\mathbf{b}}_{{21}}}} & {{{\mathbf{a}}_{{12}}}{{\mathbf{b}}_{{22}}}} \\ {{{\mathbf{a}}_{{21}}}{{\mathbf{b}}_{{11}}}} & {{{\mathbf{a}}_{{21}}}{{\mathbf{b}}_{{12}}}} & {{{\mathbf{a}}_{{22}}}{{\mathbf{b}}_{{11}}}} & {{{\mathbf{a}}_{{22}}}{{\mathbf{b}}_{{12}}}} \\ {{{\mathbf{a}}_{{21}}}{{\mathbf{b}}_{{21}}}} & {{{\mathbf{a}}_{{21}}}{{\mathbf{b}}_{{22}}}} & {{{\mathbf{a}}_{{22}}}{{\mathbf{b}}_{{21}}}} & {{{\mathbf{a}}_{{22}}}{{\mathbf{b}}_{{22}}}} \end{array}} \right]\)

การวิเคราะห์คุณภาพของช่องสัญญาณย่อยที่ได้จากการโพลาไรซ์จะถูกนำมาใช้ในการกำหนดตำแหน่งของบิตแช่แข็ง โดยเลือกช่องสัญญาณที่มีความน่าเชื่อถือสูงที่สุดจำนวน \(K\) ช่อง ให้เป็นตำแหน่งของบิตข้อมูล และเลือกช่องสัญญาณที่เหลือจำนวน \(N-K\)

เป็นตำแหน่งของบิตแช่แข็ง วิธีการที่ใช้ในการวิเคราะห์ความน่าเชื่อถือของช่องสัญญาณย่อยจะขึ้นอยู่กับชนิดของช่องสัญญาณ เช่น การใช้พารามิเตอร์ Bhattacharyya ในการวิเคราะห์คุณภาพช่องสัญญาณแบบไบนารีที่มีการสูญหาย (Binary Erasure channel: BEC) และการใช้วิวัฒนาการความหนาแน่นสำหรับวิเคราะห์คุณภาพของช่องสัญญาณแบบเกาส์เซียน (Additive white Gaussian noise: AWGN)

ต้องการส่งข้อมูล \([1,0,1,1]\) โดยมีอัตรารหัส \(R=0.5\) และมีตำแหน่งของบิตแช่แข็งคือ \(\mathcal{F}=\{1,2,3,5\}\) จะได้

เวกเตอร์ของข่าวสาร \(\mathbf{u}_{1}^{8}=[0,0,0,1,0,0,1,1]\)

เมทริกซ์ตัวกำเนิด \({{\mathbf{G}}_{8}}={{\mathbf{F}}^{{\otimes 3}}}=\left[ {\begin{array}{*{20}{l}} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\ 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\ 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\ 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \end{array}} \right]\)

เวกเตอร์คำรหัส \(\displaystyle \mathbf{x}_{1}^{8}=\mathbf{u}_{1}^{8}{{\mathbf{G}}_{N}}=[1,0,1,0,0,1,0,1]\)

การถอดรหัสโพลาร์ด้วยตัวถอดรหัสแบบหักล้างอย่างต่อเนื่อง (Successive cancellation: SC)  ข่าวสารที่ได้รับจากช่องสัญญาณแต่ละบิต \({{y}_{i}}\) จะถูกนำมาคำนวนอัตราส่วนความควรจะเป็นแบบล็อก (Log-likelihood ratio: LLR) ดังสมการ

\(\displaystyle \begin{array}{l}{{L}_{i}}=\log \left( {\frac{{P({{x}_{i}}=0|{{y}_{i}})}}{{P({{x}_{i}}=1|{{y}_{i}})}}} \right)\\\ \ \ =\log \left( {\frac{{P({{y}_{i}}|{{x}_{i}}=0)P({{x}_{i}}=0)}}{{P({{y}_{i}}|{{x}_{i}}=1)P({{x}_{i}}=1)}}} \right)\end{array}\)

โดย \({{y}_{i}}\) คือค่าของสัญญาณที่ได้รับบิตที่ \(i\) และ \(\displaystyle {{x}_{i}}\) คือค่าของบิตที่ส่งออกจากทางภาคส่งบิตที่ \(i\)

โครงสร้างการถอดรหัสโพลาร์ประกอบด้วย 2 โหนดคือ โหนดตรวจสอบ (Check node) และโหนดตัวแปร (Variable node) ดังรูปที่ 4 โดยการคำนวนค่า LLR ที่ออกจากโหนดตรวจสอบและโหนดตัวแปรแสดงดังสมการด้านล่าง

\({{L}_{{cn}}}=2{{\tanh }^{{-1}}}\left( {\tanh \frac{{{{L}_{{{{a}_{1}}}}}}}{2}\tanh \frac{{{{L}_{{{{a}_{2}}}}}}}{2}} \right)\)

\({{L}_{{vn}}}={{L}_{{{{b}_{1}}}}}+{{L}_{{{{b}_{2}}}}}\)

โดยที่ \({{L}_{{{{a}_{1}}}}}\) และ  \({{L}_{{{{a}_{2}}}}}\) คือ ค่า LLR ที่เข้าสู่โหนดตรวจสอบค่าที่ 1 และค่าที่ 2

โดยที่ \({{L}_{{{{b}_{1}}}}}\) และ  \({{L}_{{{{b}_{2}}}}}\) คือ ค่า LLR ที่เข้าสู่โหนดตัวแปรค่าที่ 1 และค่าที่ 2 

จากรูปที่ 4 แสดงแผนภาพการถอดรหัสโพลาร์ซึ่งประกอบด้วยโหนดตรวจสอบและโหนดตัวแปร โดยค่า LLR จะถูกคำนวณผ่านแต่ละโหนดและเมื่อทำการถอดรหัสจนถึงขั้นสุดท้าย ในกรณีตำแหน่งนั้นเป็นตำแหน่งของบิตแช่แข็ง ค่าของบิตนั้นจะถูกตัดสินใจเป็นค่าของบิตแช่แข็งที่กำหนดไว้ก่อนการเข้ารหัสโดยไม่คำนึงถึงค่า LLR ที่ได้ แต่หากตำแหน่งนั้นเป็นตำแหน่งของบิตข้อมูล ค่า LLR ที่ได้จะถูกตัดสินใจดังสมการ

\(\displaystyle {{\hat{u}}_{i}}=\left\{ {\begin{array}{*{20}{l}} 0 & {;{{L}_{i}}>0} \\ 1 & {;{{L}_{i}}\le 1} \end{array}} \right.\)

ข้อจำกัดของการถอดรหัสโพลาร์ด้วยตัวถอดรหัสแบบ SC คือ สามารถถอดรหัสได้ทีละ 1 บิต ตามลำดับเท่านั้น และบิตที่ถอดรหัสเสร็จสิ้นก่อนหน้าจะถูกป้อนกลับเพื่อให้ในการถอดรหัสบิตถัดไปจนกว่าจะสามารถถอดรหัสได้ครบทุกบิต

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *