Yes, FHE is not (currently) good at general-purpose computing. Complex conditional logic for example is a non-starter because every branch has to be evaluated. But tensor multiplication is well supported with existing FHE schemes, and many kinds of machine learning tasks consist of non-conditional tensor multiplications.
Is overcoming this limitation of FHE anywhere on the horizon?
I admit understanding this paper is a bit beyond me. But, does their construction evaluate Turing machine conditionals by evaluating both branches? If it did, how could the running time be "dependent on the running time of M on input x as opposed to the worst-case runtime of M"? It seems to me that having to evaluate every branch irrespective of the input would result in the running-time always being M's worst case, not varying runtime depending on the input.
There are some circuit compilers that try to do optimizations like that automatically, like xJsnark, though it's not meant for FHE.
It will also allow organizations to train models collaboratively in a privacy preserving way, which if you think about it has lot of consequences.
Are those multiplicative factors specific to machine learning tasks, or is it the same for general purpose computation?
In other words, is there something about the structure of machine learning tasks which makes them more suited for FHE than other computing tasks?