### 음성 인공지능 스타트업의 기회 분석

- Get link
- Other Apps

- Get link
- Other Apps

- Get link
- Other Apps

- Get link
- Other Apps

- Get link
- Other Apps

The summary paper of the Google Pregel was distributed -- Pregel: a system for large-scale graph processing.

It's same with Hamburg design as figured below:

According to our reasoning, user defined Compute() function which can be called during graph traversal will be shaped as described below:

So that's similar to the MapReduce model in that programmers focus on a local action, processing a single item at a time, which the system then lifts to computation on a large dataset.

Do you think everything was too easy this far? But, I can't say about below mechanisms and locality problems yet.

And the conclusion is..

Belman-Ford algorithm computes single-source shortest paths in a weighted digraph. In the sub-graph, the passed path will be updated while compute() function is run to traversal. Then, the boundary of sub-graphs could synchronized by supersteps. This programming model can be more intuitional than M/R version BFS.

Anyway, though Hamburg isn't as good as pregel, It will be a great framework for many of graph techniques.

**Note**: Hamburg project integrated into Apache Hama.

The high-level organization of Pregel programs is inspired by Valiant's Bulk Synchronous Parallel model. Pregel computations consist of a sequence of iterations, called super-steps.

It's same with Hamburg design as figured below:

During a superstep the framework invokes a user-defined Compute() function for each vertex, conceptually in parallel. The function specifies behavior at a single vertex v and a single superstep S. It can read messages sent to v in superstep S - 1, send messages to other vertices that will be received at superstep S + 1, and modify the state of v and its outgoing edges. Messages are typically sent along outgoing edges, but a message may be sent to any vertex whose identifier is known. A program terminates when all vertices declare that they are done.

According to our reasoning, user defined Compute() function which can be called during graph traversal will be shaped as described below:

