2016-06-19 7 views
2

나는 연습으로 tensorflow와 LDA를 구현하고 싶었와 LDA (잠재 디리클레 할당)를 구현하고, 나는 tensorflow 버전은 아래의 장점이있을 수 있습니다 생각 : 빠른장점 tensorflow

  • 합니다. 내장 된 연산을 사용하여 샘플링 프로세스를 표현할 수 있다면.
  • 쉽게 병렬화 할 수 있습니다. 많은 운영체제가 병렬화를위한 최적화로 구현 되었기 때문에이 lda는 gpus 나 분산 된 클러스터에서 쉽게 실행될 수 있어야합니다.
  • 더 짧고 깨끗한 코드. 다른 많은 모델, 특히 NN과 마찬가지로 tensorflow가있는 모델을 작성하면 코드가 적습니다.

I (예를 들어, https://github.com/ariddell/lda/) LDA의 일부 파이썬 구현을 검사 한 후, 나는 tensorflow의 작전을 사용할 수있는 아무 생각이 없지만는 그래프의 종류를 내장해야하고 무엇을 최적화 내가 선택해야합니다. 깁스 샘플링 과정은 doc-topics, 주제어 행렬 및 주제 계산 테이블의 요소 별 업데이트와 비슷합니다. 그렇다면이 과정을 단순화하고 최적화하기 위해 tensorflow는 무엇을 할 수 있습니까?

그리고 생성 된 문서의 가능성을 최적화 대상으로 실제 입력 문서에 적용하고 그래디언트 부스트 옵티 마이저를 사용하여 우도를 최소화함으로써 알파, 베타 및 doc- 토픽 배포판을 얻을 수 있습니까? 왜냐하면 이것이 다루기 쉬운 것이면, 여기서 텐서 흐름을 확실히 사용할 수 있기 때문입니다.

답변

2

probabilistic programmingdeep probabilistic programming 시스템의 이점에 대한 더 광범위한 질문에 대해 많은 관련 답변이 있습니다.

TensorFlow의 LDA (Latent Dirichlet Allocation)에 대해 하나의 지적 응답을 줄 수 있습니다. 중요한 이점은 LDA가 단지 하나의 모델이라는 것을 인식하는 것입니다. TensorFlow는이 모델과 문서 별 매트릭스 (예 : tf.SparseTensor)로 표현 된 데이터 세트를 감안할 때 확장 가능한 추론을 수행 할뿐만 아니라 매우 유연한 추론을 수행 할 수 있습니다. TF에서 사용할 특정 작업은 특정 알고리즘에 따라 다릅니다. Gibbs 샘플러를 작성하거나 상승 추세 변량 추론 알고리즘을 조정할 수 있습니다. LDA (트레이닝 가능한 변수의 수동 tf.assign 연산과 함께 사용 가능)에 대해 모두 매우 효율적입니다. CAVI는 계산 상 메모리 효율이 우수하고 scaling to millions of documents이며 tf.data과 같은 효율적인 데이터 파이프 라인으로 검증 할 수 있습니다.

TensorFlow를 사용하면 검정 상자 변형 추론과 같은 일반적인 방법을 사용할 수도 있습니다.이 방법은 매우 다양하며 수동으로 tf.assign 연산을 수행 할 필요가 없습니다. 문제가 해결되도록 작성한 후에는 비 공제 사전, 계층 적 사전 및 심층 네트워크 매개 변수화 (tf.layers 가능)와 같은 여러 가지 방법으로 LDA를 확장 할 수 있습니다. 일반적인 방법에는 TensorFlow 최적화 프로그램과 TensorFlow의 자동 차등화와 같은 도구가 있어야 그라데이션 기반 최적화가 가능합니다. autograd과 같은 추적 도구를 익스포트하지 않으면 파이썬에서 사용할 수 없습니다.

-1

저는이 두 모델을 실행 했으므로 연습에서 아이디어가 있다고 생각합니다. LDA의 출력은 주제 분포와 단어 분포이며, 입력은 문서의 단어입니다. Word2Vec의 출력은 문장의 벡터 표현입니다. 응용 프로그램 장면에서 문장의 비슷한 의미 대신 유사한 주제를 추천하는 것이 목표입니다. 예를 들어, "나는 아주 귀여운 고양이를 찾는다.", "삼촌의 고양이는 뚱뚱하고 음식을 먹는다. 나는 만족한다." 이 두 문장은 다른 의미를 지니지 만,이 문장은 동일한 주제 인 고양이를 포함합니다. 도움이 되길 바랍니다.

+0

LDA의 출력은 주제에 대한 단어 분포이며 Word2Vec의 출력은 구문의 벡터 표현입니다 (문장이 아님) –