Review: Tokenize (3)
-
property = 属性
-
frequency5000으로할경우 시간 14:25걸림.
-
pytorch 버전확인하고, torch 대응하는 cuda 버전 몇인지 확인하는방법.
- Ensure that at least PyTorch 1.4.0 is installed:
$ python -c "import torch; print(torch.__version__)"
>>> 1.8.0
- Find the CUDA version PyTorch was installed with:
$ python -c "import torch; print(torch.version.cuda)"
>>> 11.1
-
jupyter에서 file 입출력할때 주의: 셀 실행 후 바로 입출력 변화 안나타날땐
open(), write()
사용하고close()
했는지 확인한다. -
f-string py3.6부터 나옴. 기존의
format()
방식보다 빠르고 알아보기쉬움.
word2vec(1)
skip-gram model architecture 는 정확히 CBOW 모델과 반대의 작업을 수행한다. 타겟 단어가 지정된 소스 컨텍스트 단어를 예측. 일반적으로, input=feature, output=target=label. skip-gram은 반대. 즉, 모델은 타겟단어를 기반으로, 컨텍스트 윈도우 단어를 예측한다.
결론적으로 word2vec이란것은 CBOW, skip-gram포함하는 임베딩. 이 때, 임베딩이란 벡터로 표현하는것. 또한, 벡터란 숫자(수치)
가 아닌것을 수치화 한것.
텍스트에서 추출한 skip-gram학습데이터셋을 가지고, 신경망 언어모델을 훈련한다. 이 언어모델은 이웃단어를 예측하는 모델이다.
- Revisiting the training process
2.Negative Sampling: output vocab에project 하는것은 비용,시간 엄청나게 많이듬.
해결방법중하나는, 타겟을 두개의 스텝으로나눈다.
-
고퀄리티 워드임베딩생성.
(이때 다음단어예측은 상관하지않음)
-
고퀄리티 임베딩을 사용하여 언어모델을 훈련한다.
(다음단어 예측을 한다)
스텝1에 주목. 모델의 태스크를 인접단어예측에서 인풋아웃풋 단어 받은후 이웃인지아닌지(0, 1)
알려주는 스코어(0, 1)
를 출력으로 스위칭한다. 이렇게함으로써 신경망 기반 모델에서 로지스틱 회귀 모델로 변하게된다. 그래서 더빨라짐. 다만 이때 데이터셋의 구조를 바꿔야함.( 타겟 컬럼을 추가. (0,1값중하나) 근데 타겟 컬럼값이 모두 1이라면 가비지 임베딩을 생성하게됨.
-
word2vec
(2)
: 가비지 임베딩을 생성되는 것을 방지하기 위해 아웃풋 단어에 이웃이 아닌 랜덤하게 뽑은 것들을 추가해준다. -
word vector = word embedding. e.g. word embedding for the word “king”:
[ 0.50451 , 0.68607 , .. , -0.59517 ]
-
word vector 더하고빼기: 파이썬 gensim
- ESPF: For example, it identifies contributing factors in the interaction between Sildenafil and Isosorbide Mononitrate. = espf저자들이 말한 경로제공의 의미. 다시말해 비아그라와 iso..라는것을 같이쓰면 죽음 이란것을 두개 간의 기여 요소를 식별함 으로써 알수있다.
moltrans 저자 = espf 저자. espf: 해석가능한 하부구조 파티션 지문. 그것은 인풋을 적절한 사이즈의 조각으로 나누고, 그 파티션된 하부구조의 신호를 예측 결과물로 추적하는 경로를 제공한다.
espf동작원리는 spe랑 완벽하게 일치한다(openNMT-py기반이다)
. smiles등을 입력으로받고 출력을 서브시퀀스 어휘세트 및 빈도수로 한다. 이렇게 “tokenize”한걸가지고 새로운 시퀀스를 분해할수잇음.
espf저자들은 경험적으로 그것이 적절한 크기의 하부구조 (정렬된 파티션)
을 출력한다는것을 알아냈다.
Expert-curated fingerprints such as PubChem (Boltonet al.(2008))
, MACCS (Cereto-Massaguéet al.(2015))
for drugs and amino acid composition (Caoet al.(2013))
for proteinrepresent each sub-structure with a bit of a bit vector. However, the output vector usually assigns numerous granular sub-structures (~100 for PubChem)
to even a small molecule,where many sub-structures are a subset of other ones, making it intractable to know which specific sub-structures lead to the outcome.
어떤 하부구조가 다른 어떤 분자의 하부구조에 해당한다고 하여도 그 하부구조는 높은확률로 다른 분자의 하부구조에 해당하기때문에 어떤 특정한 하부구조가 그 분자의 지문을 결과로서 나타내게 만든건지 알기 어렵다.
-
dataset: bindingdb or chembl? 전자: csv
(smiles외에도다른것)
후자 txt(매 라인마다 smiles) 다른것없음)
-
어차피
pandas.read_csv()
하면 상관없이 리딩 가능하다. -
나는 전체 moltrans 필요없음. fcs만 필요.
-
moltrans example.ipynb에서 한세대당 teration 0-700인데 내가하면 0-3100까지. 이유가 뭔지 알 수 없다. config.py의 batch size바꾼것 때문일 수도 있다.
- cuda out 에러 -
(config에서)
batch size 16 -> 4 참고
- cuda out 에러 -
-
torch.autograd.variable은 PyTorch 0.4.0에서 Tensors와 Variables가 합쳐짐. MolTrans에서 아직 Variables 쓰니까 이걸 Tensor로 바꾸자.
-
예:
Variable(...)
모양에서 Variable과 ()를 제거한다. -
cuda memory error시 참고, release RAM방법임.