User Interface: public void traverse(Map<Vertex, Message> value, Map<Integer, Message> nextQueue) { for (Integer i : v.getAdjList()) { // Handle the vertex and send a message with modified state of vertex i to next level } } And, ... need something to local processing and send message to the next step.

So that's similar to the MapReduce model in that programmers focus on a local action, processing a single item at a time, which the system then lifts to computation on a large dataset.

Do you think everything was too easy this far? But, I can't say about below mechanisms and locality problems yet.

The basic computing model of Pregel is enhanced by several mechanisms to improve performance and usability. They include combiners, an optimization to reduce network traffic, and aggregators, a simple mechanism for monitoring and global communication.

And the conclusion is..

We conducted an experiment solving single-source shortest paths using a simple Belman-Ford algorithm expressed in Pregel. As input data, we chose a randomly generated graph with a log-normal distribution of outdegrees; the graph had 1B vertices and approximately 80B edges. Weights of all edges were set to 1 for simplicity. We used a cluster of 480 commodity multi-core PCs and 2000 workers. The graph was partitioned 8000 ways using the default partitioning function based on a random hash, to get a sense of the default performance of the Pregel system. Each worker was assigned 4 graph partitions and allowed up to 2 computational threads to execute the Compute() function over the partitions (not counting system threads that handle messaging, etc.). Running shortest paths took under 200 seconds, using 8 supersteps.

Belman-Ford algorithm computes single-source shortest paths in a weighted digraph. In the sub-graph, the passed path will be updated while compute() function is run to traversal. Then, the boundary of sub-graphs could synchronized by supersteps. This programming model can be more intuitional than M/R version BFS.

Anyway, though Hamburg isn't as good as pregel, It will be a great framework for many of graph techniques.

음성 인공지능 분야에서 스타트업이 생각해볼 수 있는 전략은 아마 다음과 같이 3가지 정도가 있을 것이다:

독자적 Vertical 음성 인공지능 Application 구축기 음성 플랫폼을 활용한 B2B2C 형태의 비지니스 구축기 음성 플랫폼 생태계 내에 3rd party 서비스 구축

(1) 의 접근은 도메인 특화된 Standalone 음성 인공지능 Application을 만드는 방법이다. (2) 의 접근은 기 음성 플랫폼 비지니스 사업자에 특수 분야 기술을 제공해서 최종적으로 소비자에게 전달되는 B2B2C 형태의 사업 추진이다. 마지막으로 (3) 은 기 음성 플랫폼 내 3rd party 서비스를 개발하여 소비자에게 제공하는 방법이다. 지금부터 하나씩 사례와 함께 자세히 살펴보자.

1) 독자적**Vertical** 음성 인공지능 **Application** 구축

너무 당연한 얘기지만 스타트업이 구글이나 아마존의 범용 음성인식과 차별없는 음성 인식을 통해 경쟁하려 든다면 그것은 별로 좋은 아이디어는 아니다. 구글이나 바이두와 같은 막강한 기업 만큼의 예산과 기술을 갖추고 있지 않기 때문에 무조건 백전 백패다.

그러나, 특정 산업에 특화된 문제를 발굴하고 AI를 결합해 그 문제를 해결하는 접근으로 속도를 내고 있는 Vertical AI 스타트업이 있다. 대표적으로 Chorus.ai와 한국의 리뷰와이저(?), 액션파워 정도가 될 것 같다.

코러스의 창업자는 도메인 특화된 버티컬 엔진이 (경험적으로 퉁쳐서) 일반 범용 엔진보다 최소 15% 향상된 성능을 낼 수 있다고 한다. 국내 Vertical voice AI 회사도 만나본 적은 있지만 개인적으로 나눈 대화다 보니 특별히 언급은 생략한다.

뭐 여하튼 (정량적 평가 수치는 확인할 수 없었으나) 기술적으로 따져보았을 때 명백히 narrow domain으로 접근하면 자연어 처리에 있어 그 복잡도를 낮추고 결론적으로 높은 성능을 낼 수는 있을 것이다.

이 때문에 도메인 특화된 음성 인식 엔진은 당장 빠르게 우위를 점할 수 있다는 점은 분명하…

독자적 Vertical 음성 인공지능 Application 구축기 음성 플랫폼을 활용한 B2B2C 형태의 비지니스 구축기 음성 플랫폼 생태계 내에 3rd party 서비스 구축

(1) 의 접근은 도메인 특화된 Standalone 음성 인공지능 Application을 만드는 방법이다. (2) 의 접근은 기 음성 플랫폼 비지니스 사업자에 특수 분야 기술을 제공해서 최종적으로 소비자에게 전달되는 B2B2C 형태의 사업 추진이다. 마지막으로 (3) 은 기 음성 플랫폼 내 3rd party 서비스를 개발하여 소비자에게 제공하는 방법이다. 지금부터 하나씩 사례와 함께 자세히 살펴보자.

1) 독자적

너무 당연한 얘기지만 스타트업이 구글이나 아마존의 범용 음성인식과 차별없는 음성 인식을 통해 경쟁하려 든다면 그것은 별로 좋은 아이디어는 아니다. 구글이나 바이두와 같은 막강한 기업 만큼의 예산과 기술을 갖추고 있지 않기 때문에 무조건 백전 백패다.

그러나, 특정 산업에 특화된 문제를 발굴하고 AI를 결합해 그 문제를 해결하는 접근으로 속도를 내고 있는 Vertical AI 스타트업이 있다. 대표적으로 Chorus.ai와 한국의 리뷰와이저(?), 액션파워 정도가 될 것 같다.

코러스의 창업자는 도메인 특화된 버티컬 엔진이 (경험적으로 퉁쳐서) 일반 범용 엔진보다 최소 15% 향상된 성능을 낼 수 있다고 한다. 국내 Vertical voice AI 회사도 만나본 적은 있지만 개인적으로 나눈 대화다 보니 특별히 언급은 생략한다.

뭐 여하튼 (정량적 평가 수치는 확인할 수 없었으나) 기술적으로 따져보았을 때 명백히 narrow domain으로 접근하면 자연어 처리에 있어 그 복잡도를 낮추고 결론적으로 높은 성능을 낼 수는 있을 것이다.

