**Architectural changes.** Instead of modifying the API, we could instead make changes to the model. Our attack only works because the hidden dimension \(h\) is less than the output dimension \(l\). This suggests a natural architectural defense: split the final layer into two layers, one that goes from \(h\to t\) and then \(t\to l\) where \(t>l\) and a nonlinearity was placed in between. This is not very efficient though, as the last linear layer is large (quadratic in the vocabulary size).
**Architectural changes.** API를 수정하는 대신 모델을 변경할 수도 있습니다. 숨겨진 차원 \(h\)가 출력 차원 \(l\)보다 작기 때문에 공격이 작동합니다. 이는 최종 레이어를 \(h\to t\)에서 \(t\to l\)로 가는 레이어와 그 사이에 비선형성이 배치된 두 개의 레이어로 분할하는 자연스러운 architectural defense 수단을 제안합니다. 그러나 마지막 linear layer가 크기 때문에(어휘 크기의 제곱) 효율적이지 않습니다.
**아키텍처 변경**. API를 수정하는 대신 모델을 변경할 수도 있습니다. 숨겨진 차원 \(h\)가 출력 차원 \(l\)보다 작기 때문에 공격이 작동합니다. 이는 최종 레이어를 \(h\to t\)에서 \(t\to l\)로 가는 레이어와 그 사이에 비선형성이 배치된 두 개의 레이어로 분할하는 자연스러운 아키텍처 방어 수단을 제안합니다. 그러나 마지막 선형 레이어가 크기 때문에(어휘 크기의 제곱) 효율적이지 않습니다.