Pytorch에서 Alphafold 3 구현
여기에서 이 연구에 대해 다른 연구자와 대화할 수 있습니다.
Sergey의 논문 검토
Elana P. Simon의 그림 가이드
Max Jaderberg의 토크
Lightning + Hydra를 완벽하게 지원하는 포크는 Alex가 이 저장소에서 유지관리하고 있습니다.
저장소에서 사용되는 생명 분자의 시각화를 여기에서 보고 상호 작용할 수 있습니다.
상대 위치 인코딩 및 부드러운 LDDT 손실에 기여한 Joseph!
Weighted Rigid Align, Express Coordinates In Frame, Compute Alignment Error 및 Center Random Augmentation 모듈에 기여한 Felipe!
복사된 알고리즘의 다양한 문제를 해결한 Alex
논문의 불일치를 지적하고 해결책을 요청한 Heng
디스토그램 손실에 대한 분자 원자 지수 관련 문제를 찾아주신 Heng
몇 가지 잘못된 하이퍼파라미터를 찾아낸 Wei Lu
PDB 데이터세트 준비 스크립트를 도와주신 Alex님!
PDB 데이터 세트 클러스터링 스크립트를 최적화하기 위한 Milot!
기본적으로 PDB 구문 분석부터 훈련을 위한 분자 및 원자 입력까지 전체 거대한 흐름을 작성해 준 Alex
가중치가 부여된 PDB 데이터세트 샘플링 작업에 참여한 Andrei!
WeightedRigidAlign
에 전달되는 좌표 문제에 대한 작은 수정 사항을 제출한 Jimin
신뢰도 측정, 충돌 페널티 순위 및 샘플 순위 논리에 기여해 주신 @xluo233님!
PDBDataset
내에서 WeightedPDBSampler
를 통합 및 테스트하고 MSA 및 템플릿 구문 분석에 대한 초기 지원을 추가하기 위한 sj900!
모델 선택 점수와 해결되지 않은 rasa를 계산하기 위한 논리를 제공해주신 @xluo233님!
Fandi는 보충 설명을 통해 원자 확산 모듈에서 몇 가지 불일치를 발견했습니다.
PDB neutral stable molecule
가설을 제안한 Paolo!
Alphafold3Inputs
의 금속 이온 분자 ID 할당과 관련된 버그를 수정해 주신 Dhuvi!
mmCIF에 저장하기 위해 Alphafold3Input
BioMolecule
로 변환하는 논리를 맡아주신 Dhuvi님!
이 코드베이스의 디스토그램 및 템플릿 단위 벡터 계산과 OpenFold의 계산 사이의 불일치를 식별해 준 Tom(Discord 채널의)(그리고 디스토그램 문제를 해결하는 데 도움을 준 Andrei)!
폴리머 잔류물에서 비표준 원자가 처리되는 방식에 대한 버그를 식별한 Kaihui!
Gradio 프론트엔드 인터페이스를 맡아주신 Andrei님!
jaxtyping을 담당하는 Patrick, einx를 담당하는 Florian, einops를 담당하는 Alex
이 작업을 오픈소스화할 수 있는 기회를 준 Soumith와 Pytorch 조직
$ pip install alphafold3-pytorch
import torch
from alphafold3_pytorch import Alphafold3
from alphafold3_pytorch . utils . model_utils import exclusive_cumsum
alphafold3 = Alphafold3 (
dim_atom_inputs = 77 ,
dim_template_feats = 108
)
# mock inputs
seq_len = 16
molecule_atom_indices = torch . randint ( 0 , 2 , ( 2 , seq_len )). long ()
molecule_atom_lens = torch . full (( 2 , seq_len ), 2 ). long ()
atom_seq_len = molecule_atom_lens . sum ( dim = - 1 ). amax ()
atom_offsets = exclusive_cumsum ( molecule_atom_lens )
atom_inputs = torch . randn ( 2 , atom_seq_len , 77 )
atompair_inputs = torch . randn ( 2 , atom_seq_len , atom_seq_len , 5 )
additional_molecule_feats = torch . randint ( 0 , 2 , ( 2 , seq_len , 5 ))
additional_token_feats = torch . randn ( 2 , seq_len , 33 )
is_molecule_types = torch . randint ( 0 , 2 , ( 2 , seq_len , 5 )). bool ()
is_molecule_mod = torch . randint ( 0 , 2 , ( 2 , seq_len , 4 )). bool ()
molecule_ids = torch . randint ( 0 , 32 , ( 2 , seq_len ))
template_feats = torch . randn ( 2 , 2 , seq_len , seq_len , 108 )
template_mask = torch . ones (( 2 , 2 )). bool ()
msa = torch . randn ( 2 , 7 , seq_len , 32 )
msa_mask = torch . ones (( 2 , 7 )). bool ()
additional_msa_feats = torch . randn ( 2 , 7 , seq_len , 2 )
# required for training, but omitted on inference
atom_pos = torch . randn ( 2 , atom_seq_len , 3 )
distogram_atom_indices = molecule_atom_lens - 1
distance_labels = torch . randint ( 0 , 37 , ( 2 , seq_len , seq_len ))
resolved_labels = torch . randint ( 0 , 2 , ( 2 , atom_seq_len ))
# offset indices correctly
distogram_atom_indices += atom_offsets
molecule_atom_indices += atom_offsets
# train
loss = alphafold3 (
num_recycling_steps = 2 ,
atom_inputs = atom_inputs ,
atompair_inputs = atompair_inputs ,
molecule_ids = molecule_ids ,
molecule_atom_lens = molecule_atom_lens ,
additional_molecule_feats = additional_molecule_feats ,
additional_msa_feats = additional_msa_feats ,
additional_token_feats = additional_token_feats ,
is_molecule_types = is_molecule_types ,
is_molecule_mod = is_molecule_mod ,
msa = msa ,
msa_mask = msa_mask ,
templates = template_feats ,
template_mask = template_mask ,
atom_pos = atom_pos ,
distogram_atom_indices = distogram_atom_indices ,
molecule_atom_indices = molecule_atom_indices ,
distance_labels = distance_labels ,
resolved_labels = resolved_labels
)
loss . backward ()
# after much training ...
sampled_atom_pos = alphafold3 (
num_recycling_steps = 4 ,
num_sample_steps = 16 ,
atom_inputs = atom_inputs ,
atompair_inputs = atompair_inputs ,
molecule_ids = molecule_ids ,
molecule_atom_lens = molecule_atom_lens ,
additional_molecule_feats = additional_molecule_feats ,
additional_msa_feats = additional_msa_feats ,
additional_token_feats = additional_token_feats ,
is_molecule_types = is_molecule_types ,
is_molecule_mod = is_molecule_mod ,
msa = msa ,
msa_mask = msa_mask ,
templates = template_feats ,
template_mask = template_mask
)
sampled_atom_pos . shape # (2, , 3)
분자 수준 입력 처리의 예
import torch
from alphafold3_pytorch import Alphafold3 , Alphafold3Input
contrived_protein = 'AG'
mock_atompos = [
torch . randn ( 5 , 3 ), # alanine has 5 non-hydrogen atoms
torch . randn ( 4 , 3 ) # glycine has 4 non-hydrogen atoms
]
train_alphafold3_input = Alphafold3Input (
proteins = [ contrived_protein ],
atom_pos = mock_atompos
)
eval_alphafold3_input = Alphafold3Input (
proteins = [ contrived_protein ]
)
# training
alphafold3 = Alphafold3 (
dim_atom_inputs = 3 ,
dim_atompair_inputs = 5 ,
atoms_per_window = 27 ,
dim_template_feats = 108 ,
num_molecule_mods = 0 ,
confidence_head_kwargs = dict (
pairformer_depth = 1
),
template_embedder_kwargs = dict (
pairformer_stack_depth = 1
),
msa_module_kwargs = dict (
depth = 1
),
pairformer_stack = dict (
depth = 2
),
diffusion_module_kwargs = dict (
atom_encoder_depth = 1 ,
token_transformer_depth = 1 ,
atom_decoder_depth = 1 ,
)
)
loss = alphafold3 . forward_with_alphafold3_inputs ([ train_alphafold3_input ])
loss . backward ()
# sampling
alphafold3 . eval ()
sampled_atom_pos = alphafold3 . forward_with_alphafold3_inputs ( eval_alphafold3_input )
assert sampled_atom_pos . shape == ( 1 , ( 5 + 4 ), 3 )
AlphaFold 3 PDB 데이터세트를 획득하려면 먼저 PDB(단백질 데이터 뱅크)에서 모든 첫 번째 조립(및 비대칭 단위) 복합체를 다운로드한 다음 아래 참조된 스크립트를 사용하여 전처리하십시오. PDB는 RCSB(https://www.wwpdb.org/ftp/pdb-ftp-sites#rcsbpdb)에서 다운로드할 수 있습니다. 아래의 두 Python 스크립트(예: filter_pdb_{train,val,test}_mmcifs.py
및 cluster_pdb_{train,val,test}_mmcifs.py
)에서는 mmCIF 파일 형식 으로 PDB를 다운로드하여 첫 번째 어셈블리와 data/pdb_data/unfiltered_assembly_mmcifs/
에 있는 비대칭 단위 mmCIF 파일 및 data/pdb_data/unfiltered_asym_mmcifs/
각각.
재현성을 위해 AWS 스냅샷(예: 20240101
)을 사용하여 PDB를 다운로드하는 것이 좋습니다. 그렇게 하려면 AWS 설명서를 참조하여 AWS CLI를 로컬로 설정하십시오. 또는 RCSB 웹사이트에서 "프로토콜 다운로드"로 이동하여 위치에 따른 다운로드 지침을 따르세요.
예를 들어 다음 명령을 사용하여 PDB를 두 개의 mmCIF 파일 컬렉션으로 다운로드할 수 있습니다.
# For `assembly1` complexes, use the PDB's `20240101` AWS snapshot:
aws s3 sync s3://pdbsnapshots/20240101/pub/pdb/data/assemblies/mmCIF/divided/ ./data/pdb_data/unfiltered_assembly_mmcifs
# Or as a fallback, use rsync:
rsync -rlpt -v -z --delete --port=33444
rsync.rcsb.org::ftp_data/assemblies/mmCIF/divided/ ./data/pdb_data/unfiltered_assembly_mmcifs/
# For asymmetric unit complexes, also use the PDB's `20240101` AWS snapshot:
aws s3 sync s3://pdbsnapshots/20240101/pub/pdb/data/structures/divided/mmCIF/ ./data/pdb_data/unfiltered_asym_mmcifs
# Or as a fallback, use rsync:
rsync -rlpt -v -z --delete --port=33444
rsync.rcsb.org::ftp_data/structures/divided/mmCIF/ ./data/pdb_data/unfiltered_asym_mmcifs/
경고: PDB를 다운로드하는 데는 최대 700GB의 공간이 필요할 수 있습니다.
참고: PDB는 사용 가능한 모든 AWS 스냅샷을 여기(https://pdbsnapshots.s3.us-west-2.amazonaws.com/index.html)에서 호스팅합니다.
다운로드 후에는 https://files.rcsb.org/pub/pdb/data/assemblies/mmCIF/divided/ & https://files.rcsb.org/pub/pdb/data와 같은 형식의 두 개의 디렉터리가 있어야 합니다. /구조/분할/mmCIF/
00/
01/
02/
..
zz/
이러한 디렉터리의 경우 모든 파일의 압축을 풉니다.
find ./data/pdb_data/unfiltered_assembly_mmcifs/ -type f -name " *.gz " -exec gzip -d {} ;
find ./data/pdb_data/unfiltered_asym_mmcifs/ -type f -name " *.gz " -exec gzip -d {} ;
다음으로 명령을 실행하세요.
wget -P ./data/ccd_data/ https://files.wwpdb.org/pub/pdb/data/monomers/components.cif.gz
wget -P ./data/ccd_data/ https://files.wwpdb.org/pub/pdb/data/component-models/complete/chem_comp_model.cif.gz
프로젝트의 루트 디렉터리에서 PDB의 CCD(Chemical Component Dictionary) 및 해당 구조 모델의 최신 버전을 다운로드합니다. 다음 명령을 사용하여 각 파일을 추출합니다.
find data/ccd_data/ -type f -name " *.gz " -exec gzip -d {} ;
그런 다음 pdb_assembly_dir
, pdb_asym_dir
, ccd_dir
및 mmcif_output_dir
첫 번째 어셈블리 PDB, 비대칭 단위 PDB, CCD 및 원하는 데이터 세트 출력 디렉터리(예: ./data/pdb_data/unfiltered_assembly_mmcifs/
의 로컬 복사본 위치로 대체하여 다음을 실행합니다. ./data/pdb_data/unfiltered_assembly_mmcifs/
, ./data/pdb_data/unfiltered_asym_mmcifs/
, ./data/ccd_data/
및 ./data/pdb_data/{train,val,test}_mmcifs/
).
python scripts/filter_pdb_train_mmcifs.py --mmcif_assembly_dir < pdb_assembly_dir > --mmcif_asym_dir < pdb_asym_dir > --ccd_dir < ccd_dir > --output_dir < mmcif_output_dir >
python scripts/filter_pdb_val_mmcifs.py --mmcif_assembly_dir < pdb_assembly_dir > --mmcif_asym_dir < pdb_asym_dir > --output_dir < mmcif_output_dir >
python scripts/filter_pdb_test_mmcifs.py --mmcif_assembly_dir < pdb_assembly_dir > --mmcif_asym_dir < pdb_asym_dir > --output_dir < mmcif_output_dir >
더 많은 옵션을 보려면 스크립트를 참조하세요. 모든 처리 단계를 성공적으로 통과한 각 첫 번째 어셈블리 mmCIF는 mmCIF의 두 번째 및 세 번째 PDB ID 문자(예: 5c
)에 따라 명명된 하위 디렉터리 내의 mmcif_output_dir
에 기록됩니다.
그런 다음 mmcif_dir
및 {train,val,test}_clustering_output_dir
각각 위의 데이터 세트 필터링 스크립트를 사용하여 생성된 로컬 출력 디렉터리와 원하는 클러스터링 출력 디렉터리(예: ./data/pdb_data/{train,val,test}_mmcifs/
로 대체하여 다음을 실행합니다. ./data/pdb_data/{train,val,test}_mmcifs/
및 ./data/pdb_data/data_caches/{train,val,test}_clusterings/
):
python scripts/cluster_pdb_train_mmcifs.py --mmcif_dir < mmcif_dir > --output_dir < train_clustering_output_dir > --clustering_filtered_pdb_dataset
python scripts/cluster_pdb_val_mmcifs.py --mmcif_dir < mmcif_dir > --reference_clustering_dir < train_clustering_output_dir > --output_dir < val_clustering_output_dir > --clustering_filtered_pdb_dataset
python scripts/cluster_pdb_test_mmcifs.py --mmcif_dir < mmcif_dir > --reference_1_clustering_dir < train_clustering_output_dir > --reference_2_clustering_dir < val_clustering_output_dir > --output_dir < test_clustering_output_dir > --clustering_filtered_pdb_dataset
참고 : --clustering_filtered_pdb_dataset
플래그는 위의 스크립트를 사용하여 선별된 대로 필터링된 PDB 데이터세트를 클러스터링할 때 권장됩니다. 이 플래그는 이 컨텍스트에서 더 빠른 런타임을 가능하게 하기 때문입니다(필터링은 각 체인의 잔여 ID를 1 기반으로 유지하므로). 그러나 mmCIF 파일의 다른(예: PDB가 아닌) 데이터 세트를 클러스터링할 때는 이 플래그를 제공하면 안 됩니다. 그렇지 않으면 이러한 데이터 세트의 mmCIF 파일이 각 체인에 대해 엄격한 1 기반 잔여 인덱싱을 사용하지 않을 수 있으므로 인터페이스 클러스터링이 잘못 수행될 수 있습니다.
참고 : 대신 PDB의 20240101에 대해 전처리된(즉, 필터링된) mmCIF( train
/ val
/ test
) 파일(~25GB, 148k 콤플렉스로 구성) 및 체인/인터페이스 클러스터링( train
/ val
/ test
) 파일(~3GB)을 다운로드할 수 있습니다 20240101
공유 OneDrive 폴더를 통한 AWS 스냅샷. 이러한 tar.gz
아카이브 각각은 data/pdb_data/
디렉토리 내에서 tar -xzf data_caches.tar.gz -C data/pdb_data/
통해 압축을 풀어야 합니다. scripts/distillation_data_download.sh
스크립트를 참조로 사용하여 PDB 증류 데이터를 다운로드하고 준비할 수도 있습니다. 다운로드한 후에는 scripts/reduce_uniprot_predictions_to_pdb.py
실행하여 이 데이터세트를 하나 이상의 PDB 항목과 관련된 예시로만 필터링할 수 있습니다. 또한 편의를 위해 PDB 증류 데이터 교육을 위해 UniProt 액세스 ID를 PDB ID로 매핑하여 이미 다운로드하여 data/afdb_data/data_caches/uniprot_to_pdb_id_mapping.dat
로 추출했습니다.
프로젝트 루트에서 다음을 실행합니다.
$ sh ./contribute.sh
그런 다음 alphafold3_pytorch/alphafold3.py
에 모듈을 추가하고, tests/test_af3.py
에 테스트를 추가한 후 끌어오기 요청을 제출하세요. 다음을 사용하여 로컬에서 테스트를 실행할 수 있습니다.
$ pytest tests/
포함된 Dockerfile
에는 GPU와 함께 PyTorch를 사용하여 패키지를 실행하고 훈련/추론하는 데 필요한 종속성이 포함되어 있습니다.
기본 기본 이미지는 pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime
이며 main
GitHub 분기에서 이 패키지의 최신 버전을 설치합니다.
# # Build Docker Container
docker build -t af3 .
또는 빌드 인수를 사용하여 다른 소프트웨어 버전으로 이미지를 다시 빌드합니다.
PYTORCH_TAG
: 기본 이미지를 변경하여 다양한 PyTorch, CUDA 및/또는 cuDNN 버전으로 빌드합니다.GIT_TAG
: 패키지를 복제하고 설치하도록 이 저장소의 태그를 변경합니다.예를 들어:
# # Use build argument to change versions
docker build --build-arg " PYTORCH_TAG=2.2.1-cuda12.1-cudnn8-devel " --build-arg " GIT_TAG=0.1.15 " -t af3 .
그런 다음, 다음 명령을 사용하여 GPU로 컨테이너를 실행하고 (학습용) 로컬 볼륨을 마운트합니다.
# # Run Container
docker run -v .:/data --gpus all -it af3
@article { Abramson2024-fj ,
title = " Accurate structure prediction of biomolecular interactions with
{AlphaFold} 3 " ,
author = " Abramson, Josh and Adler, Jonas and Dunger, Jack and Evans,
Richard and Green, Tim and Pritzel, Alexander and Ronneberger,
Olaf and Willmore, Lindsay and Ballard, Andrew J and Bambrick,
Joshua and Bodenstein, Sebastian W and Evans, David A and Hung,
Chia-Chun and O'Neill, Michael and Reiman, David and
Tunyasuvunakool, Kathryn and Wu, Zachary and {v Z}emgulyt{.e},
Akvil{.e} and Arvaniti, Eirini and Beattie, Charles and
Bertolli, Ottavia and Bridgland, Alex and Cherepanov, Alexey and
Congreve, Miles and Cowen-Rivers, Alexander I and Cowie, Andrew
and Figurnov, Michael and Fuchs, Fabian B and Gladman, Hannah and
Jain, Rishub and Khan, Yousuf A and Low, Caroline M R and Perlin,
Kuba and Potapenko, Anna and Savy, Pascal and Singh, Sukhdeep and
Stecula, Adrian and Thillaisundaram, Ashok and Tong, Catherine
and Yakneen, Sergei and Zhong, Ellen D and Zielinski, Michal and
{v Z}{'i}dek, Augustin and Bapst, Victor and Kohli, Pushmeet
and Jaderberg, Max and Hassabis, Demis and Jumper, John M " ,
journal = " Nature " ,
month = " May " ,
year = 2024
}
@inproceedings { Darcet2023VisionTN ,
title = { Vision Transformers Need Registers } ,
author = { Timoth'ee Darcet and Maxime Oquab and Julien Mairal and Piotr Bojanowski } ,
year = { 2023 } ,
url = { https://api.semanticscholar.org/CorpusID:263134283 }
}
@article { Arora2024SimpleLA ,
title = { Simple linear attention language models balance the recall-throughput tradeoff } ,
author = { Simran Arora and Sabri Eyuboglu and Michael Zhang and Aman Timalsina and Silas Alberti and Dylan Zinsley and James Zou and Atri Rudra and Christopher R'e } ,
journal = { ArXiv } ,
year = { 2024 } ,
volume = { abs/2402.18668 } ,
url = { https://api.semanticscholar.org/CorpusID:268063190 }
}
@article { Puny2021FrameAF ,
title = { Frame Averaging for Invariant and Equivariant Network Design } ,
author = { Omri Puny and Matan Atzmon and Heli Ben-Hamu and Edward James Smith and Ishan Misra and Aditya Grover and Yaron Lipman } ,
journal = { ArXiv } ,
year = { 2021 } ,
volume = { abs/2110.03336 } ,
url = { https://api.semanticscholar.org/CorpusID:238419638 }
}
@article { Duval2023FAENetFA ,
title = { FAENet: Frame Averaging Equivariant GNN for Materials Modeling } ,
author = { Alexandre Duval and Victor Schmidt and Alex Hernandez Garcia and Santiago Miret and Fragkiskos D. Malliaros and Yoshua Bengio and David Rolnick } ,
journal = { ArXiv } ,
year = { 2023 } ,
volume = { abs/2305.05577 } ,
url = { https://api.semanticscholar.org/CorpusID:258564608 }
}
@article { Wang2022DeepNetST ,
title = { DeepNet: Scaling Transformers to 1, 000 Layers } ,
author = { Hongyu Wang and Shuming Ma and Li Dong and Shaohan Huang and Dongdong Zhang and Furu Wei } ,
journal = { ArXiv } ,
year = { 2022 } ,
volume = { abs/2203.00555 } ,
url = { https://api.semanticscholar.org/CorpusID:247187905 }
}
@inproceedings { Ainslie2023CoLT5FL ,
title = { CoLT5: Faster Long-Range Transformers with Conditional Computation } ,
author = { Joshua Ainslie and Tao Lei and Michiel de Jong and Santiago Ontan'on and Siddhartha Brahma and Yury Zemlyanskiy and David Uthus and Mandy Guo and James Lee-Thorp and Yi Tay and Yun-Hsuan Sung and Sumit Sanghai } ,
year = { 2023 }
}
@article { Ash2019OnTD ,
title = { On the Difficulty of Warm-Starting Neural Network Training } ,
author = { Jordan T. Ash and Ryan P. Adams } ,
journal = { ArXiv } ,
year = { 2019 } ,
volume = { abs/1910.08475 } ,
url = { https://api.semanticscholar.org/CorpusID:204788802 }
}
@ARTICLE { Heinzinger2023.07.23.550085 ,
author = { Michael Heinzinger and Konstantin Weissenow and Joaquin Gomez Sanchez and Adrian Henkel and Martin Steinegger and Burkhard Rost } ,
title = { ProstT5: Bilingual Language Model for Protein Sequence and Structure } ,
year = { 2023 } ,
doi = { 10.1101/2023.07.23.550085 } ,
journal = { bioRxiv }
}
@article { Lin2022.07.20.500902 ,
author = { Lin, Zeming and Akin, Halil and Rao, Roshan and Hie, Brian and Zhu, Zhongkai and Lu, Wenting and Santos Costa, Allan dos and Fazel-Zarandi, Maryam and Sercu, Tom and Candido, Sal and Rives, Alexander } ,
title = { Language models of protein sequences at the scale of evolution enable accurate structure prediction } ,
elocation-id = { 2022.07.20.500902 } ,
year = { 2022 } ,
doi = { 10.1101/2022.07.20.500902 } ,
publisher = { Cold Spring Harbor Laboratory } ,
URL = { https://www.biorxiv.org/content/early/2022/07/21/2022.07.20.500902 } ,
eprint = { https://www.biorxiv.org/content/early/2022/07/21/2022.07.20.500902.full.pdf } ,
journal = { bioRxiv }
}
@article { Li2024SwitchEA ,
title = { Switch EMA: A Free Lunch for Better Flatness and Sharpness } ,
author = { Siyuan Li and Zicheng Liu and Juanxi Tian and Ge Wang and Zedong Wang and Weiyang Jin and Di Wu and Cheng Tan and Tao Lin and Yang Liu and Baigui Sun and Stan Z. Li } ,
journal = { ArXiv } ,
year = { 2024 } ,
volume = { abs/2402.09240 } ,
url = { https://api.semanticscholar.org/CorpusID:267657558 }
}
@article { Nguyen2023MitigatingOI ,
title = { Mitigating Over-smoothing in Transformers via Regularized Nonlocal Functionals } ,
author = { Tam Nguyen and Tan M. Nguyen and Richard G. Baraniuk } ,
journal = { ArXiv } ,
year = { 2023 } ,
volume = { abs/2312.00751 } ,
url = { https://api.semanticscholar.org/CorpusID:264300597 }
}
@inproceedings { Zhou2024ValueRL ,
title = { Value Residual Learning For Alleviating Attention Concentration In Transformers } ,
author = { Zhanchao Zhou and Tianyi Wu and Zhiyun Jiang and Zhenzhong Lan } ,
year = { 2024 } ,
url = { https://api.semanticscholar.org/CorpusID:273532030 }
}