이 때문에 도메인 특화된 음성 인식 엔진은 당장 빠르게 우위를 점할 수 있다는 점은 분명하…

1.군계 (액션,격투)

격투만화 중에서는 아주 유명하고 열광적으로 좋아하는 사람이 많은 만화입니다. 전체적으로 만화의 분위기는 어둡고요... 줄거리를 소개하죠. 주인공인 료는 모범생이었습니다. 그러나 부모님의 강압적인 통제... 그에 대한 무의식적 반발로 부모님을 살해하게 되고 맙니다. 그리고 교도소에서 많은 변화를 겪게되죠..그리고 악의 화신같은 존재가 되고 말죠..... 또 그에 대항하는 인물이 나타나고.... 만화에 대한 소개가 만화의 질을 못 따라가네요. 이 만화는 선과 악에 대해 생각해볼 수있는 만화입니다. 그리고 싸움이란 인간에게 어떤 의미가 있는것일까? 하는 생각도요. 아..군계는 싸움닭이란 뜻입니다. 네이밍센스가 좋죠.

2. 생추어리(해적판제목:빛과 그림자) (액션,정치)

일본 최고의 극화체 만화가인 이케가미 료이치님의 작품입니다. 캄보디아에서 일본 외교관의 아들로 태어난 두 남자 이야기를 그리고 있습니다. 캄보디아의 킬링필드(대학살..실존사건입니다.)와중에서 살아남아 돌아온 두 주인공..한명은 암흑계 보스로 다른 한 명은 정치계 거물로 성장해갑니다. 두 남자의 목숨과도 같은 우정....그들의 관계는 어떻게 될까? 뛰어난 스토리작가와 항상 작업하여 재미는 보장이 되는 작품입니다. 단 남성우월주의가 작품전반에 깔려있어서 여성이 보기엔 거부감을 느낄수도 있는 작품..남자분인거 같아 추천합니다.

3.수라의 각 (역사,무협)

해황기의 작가가 쓴 매우 흥미진진한 역사 무협물입니다. 일본 역사속의 많은 실존인물들의 얘기를 기둥줄거리로 하여 거기에 허구를 작가의 능수능란한 솜씨로 섞어냅니다. 이 작품은 코믹 만화인 수험의 제왕에도 등장하는 데요....그 만화에 이런 말이 있지요. "역사 공부를 하려거든 수라의 각을 읽어라" 이 만화작가의 다른 작품인 해황기도 매우 흥미진진하답니다.

4.베르세르크 (판타지)

말이 필요없는 판타지의 최고 걸작.... 뛰어난 작화에 철학적인 사유까지 배어든 최고의 작품. 안 읽으셨다면 부디 읽어보시길..

5.…

격투만화 중에서는 아주 유명하고 열광적으로 좋아하는 사람이 많은 만화입니다. 전체적으로 만화의 분위기는 어둡고요... 줄거리를 소개하죠. 주인공인 료는 모범생이었습니다. 그러나 부모님의 강압적인 통제... 그에 대한 무의식적 반발로 부모님을 살해하게 되고 맙니다. 그리고 교도소에서 많은 변화를 겪게되죠..그리고 악의 화신같은 존재가 되고 말죠..... 또 그에 대항하는 인물이 나타나고.... 만화에 대한 소개가 만화의 질을 못 따라가네요. 이 만화는 선과 악에 대해 생각해볼 수있는 만화입니다. 그리고 싸움이란 인간에게 어떤 의미가 있는것일까? 하는 생각도요. 아..군계는 싸움닭이란 뜻입니다. 네이밍센스가 좋죠.

2. 생추어리(해적판제목:빛과 그림자) (액션,정치)

일본 최고의 극화체 만화가인 이케가미 료이치님의 작품입니다. 캄보디아에서 일본 외교관의 아들로 태어난 두 남자 이야기를 그리고 있습니다. 캄보디아의 킬링필드(대학살..실존사건입니다.)와중에서 살아남아 돌아온 두 주인공..한명은 암흑계 보스로 다른 한 명은 정치계 거물로 성장해갑니다. 두 남자의 목숨과도 같은 우정....그들의 관계는 어떻게 될까? 뛰어난 스토리작가와 항상 작업하여 재미는 보장이 되는 작품입니다. 단 남성우월주의가 작품전반에 깔려있어서 여성이 보기엔 거부감을 느낄수도 있는 작품..남자분인거 같아 추천합니다.

3.수라의 각 (역사,무협)

해황기의 작가가 쓴 매우 흥미진진한 역사 무협물입니다. 일본 역사속의 많은 실존인물들의 얘기를 기둥줄거리로 하여 거기에 허구를 작가의 능수능란한 솜씨로 섞어냅니다. 이 작품은 코믹 만화인 수험의 제왕에도 등장하는 데요....그 만화에 이런 말이 있지요. "역사 공부를 하려거든 수라의 각을 읽어라" 이 만화작가의 다른 작품인 해황기도 매우 흥미진진하답니다.

4.베르세르크 (판타지)

말이 필요없는 판타지의 최고 걸작.... 뛰어난 작화에 철학적인 사유까지 배어든 최고의 작품. 안 읽으셨다면 부디 읽어보시길..

5.…

In addressing the growing problem of junk email on the Internet, I examined methods for the automated construction of filters to eliminate such unwanted messages from a user's mail stream. One was "Bayesian Spam Filtering".

Bayesian email filters take advantage of Bayes' theorem. Bayes' theorem, in the context of spam, says that the probability that an email is spam, given that it has certain words in it, is equal to the probability of finding those certain words in spam email, times the probability that any email is spam, divided by the probability of finding those words in any email: Pr(spam|words)=Pr(words|spam)Pr(spam)/Pr(words)

In this post, I'm introduce about the implementation of a Parallel Bayesian Spam Filtering Algorithm on the distributed system (Hadoop).

1. We can get the spam probability P(wordcategory) of the words from an files of category (bad/good e-mails) as describe below:

**Update**: --emit <category,probability> pairs and have the redu…

Bayesian email filters take advantage of Bayes' theorem. Bayes' theorem, in the context of spam, says that the probability that an email is spam, given that it has certain words in it, is equal to the probability of finding those certain words in spam email, times the probability that any email is spam, divided by the probability of finding those words in any email: Pr(spam|words)=Pr(words|spam)Pr(spam)/Pr(words)

In this post, I'm introduce about the implementation of a Parallel Bayesian Spam Filtering Algorithm on the distributed system (Hadoop).

1. We can get the spam probability P(wordcategory) of the words from an files of category (bad/good e-mails) as describe below:

I couldn't find any more specific information on Pregel, but it indeed seems like a rather trivial specialization of MapReduce, where the key for vertex data and for messages is the vertex ID.

ReplyDeleteIt is disappointing that the whitepaper does not describe the API (and potentially optimizations), since that is the most interesting part for a framework geared towards usability.

I wonder if the API has one or two steps:

-one step: Vertex Process(Vertex oldVertex, Inbox, Outbox), which reads from the Inbox and oldVertex, returns the new Vertex and writes messages in the Outbox

-two steps: Vertex ProcessIncoming(Vertex, Message[] Inbox) and Message[] SendMessages(Vertex)

Vertex would contain the list of neighboring vertices and other state information, as well as a flag for "done" (ie. no new "superstep" iteration needed).

The advantage of two steps is that ProcessIncoming can be used for optimizing the re-partitioning on vertex ID, as it can be used recursively, thereby reducing network traffic. The whitepaper only mentions a single user-defined function (Compute) but also mentions "handler" functions...

Vertices could be created and deleted by sending messages. These standard messages could be processed by handlers with default implementations.

Also, using a MapReduce trick, a dummy vertex with ID 0 can be used to collect the count of all vertices and all completed vertices.

Interesting! Thanks, I'll take a look at this.

ReplyDelete